
package de.ivu.elect.business.ergebnis.boundary;

import java.util.Collection;
import java.util.List;

import javax.annotation.Nullable;

import de.ivu.elect.business.dokumente.control.ElectDokumentContext;
import de.ivu.elect.business.ergebnis.control.ErgebnisDaten;
import de.ivu.elect.business.ergebnis.control.ErgebnisExchangeContext;
import de.ivu.elect.business.ergebnis.entity.Stimmabgabeart;
import de.ivu.elect.business.gebietsbaum.boundary.AbstractGebietDAO;
import de.ivu.elect.business.gebietsbaum.entity.Wahldurchfuehrungsgebiet;
import de.ivu.elect.business.kandidatur.control.StimmzettelFormatterKandidaturFormatDarstellung;

public class GesamtErgebnisVergleichDokumentContext extends ElectDokumentContext {

  private static final long serialVersionUID = 1L;

  private final Stimmabgabeart stimmabgabeart;

  private final ErgebnisExchangeContext ergebnisExchangeContext;

  private ErgebnisDaten ergebnisDatenAktuell;

  private ErgebnisDaten ergebnisDatenVergleich;

  public GesamtErgebnisVergleichDokumentContext(ElectDokumentContext electDokumentContext, ErgebnisExchangeContext ergebnisExchangeContext, Stimmabgabeart stimmabgabeart) {
    super(electDokumentContext);

    this.ergebnisExchangeContext = ergebnisExchangeContext;

    this.stimmabgabeart = stimmabgabeart;
  }

  public Collection<Wahldurchfuehrungsgebiet> collectGebieteExportierbar(AbstractGebietDAO gebietDAO, List<Wahldurchfuehrungsgebiet> gebiete) {
    return ergebnisExchangeContext.collectEntitiesExportierbar(gebietDAO, gebiete);
  }

  @Nullable
  public StimmzettelFormatterKandidaturFormatDarstellung getKandidaturFormatDarstellung() {
    return ergebnisExchangeContext.getKandidaturFormatDarstellung();
  }

  public Stimmabgabeart getStimmabgabeart() {
    return stimmabgabeart;
  }

  public ErgebnisDaten getErgebnisDatenAktuell() {
    return ergebnisDatenAktuell;
  }

  public void setErgebnisDatenAktuell(ErgebnisDaten ergebnisDatenAktuell) {
    this.ergebnisDatenAktuell = ergebnisDatenAktuell;
  }

  @Nullable
  public ErgebnisDaten getErgebnisDatenVergleich() {
    return ergebnisDatenVergleich;
  }

  public void setErgebnisDatenVergleich(ErgebnisDaten ergebnisDatenVergleich) {
    this.ergebnisDatenVergleich = ergebnisDatenVergleich;
  }

  public void removeErgebnisDaten() {
    setErgebnisDatenAktuell(null);
    setErgebnisDatenVergleich(null);
  }
}
