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

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

import de.ivu.elect.business.stimmeingabe.entity.StimmeingabeHerkunftUmgang;
import de.ivu.elect.business.wahl.control.AbstractWahlParameterInit;
import de.ivu.elect.business.wahl.entity.StimmeingabeAwerteUebernehmen;
import de.ivu.elect.business.wahl.entity.UmgangHinterlegteAWerte;
import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.business.wahl.entity.WahlParameter;
import de.ivu.elect.business.wahl.entity.WahlParameterStimmeingabeErfassungsmaskeLayoutStimmeingabeGruppeStimmen;
import de.ivu.elect.business.wahl.entity.WahlParameterStimmeingabeErfassungsmaskeTabKeys;
import de.ivu.elect.business.wahl.entity.WahlParameterStimmeingabeErfassungsmaskeTabOrder;
import de.ivu.elect.business.wahl.entity.WahlParameterStimmeingabeErfassungsmaskeUmgangBlank;
import de.ivu.elect.business.wahl.entity.Wahltermin;


import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.STIMMEINGABE_AWERTE_UEBERNEHMEN;
import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.STIMMEINGABE_ERFASSUNGSMASKE_LAYOUT_STIMMEINGABE_GRUPPE_STIMMEN;
import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.STIMMEINGABE_ERFASSUNGSMASKE_TAB_KEYS;
import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.STIMMEINGABE_ERFASSUNGSMASKE_TAB_ORDER;
import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.STIMMEINGABE_ERFASSUNGSMASKE_UMGANG_BLANK_ANZEIGEN;
import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.STIMMEINGABE_ERFASSUNGSMASKE_UMGANG_BLANK_ERFASSEN;
import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.STIMMEINGABE_HERKUNFT_SETZEN;
import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.STIMMEINGABE_PLAUSIBILISIERUNG_AKTIVIERT;
import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.STIMMEINGABE_WAHLART_ERGEBNISART_VORLAEUFIG_ERFASSUNGSART_TREND_STIMMZETTEL_NUR_EINZELNER_WAHLVORSCHLAG_WICHTUNG;
import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.UMGANG_AWERTE_HINTERLEGT;

public class StimmeingabeErfassenWahlParameterInit extends AbstractWahlParameterInit {

  public StimmeingabeErfassenWahlParameterInit() {
    super();
  }

  @Override
  protected Collection<WahlParameter> createDefaultParameters(Wahltermin wahltermin, Wahl wahl) {
    List<WahlParameter> result = new ArrayList<>();

    // ELECTKOM-749
    // nach core verschoben siehe CoreStimmeingabeErfassenWahlParameterInit add(result, STIMMEINGABE_WAHLART_ERGEBNISART_VORLAEUFIG_ERFASSUNGSART,
    // WahlartErgebnisartVorlaeufigErfassungsart.defaultValue
    // ());
    add(result, STIMMEINGABE_WAHLART_ERGEBNISART_VORLAEUFIG_ERFASSUNGSART_TREND_STIMMZETTEL_NUR_EINZELNER_WAHLVORSCHLAG_WICHTUNG, 75);

    add(result, STIMMEINGABE_PLAUSIBILISIERUNG_AKTIVIERT, true);
    add(result, STIMMEINGABE_AWERTE_UEBERNEHMEN, getStimmeingabeAwerteUebernehmen());

    WahlParameterStimmeingabeErfassungsmaskeUmgangBlank umgangBlankDefault = WahlParameterStimmeingabeErfassungsmaskeUmgangBlank.defaultValue();

    add(result, STIMMEINGABE_ERFASSUNGSMASKE_UMGANG_BLANK_ERFASSEN, umgangBlankDefault);
    add(result, STIMMEINGABE_ERFASSUNGSMASKE_UMGANG_BLANK_ANZEIGEN, umgangBlankDefault);

    add(result, STIMMEINGABE_ERFASSUNGSMASKE_TAB_ORDER, WahlParameterStimmeingabeErfassungsmaskeTabOrder.defaultValue());
    add(result, STIMMEINGABE_ERFASSUNGSMASKE_TAB_KEYS, WahlParameterStimmeingabeErfassungsmaskeTabKeys.defaultValue()); // ELECTKOM-537

    // ELECT-8349
    add(result, STIMMEINGABE_ERFASSUNGSMASKE_LAYOUT_STIMMEINGABE_GRUPPE_STIMMEN,
        WahlParameterStimmeingabeErfassungsmaskeLayoutStimmeingabeGruppeStimmen.defaultValue());
    add(result, STIMMEINGABE_HERKUNFT_SETZEN, getUmgangStimmeingabeHerkunftSetzen());

    // ELECT-9522
    add(result, UMGANG_AWERTE_HINTERLEGT, UmgangHinterlegteAWerte.NUR_URNENWAHLBEZIRKE);

    return result;
  }

  protected StimmeingabeAwerteUebernehmen getStimmeingabeAwerteUebernehmen() {
    return StimmeingabeAwerteUebernehmen.UEBERNEHMEN;
  }

  protected StimmeingabeHerkunftUmgang getUmgangStimmeingabeHerkunftSetzen() {
    return StimmeingabeHerkunftUmgang.IGNORIEREN;
  }
}
