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

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

import de.ivu.elect.business.wahl.control.AbstractWahlParameterInit;
import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.business.wahl.entity.WahlParameter;
import de.ivu.elect.business.wahl.entity.Wahltermin;
import de.ivu.elect.business.gebietsbaum.entity.PruefzifferAutomatischGenerierenFormat;
import de.ivu.elect.business.wahl.entity.WesUebertragungsweg;


import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.WES_ABLEHNUNGGRUND_1;
import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.WES_ABLEHNUNGGRUND_2;
import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.WES_ABLEHNUNGGRUND_3;
import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.WES_ABLEHNUNGGRUND_4;
import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.WES_ABLEHNUNGSGRUENDE;
import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.WES_GUELTIGGRUENDE;
import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.WES_PRUEFZIFFER_FORMAT_AUTOMATISCHE_GENERIERUNG;
import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.WES_REST_CONNECTION_TIMEOUT_IN_SECONDS;
import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.WES_REST_DISABLE_TRUSTMANAGER;
import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.WES_REST_PROXY_HOST;
import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.WES_REST_PROXY_PORT;
import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.WES_REST_SOCKET_TIMEOUT_IN_SECONDS;
import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.WES_STIMMZETTEL_UPLOAD_SECRET;
import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.WES_UEBERTRAGUNGSWEG;
import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.WES_WAS_MANDANT;
import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.WES_WAS_URL;

public class WesUnterstuetzungWahlParameterInit extends AbstractWahlParameterInit {

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

    add(result, WES_ABLEHNUNGSGRUENDE, getDefaultAblehnungGruende(wahl));
    add(result, WES_GUELTIGGRUENDE, getDefaultGueltigGruende(wahl));
    // ELECTKOM-711
    add(result, WES_ABLEHNUNGGRUND_1, "Der Wählerwille ist nicht zweifelsfrei erkennbar");
    add(result, WES_ABLEHNUNGGRUND_2, "Es liegen nur Streichungen vor, aber keine positive Willenbekundung ist erkennbar");
    add(result, WES_ABLEHNUNGGRUND_3, "Die Gesamtstimmenzahl bei Einzelstimmvergabe wurde überschritten");
    add(result, WES_ABLEHNUNGGRUND_4, "Die Gesamtstimmenzahl durch mehr als ein Kopflistenkreuz (ohne Einzelstimmvergabe) wurde überschritten");

    add(result, WES_UEBERTRAGUNGSWEG, WesUebertragungsweg.USB_STICK);
    add(result, WES_WAS_URL, "");
    add(result, WES_WAS_MANDANT, "");
    add(result, WES_STIMMZETTEL_UPLOAD_SECRET, "");

    add(result, WES_REST_SOCKET_TIMEOUT_IN_SECONDS, 60);
    add(result, WES_REST_CONNECTION_TIMEOUT_IN_SECONDS, 60);
    add(result, WES_REST_DISABLE_TRUSTMANAGER, false);
    add(result, WES_REST_PROXY_HOST, null);
    add(result, WES_REST_PROXY_PORT, null);

    add(result, WES_PRUEFZIFFER_FORMAT_AUTOMATISCHE_GENERIERUNG, PruefzifferAutomatischGenerierenFormat.ALPHANUMERISCH_ACHTSTELLIG);

    return result;
  }

  protected String getDefaultAblehnungGruende(Wahl wahl) {
    return "";
  }

  protected String getDefaultGueltigGruende(Wahl wahl) {
    return "";
  }

}
