
package de.ivu.elect.business.sitzberechnung.entity;

import de.ivu.elect.business.ergebnis.boundary.SitzeFactory;
import de.ivu.elect.business.ergebniskonflikt.entity.ErgebnisKonfliktCustomDataFormatter;
import de.ivu.elect.business.sitzberechnung.control.varianten.Variantenberechner;
import de.ivu.elect.business.system.boundary.SystemLogWriter;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.presentation.person.PersonendatenFormatter;

/**
 * Basis-Klasse zur Konfiguration des verwendeten Sitzberechnungsalgorithmus
 */
public class SitzberechnungsalgorithmusKonfiguration {

  private boolean konflikeSelbstLoesen = false; // Flag, um zu signalisieren, dass der Algorithmus auftretende Konflikte selbst lösen soll

  private boolean protokollErstellen = true; // Kann zur Optimierung bei der Variantenberechnung auf false gesetzt werden

  private boolean variantenberechnungEnabled = true; // ELECT-16441

  private long maximaleAnzahlSitzberechnungenInVariantenberechnung = Variantenberechner.DEFAULT_MAX_ANZAHL_SITZBERECHNUNGEN;

  private Messages messages;

  private SystemLogWriter systemLogWriter;

  private ErgebnisKonfliktCustomDataFormatter ergebnisKonfliktCustomDataFormatter;

  private PersonendatenFormatter personendatenFormatter;

  private SitzeFactory sitzeFactory;

  public SitzberechnungsalgorithmusKonfiguration() {
    super();
  }

  public boolean isKonflikeSelbstLoesen() {
    return konflikeSelbstLoesen;
  }

  public void setKonflikeSelbstLoesen(boolean konflikeSelbstLoesen) {
    this.konflikeSelbstLoesen = konflikeSelbstLoesen;
  }

  public boolean isProtokollErstellen() {
    return protokollErstellen;
  }

  public void setProtokollErstellen(boolean protokollErstellen) {
    this.protokollErstellen = protokollErstellen;
  }

  public boolean isVariantenberechnungEnabled() {
    return variantenberechnungEnabled;
  }

  public void setVariantenberechnungEnabled(boolean variantenberechnungEnabled) {
    this.variantenberechnungEnabled = variantenberechnungEnabled;
  }

  public long getMaximaleAnzahlSitzberechnungenInVariantenberechnung() {
    return maximaleAnzahlSitzberechnungenInVariantenberechnung;
  }

  public void setMaximaleAnzahlSitzberechnungenInVariantenberechnung(long maximaleAnzahlSitzberechnungenInVariantenberechnung) {
    this.maximaleAnzahlSitzberechnungenInVariantenberechnung = maximaleAnzahlSitzberechnungenInVariantenberechnung;
  }

  public Messages getMessages() {
    return messages;
  }

  public void setMessages(Messages messages) {
    this.messages = messages;
  }

  public SystemLogWriter getSystemLogWriter() {
    return systemLogWriter;
  }

  public void setSystemLogWriter(SystemLogWriter systemLogWriter) {
    this.systemLogWriter = systemLogWriter;
  }

  public ErgebnisKonfliktCustomDataFormatter getErgebnisKonfliktCustomDataFormatter() {
    return ergebnisKonfliktCustomDataFormatter;
  }

  public void setErgebnisKonfliktCustomDataFormatter(ErgebnisKonfliktCustomDataFormatter ergebnisKonfliktCustomDataFormatter) {
    this.ergebnisKonfliktCustomDataFormatter = ergebnisKonfliktCustomDataFormatter;
  }

  public PersonendatenFormatter getPersonendatenFormatter() {
    return personendatenFormatter;
  }

  public void setPersonendatenFormatter(PersonendatenFormatter personendatenFormatter) {
    this.personendatenFormatter = personendatenFormatter;
  }

  public SitzeFactory getSitzeFactory() {
    return sitzeFactory;
  }

  public void setSitzeFactory(SitzeFactory sitzeFactory) {
    this.sitzeFactory = sitzeFactory;
  }
}
