
package de.ivu.elect.was.sitzberechnung.control;

import de.ivu.elect.business.ergebnis.entity.Ergebnis;
import de.ivu.elect.business.ergebnis.entity.Ergebnisart;
import de.ivu.elect.business.ergebniskonflikt.entity.ErgebnisKonfliktCustomDataFormatter;
import de.ivu.elect.business.sitzberechnung.entity.SitzberechnungsalgorithmusKonfiguration;
import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.business.wahl.entity.WahlartSitzberechnungsalgorithmus;
import de.ivu.elect.jee.faces.Messages;

public class ElectSitzberechnungContext {

  private final WahlartSitzberechnungsalgorithmus wahlartSitzberechnungsalgorithmus;

  private final SitzberechnungsalgorithmusKonfiguration konfiguration;

  private final Ergebnis ergebnis;

  private final Messages messages;

  private final ErgebnisKonfliktCustomDataFormatter ergebnisKonfliktCustomDataFormatter;

  public ElectSitzberechnungContext(WahlartSitzberechnungsalgorithmus wahlartSitzberechnungsalgorithmus, SitzberechnungsalgorithmusKonfiguration konfiguration, Ergebnis ergebnis, Messages messages,
      ErgebnisKonfliktCustomDataFormatter ergebnisKonfliktCustomDataFormatter) {
    super();

    this.wahlartSitzberechnungsalgorithmus = wahlartSitzberechnungsalgorithmus;

    this.konfiguration = konfiguration;

    this.ergebnis = ergebnis;

    this.messages = messages;

    this.ergebnisKonfliktCustomDataFormatter = ergebnisKonfliktCustomDataFormatter;
  }

  public WahlartSitzberechnungsalgorithmus getWahlartSitzberechnungsalgorithmus() {
    return wahlartSitzberechnungsalgorithmus;
  }

  public boolean isErgebnisLogErstellen() {
    return getKonfiguration().isProtokollErstellen();
  }

  private SitzberechnungsalgorithmusKonfiguration getKonfiguration() {
    return konfiguration;
  }

  public Wahl getWahl() {
    return getErgebnis().getWahl();
  }

  public Ergebnis getErgebnis() {
    return ergebnis;
  }

  public Ergebnisart getErgebnisart() {
    return getErgebnis().getErgebnisart();
  }

  public Messages getMessages() {
    return messages;
  }

  public ErgebnisKonfliktCustomDataFormatter getErgebnisKonfliktCustomDataFormatter() {
    return ergebnisKonfliktCustomDataFormatter;
  }
}
