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

import java.util.Collection;
import java.util.Map;

import de.ivu.elect.business.person.entity.Personendaten;
import de.ivu.elect.business.personenpruefung.entity.PersonenKonflikt;
import de.ivu.elect.business.personenpruefung.entity.PersonenKonfliktArt;
import de.ivu.elect.business.personenpruefung.entity.PersonenKonfliktStatus;

public interface PersonenPruefSchritt {

  Collection<Class< ? extends Personendaten>> getRelevantPersonendatenClasses();

  boolean isInstantPersonenPruefSchritt();

  PersonenKonfliktArt getPersonenKonfliktArt();

  PersonenKonfliktStatus getPersonenKonfliktStatus();

  /**
   * Fachliche Bedingung, ob die Personendaten bei der jeweiligen Prüfung "durchfallen" sollen, d.h. ob nach der Prüfung
   * ein Konflikt für diese vorhanden sein soll.
   */
  boolean isPotentiellNichtGeeignet(Personendaten personendaten);

  Map<Personendaten, PersonenKonflikt> pruefe(Collection<Personendaten> personen);
}
