
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;

public class GueltigeStimmenAnzahlBerechnetByAnzahlStimmenProWaehlerComparedToTheoretischesMaximumByAnzahlStimmenProWaehlerPlausiCustomData extends AbstractStimmeingabePlausiKonfigurationCustomData {

  private static final long serialVersionUID = 1L;

  public GueltigeStimmenAnzahlBerechnetByAnzahlStimmenProWaehlerComparedToTheoretischesMaximumByAnzahlStimmenProWaehlerPlausiCustomData() {
    super();
  }

  public Long getAnzahlStimmenProWaehlerMaximalOrDefault(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 anzahlStimmenProWaehlerMaximalDummy = 998L;

    String result = stimmeingabePlausiFormatter.formatFehlermeldungBeispiel(stimmeingabePlausiKonfiguration.getWahl(), stimmeingabePlausiKonfiguration.getErgebniseingangsart(),
        stimmeingabePlausiKonfiguration.getTyp(), stimmeingabePlausiKonfiguration.getFehlerart(), null, null, getAnzahlStimmenProWaehlerMaximalOrDefault(anzahlStimmenProWaehlerMaximalDummy));

    // Dummy-Werte ersetzen...
    result = result.replace(String.valueOf(anzahlStimmenProWaehlerMaximalDummy), "x"); // Bspw. "998-fache" -> "x-fache"

    return result;
  }

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

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