
package de.ivu.elect.presentation.wahlvorschlag.table;

import java.util.List;

import de.ivu.elect.business.pruefung.boundary.ZulassungPruefer;
import de.ivu.elect.business.stimmzettel.entity.EntityAufStimmzettelDaten;
import de.ivu.elect.business.wahlvorschlag.entity.Wahlvorschlag;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.jee.presentation.dynamictable.ColumnType;
import de.ivu.elect.presentation.wahl.CurrentWahlZulassungspruefungExtended;

public class WahlvorschlagNichtzulassungsgruendeColumn<E extends Wahlvorschlag> extends AbstractWahlvorschlagColumn<E> implements WahlvorschlagZulassungspruefungColumn<E> {

  private static final long serialVersionUID = 1L;

  private final EntityAufStimmzettelDaten entityAufStimmzettelDaten;

  private final CurrentWahlZulassungspruefungExtended currentWahlZulassungspruefung;

  protected WahlvorschlagNichtzulassungsgruendeColumn(Messages messages, EntityAufStimmzettelDaten entityAufStimmzettelDaten, CurrentWahlZulassungspruefungExtended currentWahlZulassungspruefung) {
    super("Wahlvorschlag-Nichtzulassungsgruende-Column", messages, "wahlvorschlag.column.nichtzulassung.begruendung", ColumnType.COLLECTION, null);

    this.entityAufStimmzettelDaten = entityAufStimmzettelDaten;

    this.currentWahlZulassungspruefung = currentWahlZulassungspruefung;
  }

  @Override
  public boolean isRendered() {
    return super.isRendered() && isRendered(getCurrentWahlZulassungspruefung());
  }

  @Override
  public boolean isRendered(CurrentWahlZulassungspruefungExtended currentWahlZulassungspruefung) {
    return currentWahlZulassungspruefung.isZulassungMitPruefkriterienDurchfuehrbar(); // ELECT-9119
  }

  @Override
  public List<String> getValue(E wahlvorschlag) {
    return getZulassungPruefer().getGruendeFuerVerweigerungDerZulassung(wahlvorschlag);
  }

  private ZulassungPruefer getZulassungPruefer() {
    return getEntityAufStimmzettelDaten().getZulassungPruefer();
  }

  private EntityAufStimmzettelDaten getEntityAufStimmzettelDaten() {
    return entityAufStimmzettelDaten;
  }

  private CurrentWahlZulassungspruefungExtended getCurrentWahlZulassungspruefung() {
    return currentWahlZulassungspruefung;
  }
}
