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

import java.io.Serializable;
import java.util.Collection;

import de.ivu.elect.business.person.entity.Personendaten;
import de.ivu.elect.jee.faces.Messages;

/*
 * TODO Beispiele für bisher komplexeste Regeln/Kriterien (, die mal konfigurierbar sein sollen)...
 *
 * - Unterstützer eines Einzelbewerbers (nicht Liste und nicht Direktkandidat einer Partei) bei der Bundestagswahl
 * müssen am Tag der Unterschrift und mindestens 6 Monate vor dem Wahldatum in einem Stadtbezirk des Wahlkreises, in dem
 * der Einzelbewerber antritt, wohnen.
 *
 * - Kandidaten bei der Oberbürgermeisterwahl dürfen maximal 67 Jahre am NACH DER WAHL folgenden 20. Mai (geworden)
 * sein.
 */
public interface PersonendatenMatcherKriterium extends Serializable {

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

  boolean matches(Personendaten personendaten);

  boolean matchesNot(Personendaten personendaten);

  /*
   * TODO Momentan verwenden alle Text-Attribute noch den Parameter Messages, um lokalisierbar zu sein. Sollte die
   * wahlrechtliche Prüfung bzw. deren Kriterien mal konfigurierbar werden, kommen diese Werte bereits lokalisiert aus
   * der DB!
   */

  String getLabel(Messages messages);

  String getDescription(Messages messages);
}
