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

import java.util.Collection;

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.WahlParameterWahlvorschlagsdokumentWahlvorschlagArt;
import de.ivu.elect.business.wahl.entity.WahlParameterWerte;
import de.ivu.elect.business.wahl.entity.Wahltermin;


import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.WAHLVORSCHLAGSDOKUMENT_BESCHEINIGUNG_NICHT_AUSSCHLUSS;
import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.WAHLVORSCHLAGSDOKUMENT_ERKLAERUNG_KANDIDATEN;
import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.WAHLVORSCHLAGSDOKUMENT_NACHWEIS_DER_ORGANISATION;
import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.WAHLVORSCHLAGSDOKUMENT_NIEDERSCHRIFT_AUFSTELLUNGSVERSAMMLUNG;
import static de.ivu.elect.business.wahl.entity.WahlParameterWerte.WAHLVORSCHLAGSDOKUMENT_WAEHLBARKEITSBESTAETIGUNG;
import static java.util.Arrays.asList;
import static java.util.stream.Collectors.toList;

public class WahlvorschlagsdokumentKonfigurationInit extends AbstractWahlParameterInit {

  public WahlvorschlagsdokumentKonfigurationInit() {
    super();
  }

  @Override
  public Collection<WahlParameter> createDefaultParameters(Wahltermin wahltermin, Wahl wahl) {
    return collectWahlParameterWerte().stream() //
        .map(template -> create(template, WahlParameterWahlvorschlagsdokumentWahlvorschlagArt.IRRELEVANT)) //
        .collect(toList());
  }

  protected Collection<WahlParameterWerte> collectWahlParameterWerte() {
    return asList( //
        WAHLVORSCHLAGSDOKUMENT_BESCHEINIGUNG_NICHT_AUSSCHLUSS, //
        WAHLVORSCHLAGSDOKUMENT_ERKLAERUNG_KANDIDATEN, //
        WAHLVORSCHLAGSDOKUMENT_NACHWEIS_DER_ORGANISATION, //
        WAHLVORSCHLAGSDOKUMENT_WAEHLBARKEITSBESTAETIGUNG, //
        WAHLVORSCHLAGSDOKUMENT_NIEDERSCHRIFT_AUFSTELLUNGSVERSAMMLUNG //
    );
  }
}
