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

import java.util.List;

import javax.annotation.Nullable;
import javax.inject.Inject;

import de.ivu.elect.business.kandidatur.entity.Kandidatur;
import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.business.wahlrechtspruefung.boundary.PruefkriteriumDAO;
import de.ivu.elect.business.wahlrechtspruefung.entity.Pruefkriterium;
import de.ivu.elect.business.wahlrechtspruefung.entity.PruefkriteriumBezug;

public abstract class AbstractWahlrechtspruefungenAnlegenListener {

  @Inject
  protected transient PruefkriteriumDAO pruefkriteriumDAO;

  @Inject
  protected transient WahlrechtspruefungCreate wahlrechtspruefungCreate;

  public AbstractWahlrechtspruefungenAnlegenListener() {
    super();
  }

  protected void createWahlrechtspruefung(Pruefkriterium pruefkriterium, Object entitaetZuPruefen) {
    createWahlrechtspruefung(pruefkriterium, entitaetZuPruefen, null);
  }

  protected void createWahlrechtspruefung(Pruefkriterium pruefkriterium, Object entitaetZuPruefen, @Nullable Kandidatur kandidatur) {
    wahlrechtspruefungCreate.save(pruefkriterium, entitaetZuPruefen, kandidatur);
  }

  protected List<Pruefkriterium> collectPruefkriterien(Wahl wahl, Object entitaetZuPruefen) {
    return PruefkriteriumBezug.findePruefkriterienFuerWahlUndObject(wahl, entitaetZuPruefen, pruefkriteriumDAO);
  }
}
