
package de.ivu.elect.dokumente.kandidatur.statistik;

import java.util.Collection;
import java.util.function.Predicate;

/**
 *  on 21.11.2016.
 */
public interface BerufsgruppeFilter extends Predicate<Kandidat> {

  public static BerufsgruppeFilter TRUE = k -> true;

  public static BerufsgruppeFilter forPrefix(String prefix) {
    return k -> k.getBerufsschluessel() != null && k.getBerufsschluessel().startsWith(prefix);
  }

  public static BerufsgruppeFilter any(Collection<BerufsgruppeFilter> berufsgruppeFilterCollection) {
    return k -> berufsgruppeFilterCollection.stream().anyMatch(filter -> filter.test(k));
  }

  public default BerufsgruppeFilter or(BerufsgruppeFilter other) {
    return k -> this.test(k) || other.test(k);
  }
}
