
package de.ivu.elect.business.personenregister.control;

import static java.util.Arrays.stream;
import static java.util.stream.Collectors.toList;
import static org.apache.commons.lang3.StringUtils.split;
import static org.apache.commons.lang3.StringUtils.trimToEmpty;

import java.util.List;
import java.util.function.Function;

import org.apache.commons.lang3.StringUtils;

public interface XmeldPersonenregister {

  String LESER_KENNUNGEN_SEPARATOR = ","; // ELECT-14812

  static <T> List<T> collectXmeldLeser(String leserKennungen, Function<String, T> xmeldLeserFct) {
    return stream(split(trimToEmpty(leserKennungen), LESER_KENNUNGEN_SEPARATOR)) //
        .filter(StringUtils::isNotBlank) //
        .map(StringUtils::trimToEmpty) //
        .distinct() //
        .map(xmeldLeserFct) //
        .collect(toList());
  }
}
