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

import java.io.File;
import java.util.Collection;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import de.ivu.elect.business.system.entity.VerzeichnisResult;
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 static de.ivu.elect.business.wahl.entity.WahlParameterWerte.STIMMEINGABEN_CUSTOM_FORMAT_IMPORT_CRONTAB;
import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.STIMMEINGABEN_CUSTOM_FORMAT_IMPORT_ERFOLGREICH_VERZEICHNIS;
import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.STIMMEINGABEN_CUSTOM_FORMAT_IMPORT_FEHLER_VERZEICHNIS;
import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.STIMMEINGABEN_CUSTOM_FORMAT_IMPORT_VERZEICHNIS;
import static java.util.Arrays.asList;

public class StimmeingabeCustomFormatWahlParameterInit extends AbstractWahlParameterInit {

  private static final Logger LOG = LoggerFactory.getLogger(StimmeingabeCustomFormatWahlParameterInit.class);

  public StimmeingabeCustomFormatWahlParameterInit() {
    super();
  }

  @Override
  public Collection<WahlParameter> createDefaultParameters(Wahltermin wahltermin, Wahl wahl) {

    String quelleString = "";
    String erfolgString = "";
    String fehlerString = "";

    if (isOhneMandant()) {
      // WASDE-1187 vorbelegen, um doppelte Vergabe zu vermeiden
      VerzeichnisResult quelle = tryCreateUserHomeDirectory("Verzeichnis für Stimmenimporte (Quelle)",
              "stimmeingaben" + File.separator + wahl.getDatumWahlartId() + File.separator + "quelle");

      // ELECT-7629
      LOG.info("Status vorgegebenes Verzeichnis für Stimmenimporte (Quelle) '" + quelle.getVerzeichnisName() + "': " + quelle.getVerzeichnisStatus());

      quelleString = quelle.getVerzeichnisNameFuerDefaultKonfiguration();

      VerzeichnisResult erfolg = tryCreateUserHomeDirectory("Verzeichnis für Stimmenimporte (Erfolg)",
              "stimmeingaben" + File.separator + wahl.getDatumWahlartId() + File.separator + "erfolg");

      // ELECT-7629
      LOG.info("Status vorgegebenes Verzeichnis für Stimmenimporte (Erfolg) '" + erfolg.getVerzeichnisName() + "': " + erfolg.getVerzeichnisStatus());

      erfolgString = erfolg.getVerzeichnisNameFuerDefaultKonfiguration();

      VerzeichnisResult fehler = tryCreateUserHomeDirectory("Verzeichnis für Stimmenimporte (Fehler)",
              "stimmeingaben" + File.separator + wahl.getDatumWahlartId() + File.separator + "fehler");
      // ELECT-7629
      LOG.info("Status vorgegebenes Verzeichnis für Stimmenimporte (Fehler) '" + fehler.getVerzeichnisName() + "': " + fehler.getVerzeichnisStatus());

      fehlerString = fehler.getVerzeichnisNameFuerDefaultKonfiguration();

    }
    return asList( //

        create(STIMMEINGABEN_CUSTOM_FORMAT_IMPORT_CRONTAB, getDefaultImportHaeufigkeit(wahltermin, wahl)), //
        create(STIMMEINGABEN_CUSTOM_FORMAT_IMPORT_VERZEICHNIS, quelleString), //
        create(STIMMEINGABEN_CUSTOM_FORMAT_IMPORT_ERFOLGREICH_VERZEICHNIS, erfolgString), //
        create(STIMMEINGABEN_CUSTOM_FORMAT_IMPORT_FEHLER_VERZEICHNIS, fehlerString) //
    );
  }

  protected String getDefaultImportHaeufigkeit(Wahltermin wahltermin, Wahl wahl) {
    return "";
  }
}
