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

import static java.util.Arrays.asList;
import static java.util.Collections.emptyList;

import java.util.List;

import de.ivu.elect.business.person.entity.Personendaten;
import de.ivu.elect.business.person.entity.Wahlrechtsausschluss;
import de.ivu.elect.business.personenpruefung.control.wahlrecht.kriterium.AbstractWahlrechtGebietsartInReferenzGebietKriterium;
import de.ivu.elect.business.personenpruefung.control.wahlrecht.kriterium.HoechstalterAmStichtagKriterium;
import de.ivu.elect.business.personenpruefung.control.wahlrecht.kriterium.MindestalterAmStichtagKriterium;
import de.ivu.elect.business.personenpruefung.control.wahlrecht.kriterium.MindestaufenthaltAnAnschriftArtInGebietAmStichtagKriterium;
import de.ivu.elect.business.personenpruefung.control.wahlrecht.kriterium.PersonenregisterAbgleichbarkeitKriterium;
import de.ivu.elect.business.personenpruefung.control.wahlrecht.kriterium.WahlrechtsausschlussKriterium;

public class WahlausschussmitgliedWahlrechtMatcher extends AbstractPersonendatenWahlrechtMatcher {

  private static final long serialVersionUID = 1L;

  public WahlausschussmitgliedWahlrechtMatcher() {
    super();
  }

  @Override
  public List<MindestalterAmStichtagKriterium> collectMindestalterAmStichtagKriterien(Personendaten personendaten) {
    return asList(createMindestalterAmWahltagKriterium(personendaten, 18));
  }

  @Override
  public List<HoechstalterAmStichtagKriterium> collectHoechstalterAmStichtagKriterien(Personendaten personendaten) {
    return emptyList();
  }

  @Override
  public List<WahlrechtsausschlussKriterium> collectWahlrechtsausschlussKriterien(Personendaten personendaten) {
    return asList(new WahlrechtsausschlussKriterium(getDefaultPersonendatenClasses(), Wahlrechtsausschluss.KEIN_AUSSCHLUSS));
  }

  @Override
  public PersonenregisterAbgleichbarkeitKriterium collectPersonenregisterAbgleichbarkeitKriterium(Personendaten personendaten) {
    return new PersonenregisterAbgleichbarkeitKriterium(getDefaultPersonendatenClasses(),
        WahlrechtPersonenregisterAbgleichbarkeit.IRRELEVANT);
  }

  @Override
  public List<MindestaufenthaltAnAnschriftArtInGebietAmStichtagKriterium> collectMindestaufenthaltAnAnschriftArtInGebietAmStichtagKriterien(
      Personendaten personendaten) {
    return emptyList();
  }

  @Override
  public List< ? extends AbstractWahlrechtGebietsartInReferenzGebietKriterium> collectWahlrechtGebietsartInReferenzGebietKriterien(
      Personendaten personendaten) {
    return emptyList();
  }
}
