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

import static org.apache.commons.lang3.StringUtils.trimToEmpty;

import javax.annotation.Nonnull;

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 PruefkennzeichenWahlberechtigteGleichPruefkennzeichenWahlberechtigteAmGebietPlausi extends AbstractStimmeingabePlausi implements StimmeingabePlausiFiktiveWerteFehlerBeheber {

  private final String expected;

  public PruefkennzeichenWahlberechtigteGleichPruefkennzeichenWahlberechtigteAmGebietPlausi(String expected, StimmeingabePlausiKonfiguration stimmeingabePlausiKonfiguration, Messages messages) {
    super(stimmeingabePlausiKonfiguration, messages);

    this.expected = trimToEmpty(expected);
  }

  @Override
  protected StimmeingabePlausiResult calculatePlausiResult(@Nonnull Stimmeingabe stimmeingabe) {
    if (!getExpected().equals(trimToEmpty(stimmeingabe.getAnzahlEingabe()))) {
      return createPlausiResult(stimmeingabe, getExpected(), null, null, getFiktiveWerteFehlerBeheber());
    }

    return StimmeingabePlausiResult.KEIN_FEHLER;
  }

  public String getExpected() {
    return expected;
  }

  @Override
  protected boolean isPlausiResultCalculatedAutomatischKorrigierbar() {
    return false; // ErgebniseingangPlausiFehlerBeheber funktioniert momentan nur für Zahlen!
  }

  private StimmeingabePlausiFiktiveWerteFehlerBeheber getFiktiveWerteFehlerBeheber() {
    return this;
  }

  @Override
  public void behebeFehler(Stimmeingabe stimmeingabe) {
    stimmeingabe.setAnzahlEingabe(getExpected());
  }
}
