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

import java.util.function.Predicate;

import de.ivu.elect.business.exchange.control.AbstractWahlExchangeContext;
import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.business.wahl.entity.Wahl;

public class WahlvorschlagExportContext extends AbstractWahlExchangeContext implements DestatisKandidaturExportContext {

  private static final long serialVersionUID = 1L;

  private String nameDerExportDatei;

  private boolean geburtsdatumNurJahr;

  private boolean fuerVeroeffentlichung;

  private boolean nichtZugelasseneExportieren;

  private boolean ungepruefteExportieren;

  private boolean untergeordnetenGebieteExportieren = false;

  private Predicate<Gebiet> gebietFilter = g -> true;

  private Gebiet ausgewaehltesGebiet;

  private Pflichtangabe pflichtangabe = Pflichtangabe.NUR_VOLLSTAENDIGE_DATENSAETZE;

  private ExportZulassungsstatusBeschraenkung exportZulassungsstatusBeschraenkung = ExportZulassungsstatusBeschraenkung.ALLE;

  public WahlvorschlagExportContext(Wahl wahl) {
    this(wahl, false, false, true, true);
  }

  public WahlvorschlagExportContext(Wahl wahl, boolean geburtsdatumNurJahr, boolean fuerVeroeffentlichung, boolean nichtZugelasseneExportieren, boolean ungepruefteExportieren) {
    super(wahl);

    this.geburtsdatumNurJahr = geburtsdatumNurJahr;
    this.fuerVeroeffentlichung = fuerVeroeffentlichung;
    this.nichtZugelasseneExportieren = nichtZugelasseneExportieren;
    this.ungepruefteExportieren = ungepruefteExportieren;
  }

  @Override
  public boolean isGeburtsdatumNurJahr() {
    return geburtsdatumNurJahr;
  }

  @Override
  public boolean isFuerVeroeffentlichung() {
    return fuerVeroeffentlichung;
  }

  public boolean isNichtZugelasseneExportieren() {
    return nichtZugelasseneExportieren;
  }

  public boolean isUngepruefteExportieren() {
    return ungepruefteExportieren;
  }

  public String getNameDerExportDatei() {
    return nameDerExportDatei;
  }

  public void setNameDerExportDatei(String nameDerExportDatei) {
    this.nameDerExportDatei = nameDerExportDatei;
  }

  public void setGeburtsdatumNurJahr(boolean geburtsdatumNurJahr) {
    this.geburtsdatumNurJahr = geburtsdatumNurJahr;
  }

  public void setFuerVeroeffentlichung(boolean fuerVeroeffentlichung) {
    this.fuerVeroeffentlichung = fuerVeroeffentlichung;
  }

  public void setNichtZugelasseneExportieren(boolean nichtZugelasseneExportieren) {
    this.nichtZugelasseneExportieren = nichtZugelasseneExportieren;
  }

  public void setUngepruefteExportieren(boolean ungepruefteExportieren) {
    this.ungepruefteExportieren = ungepruefteExportieren;
  }

  public Predicate<Gebiet> getGebietFilter() {
    return gebietFilter;
  }

  public void setGebietFilter(Predicate<Gebiet> gebietFilter) {
    this.gebietFilter = gebietFilter;
  }

  public boolean isUntergeordneteGebieteExportieren() {
    return untergeordnetenGebieteExportieren;
  }

  public void setUntergeordneteGebieteExportieren(boolean untergeordnetenGebieteExportieren) {
    this.untergeordnetenGebieteExportieren = untergeordnetenGebieteExportieren;
  }

  public Gebiet getAusgewaehltesGebiet() {
    return ausgewaehltesGebiet;
  }

  public void setAusgewaehltesGebiet(Gebiet ausgewaehltesGebiet) {
    this.ausgewaehltesGebiet = ausgewaehltesGebiet;
  }

  public Pflichtangabe getPflichtangabe() {
    return pflichtangabe;
  }

  public void setPflichtangabe(Pflichtangabe pflichtangabe) {
    this.pflichtangabe = pflichtangabe;
  }

  public ExportZulassungsstatusBeschraenkung getKandidaturMitZulassungsstatusExportieren() {
    return exportZulassungsstatusBeschraenkung;
  }

  public void setKandidaturMitZulassungsstatusExportieren(ExportZulassungsstatusBeschraenkung exportZulassungsstatusBeschraenkung) {
    this.exportZulassungsstatusBeschraenkung = exportZulassungsstatusBeschraenkung;
  }
}
