
package de.ivu.elect.business.stimmeingabe.control.plausi;

import static de.ivu.elect.business.stimmeingabe.entity.StimmeingabePlausiFehlerart.ERROR;
import static de.ivu.elect.business.stimmeingabe.entity.StimmeingabePlausiFehlerart.WARNING;
import static de.ivu.elect.business.stimmeingabe.entity.StimmeingabePlausiGebietsart.URNENWAHLBEZIRK;
import static de.ivu.elect.business.stimmeingabe.entity.StimmeingabePlausiTyp.GUELTIGE_REFERENDUM_STIMMEN_ANZAHL_GLEICH_REFERENDUM_OPTION_REFERENDUM_STIMMEN_ANZAHLEN_SUMME;
import static de.ivu.elect.business.stimmeingabe.entity.StimmeingabePlausiTyp.GUELTIGE_REFERENDUM_STIMMEN_ANZAHL_GROESSER_NULL;
import static de.ivu.elect.business.stimmeingabe.entity.StimmeingabePlausiTyp.WAEHLER_GESAMT_ANZAHL_GLEICH_GUELTIGE_REFERENDUM_STIMMEN_ANZAHL_PLUS_UNGUELTIGE_REFERENDUM_STIMMEN_ANZAHL;
import static de.ivu.elect.business.stimmeingabe.entity.StimmeingabePlausiTyp.WAEHLER_GESAMT_ANZAHL_GROESSER_NULL;
import static de.ivu.elect.business.stimmeingabe.entity.StimmeingabePlausiTyp.WAEHLER_MIT_WAHLSCHEIN_ANZAHL_KLEINER_WAHLBERECHTIGTE_MIT_WAHLSCHEIN_ANZAHL_ANTEIL;

import de.ivu.elect.business.stimmeingabe.entity.StimmeingabePlausiErgebniseingangsart;
import de.ivu.elect.business.stimmeingabe.entity.StimmeingabePlausiGebietsart;
import de.ivu.elect.business.wahl.entity.CommonWahlart;
import de.ivu.elect.business.wahl.entity.Wahl;

public class BeStimmeingabePlausiDefinitions extends AbstractStimmeingabePlausiDefinitions {

  public BeStimmeingabePlausiDefinitions() {
    super(CommonWahlart.BUERGERENTSCHEID);
  }

  @Override
  protected void initDefaultsAlleGebietsarten(StimmeingabePlausiDefinitionsContext context, Wahl wahl, StimmeingabePlausiErgebniseingangsart ergebniseingangsart) {
    super.initDefaultsAlleGebietsarten(context, wahl, ergebniseingangsart);

    for (StimmeingabePlausiGebietsart gebietsart : StimmeingabePlausiGebietsart.values()) {
      initDefault(ergebniseingangsart, gebietsart, GUELTIGE_REFERENDUM_STIMMEN_ANZAHL_GLEICH_REFERENDUM_OPTION_REFERENDUM_STIMMEN_ANZAHLEN_SUMME, ERROR);
      initDefault(ergebniseingangsart, gebietsart, GUELTIGE_REFERENDUM_STIMMEN_ANZAHL_GROESSER_NULL, ERROR);

      initDefault(ergebniseingangsart, gebietsart, WAEHLER_GESAMT_ANZAHL_GLEICH_GUELTIGE_REFERENDUM_STIMMEN_ANZAHL_PLUS_UNGUELTIGE_REFERENDUM_STIMMEN_ANZAHL, ERROR);
      initDefault(ergebniseingangsart, gebietsart, WAEHLER_GESAMT_ANZAHL_GROESSER_NULL, WARNING);
    }
  }

  @Override
  protected void initDefaultsUrnenwahlbezirk(StimmeingabePlausiDefinitionsContext context, Wahl wahl, StimmeingabePlausiErgebniseingangsart ergebniseingangsart) {
    super.initDefaultsUrnenwahlbezirk(context, wahl, ergebniseingangsart);

    initDefault(ergebniseingangsart, URNENWAHLBEZIRK, WAEHLER_MIT_WAHLSCHEIN_ANZAHL_KLEINER_WAHLBERECHTIGTE_MIT_WAHLSCHEIN_ANZAHL_ANTEIL, WARNING,
        new StimmeingabeAnzahlComparedToStimmeingabeAnzahlAnteilPlausiCustomData(0.90D));
  }
}
