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

import javax.annotation.Nullable;

import de.ivu.elect.business.exchange.control.AbstractExchangeContext;
import de.ivu.elect.business.mandant.entity.Mandant;
import de.ivu.elect.business.stimmeingabe.entity.ErgebniseingangErfasser;
import de.ivu.elect.business.system.entity.ElectSimplePrincipal;
import de.ivu.elect.business.wahl.entity.Wahldurchfuehrung;

public class StimmeingabeImportContext extends AbstractExchangeContext {

  private static final long serialVersionUID = 1L;

  private final Wahldurchfuehrung wahldurchfuehrung;

  private final Mandant mandant;

  private final ErgebniseingangErfasser erfasser;

  private String originalDateiname = null;

  private boolean plausibilisierungKannFehlerBestaetigen = false;

  public StimmeingabeImportContext(Wahldurchfuehrung wahldurchfuehrung) {
    this(wahldurchfuehrung, ErgebniseingangErfasser.benutzerOrDefault());
  }

  public StimmeingabeImportContext(Wahldurchfuehrung wahldurchfuehrung, ElectSimplePrincipal principal) {
    this(wahldurchfuehrung, ErgebniseingangErfasser.benutzer(principal));
  }

  public StimmeingabeImportContext(Wahldurchfuehrung wahldurchfuehrung, ErgebniseingangErfasser erfasser) {
    super();

    this.wahldurchfuehrung = wahldurchfuehrung;

    this.mandant = wahldurchfuehrung != null ? wahldurchfuehrung.getMandant() : null; // lazy-loading...

    this.erfasser = erfasser;
  }

  public Wahldurchfuehrung getWahldurchfuehrung() {
    return wahldurchfuehrung;
  }

  public Mandant getMandant() {
    return mandant;
  }

  public ErgebniseingangErfasser getImportErfasser() {
    return erfasser;
  }

  @Nullable
  public String getOriginalDateiname() {
    return originalDateiname;
  }

  public void setOriginalDateiname(@Nullable String originalDateiname) {
    this.originalDateiname = originalDateiname;
  }

  public boolean isPlausibilisierungKannFehlerBestaetigen() {
    return plausibilisierungKannFehlerBestaetigen;
  }

  public void setPlausibilisierungKannFehlerBestaetigen(boolean plausibilisierungKannFehlerBestaetigen) {
    this.plausibilisierungKannFehlerBestaetigen = plausibilisierungKannFehlerBestaetigen;
  }
}
