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

import de.ivu.elect.business.stimmeingabe.entity.Stimmeingabe;
import de.ivu.elect.business.stimmeingabe.entity.StimmeingabePlausiKonfiguration;
import de.ivu.elect.jee.faces.Messages;

public class KommunalListenwahlGueltigeListenstimmenBerechnetAnzahlKleinerTheoretischesMaximumAnteilPlausi
    extends
      AbstractKommunalListenwahlGueltigeListenstimmenBerechnetAnzahlComparedToTheoretischesMaximumPlausi
    implements
      StimmeingabePlausiAnzahlComparedToAnzahlAnteilKonfiguriert {

  private final long anzahlStimmenProWaehlerMaximal;

  private final double anteilTheoretischesMaximum;

  public KommunalListenwahlGueltigeListenstimmenBerechnetAnzahlKleinerTheoretischesMaximumAnteilPlausi(Long anzahlStimmenProWaehlerMaximal, Stimmeingabe stimmeingabeWaehlerGesamt,
      Stimmeingabe stimmzetteleingabeUngueltigeListenstimmen, KommunalListenwahlStimmeingabenGueltigeListenstimmen stimmeingabenGueltigeListenstimmen,
      StimmeingabePlausiKonfiguration stimmeingabePlausiKonfiguration, Messages messages) {
    super(StimmeingabeAnzahlComparedToOperator.LESS_THAN, stimmeingabeWaehlerGesamt, stimmzetteleingabeUngueltigeListenstimmen, stimmeingabenGueltigeListenstimmen, stimmeingabePlausiKonfiguration,
        messages);

    GueltigeStimmenAnzahlBerechnetByAnzahlStimmenProWaehlerComparedToTheoretischesMaximumByAnzahlStimmenProWaehlerAnteilPlausiCustomData stimmeingabePlausiKonfigurationCustomData = stimmeingabePlausiKonfiguration
        .getCustomData(GueltigeStimmenAnzahlBerechnetByAnzahlStimmenProWaehlerComparedToTheoretischesMaximumByAnzahlStimmenProWaehlerAnteilPlausiCustomData.class);

    this.anzahlStimmenProWaehlerMaximal = stimmeingabePlausiKonfigurationCustomData.getAnzahlStimmenProWaehlerMaximalOrDefault(anzahlStimmenProWaehlerMaximal);

    this.anteilTheoretischesMaximum = stimmeingabePlausiKonfigurationCustomData.getAnteil();
  }

  @Override
  protected long getAnzahlStimmenProWaehlerMaximal() {
    return anzahlStimmenProWaehlerMaximal;
  }

  @Override
  protected Double getComparedToAnteil() {
    return anteilTheoretischesMaximum;
  }
}
