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

import static java.util.Collections.emptyMap;

import java.util.List;
import java.util.Map;

import de.ivu.elect.business.stimmeingabe.entity.AbstractStimmeingabePlausiKonfigurationCustomData;
import de.ivu.elect.business.stimmeingabe.entity.StimmeingabePlausiKonfiguration;
import de.ivu.elect.business.stimmeingabe.entity.StimmeingabePlausiKonfigurationCustomData;
import de.ivu.elect.business.stimmeingabe.entity.StimmeingabePlausiKonfigurationCustomDataKategorie;
import de.ivu.elect.business.stimmeingabe.entity.StimmeingabePlausiKonfigurationPropertyContext;
import de.ivu.elect.jee.presentation.dynamicform.Property;

// Cf. GruppeStimmenAnzahlComparedToTheoretischesMaximumByAnzahlStimmenProWaehlerProWahlvorschlagPlausiCustomData!
public class ListenkandidaturStimmenAnzahlComparedToTheoretischesMaximumByAnzahlStimmenProWaehlerProListenkandidaturPlausiCustomData extends AbstractStimmeingabePlausiKonfigurationCustomData {

  private static final long serialVersionUID = 1L;

  public ListenkandidaturStimmenAnzahlComparedToTheoretischesMaximumByAnzahlStimmenProWaehlerProListenkandidaturPlausiCustomData() {
    super();
  }

  public Long getAnzahlStimmenProWaehlerProListenkandidaturMaximalOrDefault(Long defaultValue) {
    return zeroIfNotPositive(defaultValue);
  }

  @Override
  public Map<StimmeingabePlausiKonfigurationCustomDataKategorie, List<Object>> getParameters() {
    return emptyMap();
  }

  @Override
  public Map<StimmeingabePlausiKonfigurationCustomDataKategorie, List<Property>> getProperties(StimmeingabePlausiKonfigurationPropertyContext context) {
    return emptyMap();
  }

  @Override
  public String formatFehlermeldungBeispiel(StimmeingabePlausiKonfiguration stimmeingabePlausiKonfiguration, StimmeingabePlausiFormatter stimmeingabePlausiFormatter) {
    long anzahlStimmenProWaehlerProListenkandidaturMaximalDummy = 998L;
    long anzahlStimmzettelGueltigAusgezaehltDummy = 997L;

    String result = stimmeingabePlausiFormatter.formatFehlermeldungBeispiel(stimmeingabePlausiKonfiguration.getWahl(), stimmeingabePlausiKonfiguration.getErgebniseingangsart(),
        stimmeingabePlausiKonfiguration.getTyp(), stimmeingabePlausiKonfiguration.getFehlerart(), null, null,
        getAnzahlStimmenProWaehlerProListenkandidaturMaximalOrDefault(anzahlStimmenProWaehlerProListenkandidaturMaximalDummy), anzahlStimmzettelGueltigAusgezaehltDummy);

    // Dummy-Werte ersetzen...
    result = result.replace(String.valueOf(anzahlStimmenProWaehlerProListenkandidaturMaximalDummy), "x"); // Bspw. "998-fache" -> "x-fache"
    result = result.replace(String.valueOf(anzahlStimmzettelGueltigAusgezaehltDummy), "x"); // Bspw. "997 veränderte Stimmzettel" -> "x veränderte Stimmzettel"

    return result;
  }

  @Override
  public boolean isCustomDataDefaultOverridden(StimmeingabePlausiKonfigurationCustomData customDataDefault) {
    return false;
  }

  @Override
  public void resetToDefault(StimmeingabePlausiKonfigurationCustomData customDataDefault) {
    // nichts zu tun
  }
}
