
package de.ivu.elect.wus.exchange.wahlvorschlag.csv;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;

import javax.annotation.Nullable;

import org.jsefa.csv.annotation.CsvDataType;
import org.jsefa.csv.annotation.CsvField;

import de.ivu.elect.business.datei.entity.FileType;
import de.ivu.elect.business.exchange.control.FileFormat;
import de.ivu.elect.business.exchange.control.MappingException;
import de.ivu.elect.business.person.entity.Geschlecht;
import de.ivu.jsefa.CsvHeader;

@CsvDataType // ELECT-2953 (WUS: Wahlvorschlagsimport fürs Produkt erstellen)
public class DefaultWahlvorschlagCsvDTO extends AbstractWahlvorschlagCsvDTO {

  public static final String FILE_FORMAT_NAME = "file.format.wahlvorschlaege.default";

  public static final FileFormat FILE_FORMAT = new FileFormat(FILE_FORMAT_NAME, FileType.CSV);

  public static final String GEBURTSDATUM_FORMAT_LONG = "dd.MM.yyyy";

  /** Für Stimmzettel wird oft nur die Jahreszahl des Geburtsdatums von Kandidaten angegeben. */
  public static final String GEBURTSDATUM_FORMAT_SHORT = "yyyy";

  public static final String DEFAULT_STAATSANGEHOERIGKEIT_CUSTOM_CODES_SEPARATOR = ",";

  @CsvField(pos = 1, required = true)
  @CsvHeader("Gebietsart")
  String gebietsart;

  @CsvField(pos = 2, required = true)
  @CsvHeader("Gebietsnummer")
  String gebietsnummer;

  /** Nicht benötigt bei Einzelkandidaten */
  @CsvField(pos = 3)
  @CsvHeader("Gruppe-Schluessel")
  String gruppeSchluessel;

  @Deprecated // ELECT-6957
  @CsvField(pos = 4)
  @CsvHeader("Wahlvorschlag-Position (Stimmzettel)")
  Long wahlvorschlagPosition;

  @CsvField(pos = 5, required = true)
  @CsvHeader("Wahlvorschlag-Kennwort")
  String wahlvorschlagKennwort;

  @CsvField(pos = 6)
  @CsvHeader("Wahlvorschlag-Kurzname")
  String wahlvorschlagKurzname;

  /** Nur bei Listenkandidaturen benötigt */
  @CsvField(pos = 7)
  @CsvHeader("Kandidatur-Listenposition")
  Long kandidaturListenposition;

  /** Nur bei Listenkandidaturen benötigt */
  @CsvField(pos = 8)
  @CsvHeader("Kandidatur-Anzahl-Nennungen")
  Long kandidaturAnzahlNennungen;

  @CsvField(pos = 9)
  @CsvHeader("Kandidatur-Akademischer-Grad")
  String kandidaturAkademischerGrad;

  @CsvField(pos = 10)
  @CsvHeader("Kandidatur-Titel")
  String kandidaturTitel;

  /** Nur bei Kandidaturen benötigt */
  @CsvField(pos = 11)
  @CsvHeader("Kandidatur-Familienname")
  String kandidaturFamilienname;

  /** Nur bei Kandidaturen benötigt */
  @CsvField(pos = 12)
  @CsvHeader("Kandidatur-Vorname")
  String kandidaturVorname;

  @CsvField(pos = 13)
  @CsvHeader("Kandidatur-Beruf")
  String kandidaturBeruf;

  /** Nur bei Kandidaturen benötigt */
  @CsvField(pos = 14)
  @CsvHeader("Kandidatur-Geschlecht")
  Geschlecht kandidaturGeschlecht = Geschlecht.UNBEKANNT;

  /** Nur bei Kandidaturen benötigt. Ausschließliche Angabe der Jahreszahl möglich. Wird manuell zu Date gemappt, um Locales berücksichtigen zu können. */
  @CsvField(pos = 15)
  @CsvHeader("Kandidatur-Geburtsdatum (" + GEBURTSDATUM_FORMAT_LONG + ")")
  String kandidaturGeburtsdatumAsString;

  @CsvField(pos = 16)
  @CsvHeader("Kandidatur-Ehrenamt")
  String kandidaturEhrenamt;

  @CsvField(pos = 17)
  @CsvHeader("Kandidatur-Künstlername")
  String kandidaturKuenstlername;

  @CsvField(pos = 18)
  @CsvHeader("Kandidatur-Ordensname")
  String kandidaturOrdensname;

  @CsvField(pos = 19)
  @CsvHeader("Kandidatur-Anschrift-Straße")
  String kandidaturAnschriftStrasse;

  @CsvField(pos = 20)
  @CsvHeader("Kandidatur-Anschrift-Hausnummer")
  String kandidaturAnschriftHausnummer;

  @CsvField(pos = 21)
  @CsvHeader("Kandidatur-Anschrift-PLZ")
  String kandidaturAnschriftPLZ;

  @CsvField(pos = 22)
  @CsvHeader("Kandidatur-Anschrift-Ort")
  String kandidaturAnschriftOrt;

  /** Nur bei Dublette */
  @CsvField(pos = 23)
  @CsvHeader("Kandidatur-Dublette-Gebietsart")
  String kandidaturDubletteGebietsart;

  /** Nur bei Dublette */
  @CsvField(pos = 24)
  @CsvHeader("Kandidatur-Dublette-Gebietsnummer")
  String kandidaturDubletteGebietsnummer;

  /** Nur bei Dublette und falls abweichend vom GruppeSchluessel */
  @CsvField(pos = 25)
  @CsvHeader("Kandidatur-Dublette-Gruppe-Schluessel")
  String kandidaturDubletteGruppeSchluessel;

  /** Nur bei Dublette mit Listenkandidatur */
  @CsvField(pos = 26)
  @CsvHeader("Kandidatur-Dublette-Listenposition")
  Long kandidaturDubletteListenposition;

  // ELECT-6957
  @CsvField(pos = 28)
  @CsvHeader("Wahlvorschlag-Position (relativ)")
  Long wahlvorschlagPositionRelativ;

  // ELECT-6957
  @CsvField(pos = 29)
  @CsvHeader("Wahlvorschlag-Position (vorgegeben)")
  Long wahlvorschlagPositionVorgegeben;

  // ELECT-6957
  @CsvField(pos = 30)
  @CsvHeader("Wahlvorschlag-Position (eingereicht)")
  Long wahlvorschlagPositionEingereicht;

  @CsvField(pos = 31)
  @CsvHeader("Kandidatur-Anschrift-Zusatz")
  String kandidaturAnschriftHausnummerzusatz;

  @CsvField(pos = 32)
  @CsvHeader("Kandidatur-Anschrift-Wohnungsnummer")
  String kandidaturAnschriftWohnungsnummer;

  @CsvField(pos = 33)
  @CsvHeader("Kandidatur-Anschrift-Ortsteil")
  String kandidaturAnschriftOrtsteil;

  @CsvField(pos = 34)
  @CsvHeader("Kandidatur-Anschrift-Zustellanweisung")
  String kandidaturAnschriftZustellanweisung;

  @CsvField(pos = 35)
  @CsvHeader("Kandidatur-Anschrift-Art")
  String kandidaturAnschriftArt;

  @CsvField(pos = 36)
  @CsvHeader("Gewaehlt-Vorperiode")
  String gewaehltVorperiode;

  @CsvField(pos = 37)
  @CsvHeader("Kandidatur-Namensbestandteile")
  String kandidaturNamensbestandteile;

  @CsvField(pos = 38)
  @CsvHeader("Wahlvorschlag-Zusatzbezeichnung")
  String wahlvorschlagZusatzbezeichnung;

  @CsvField(pos = 39)
  @CsvHeader("Kandidatur-Berufsschluessel")
  String kandidaturBerufsschluessel;

  @CsvField(pos = 40)
  @CsvHeader("Kandidatur-Erreichbarkeitsanschrift-Straße")
  String kandidaturErreichbarkeitsanschriftStrasse;

  @CsvField(pos = 41)
  @CsvHeader("Kandidatur-Erreichbarkeitsanschrift-Hausnummer")
  String kandidaturErreichbarkeitsanschriftHausnummer;

  @CsvField(pos = 42)
  @CsvHeader("Kandidatur-Erreichbarkeitsanschrift-PLZ")
  String kandidaturErreichbarkeitsanschriftPLZ;

  @CsvField(pos = 43)
  @CsvHeader("Kandidatur-Erreichbarkeitsanschrift-Ort")
  String kandidaturErreichbarkeitsanschriftOrt;

  @CsvField(pos = 44)
  @CsvHeader("Kandidatur-Erreichbarkeitsanschrift-Zusatz")
  String kandidaturErreichbarkeitsanschriftHausnummerzusatz;

  @CsvField(pos = 45)
  @CsvHeader("Kandidatur-Erreichbarkeitsanschrift-Wohnungsnummer")
  String kandidaturErreichbarkeitsanschriftWohnungsnummer;

  @CsvField(pos = 46)
  @CsvHeader("Kandidatur-Erreichbarkeitsanschrift-Ortsteil")
  String kandidaturErreichbarkeitsanschriftOrtsteil;

  @CsvField(pos = 47)
  @CsvHeader("Kandidatur-Erreichbarkeitsanschrift-Zustellanweisung")
  String kandidaturErreichbarkeitsanschriftZustellanweisung;

  @CsvField(pos = 48)
  @CsvHeader("Kandidatur-Geburtsort")
  String kandidaturGeburtsort; // ELECT-12274

  @CsvField(pos = 49, format = DEFAULT_STAATSANGEHOERIGKEIT_CUSTOM_CODES_SEPARATOR)
  @CsvHeader("Kandidatur-Staatsangehoerigkeiten (Codes)")
  List<String> kandidaturStaatsangehoerigkeiten = new ArrayList<>(); // ELECTMUC-3104

  public DefaultWahlvorschlagCsvDTO() {
    super();
  }

  public boolean isKandidaturDubletteDirektkandidatur() {
    return !isKandidaturDubletteListenkandidatur();
  }

  public boolean isKandidaturDubletteListenkandidatur() {
    return hasKandidaturDubletteListenposition();
  }

  public String getGebietsart() {
    return gebietsart;
  }

  public void setGebietsart(String gebietsart) {
    this.gebietsart = gebietsart;
  }

  @Override
  public String getGebietsnummer() {
    return gebietsnummer;
  }

  @Override
  public void setGebietsnummer(String gebietsnummer) {
    this.gebietsnummer = gebietsnummer;
  }

  public boolean hasGruppeSchluessel() {
    return getGruppeSchluessel() != null;
  }

  @Override
  public String getGruppeSchluessel() {
    return gruppeSchluessel;
  }

  @Nullable
  @Override
  public String getBerufsschluessel() {
    return null; // ELECT-12826
  }

  public void setGruppeSchluessel(String gruppeSchluessel) {
    this.gruppeSchluessel = gruppeSchluessel;
  }

  @Override
  @Deprecated // ELECT-6957
  public Long getWahlvorschlagPosition() {
    return wahlvorschlagPosition;
  }

  @Override
  @Deprecated // ELECT-6957
  public void setWahlvorschlagPosition(@Nullable Long wahlvorschlagPosition) {
    this.wahlvorschlagPosition = wahlvorschlagPosition;
  }

  @Override
  public String getWahlvorschlagKennwort() {
    return wahlvorschlagKennwort;
  }

  @Override
  public void setWahlvorschlagKennwort(@Nullable String wahlvorschlagKennwort) {
    this.wahlvorschlagKennwort = wahlvorschlagKennwort;
  }

  @Override
  public String getWahlvorschlagZusatzbezeichnung() {
    return wahlvorschlagZusatzbezeichnung;
  }

  @Override
  public void setWahlvorschlagZusatzbezeichnung(String wahlvorschlagZusatzbezeichnung) {
    this.wahlvorschlagZusatzbezeichnung = wahlvorschlagZusatzbezeichnung;
  }

  @Override
  public String getWahlvorschlagKurzname() {
    return wahlvorschlagKurzname;
  }

  @Override
  public void setWahlvorschlagKurzname(@Nullable String wahlvorschlagKurzname) {
    this.wahlvorschlagKurzname = wahlvorschlagKurzname;
  }

  @Override
  public Long getKandidaturListenposition() {
    return kandidaturListenposition;
  }

  @Override
  public void setKandidaturListenposition(@Nullable Long kandidaturListenposition) {
    this.kandidaturListenposition = kandidaturListenposition;
  }

  @Override
  public Long getKandidaturAnzahlNennungen() {
    return kandidaturAnzahlNennungen;
  }

  @Override
  public void setKandidaturAnzahlNennungen(Long kandidaturAnzahlNennungen) {
    this.kandidaturAnzahlNennungen = kandidaturAnzahlNennungen;
  }

  public String getKandidaturAkademischerGrad() {
    return kandidaturAkademischerGrad;
  }

  public void setKandidaturAkademischerGrad(@Nullable String kandidaturAkademischerGrad) {
    this.kandidaturAkademischerGrad = kandidaturAkademischerGrad;
  }

  @Override
  public String getKandidaturTitel() {
    return kandidaturTitel;
  }

  @Override
  public void setKandidaturTitel(@Nullable String kandidaturTitel) {
    this.kandidaturTitel = kandidaturTitel;
  }

  @Override
  public String getKandidaturFamilienname() {
    return kandidaturFamilienname;
  }

  @Override
  public void setKandidaturFamilienname(@Nullable String kandidaturFamilienname) {
    this.kandidaturFamilienname = kandidaturFamilienname;
  }

  @Override
  public String getKandidaturVorname() {
    return kandidaturVorname;
  }

  @Override
  public void setKandidaturVorname(@Nullable String kandidaturVorname) {
    this.kandidaturVorname = kandidaturVorname;
  }

  @Override
  public String getKandidaturBeruf() {
    return kandidaturBeruf;
  }

  @Override
  public void setKandidaturBeruf(@Nullable String kandidaturBeruf) {
    this.kandidaturBeruf = kandidaturBeruf;
  }

  public String getKandidaturBerufsschluessel() {
    return kandidaturBerufsschluessel;
  }

  public void setKandidaturBerufsschluessel(@Nullable String kandidaturBerufsschluessel) {
    this.kandidaturBerufsschluessel = kandidaturBerufsschluessel;
  }

  @Override
  public boolean isEinzelbewerber() {
    return isDirektkandidat() && !hasGruppeSchluessel();
  }

  @Override
  public boolean isErsatzkandidatur() {
    return false; // in diesem Format nicht unterstützt
  }

  public Geschlecht getKandidaturGeschlecht() {
    return kandidaturGeschlecht;
  }

  public void setKandidaturGeschlecht(Geschlecht kandidaturGeschlecht) {
    this.kandidaturGeschlecht = kandidaturGeschlecht;
  }

  @Override
  @Nullable
  public Date getKandidaturGeburtsdatum(Locale locale) throws MappingException {
    return getDateFromString(getKandidaturGeburtsdatumAsString(), GEBURTSDATUM_FORMAT_LONG, GEBURTSDATUM_FORMAT_SHORT, locale);
  }

  @Override
  public void setKandidaturGeburtsdatum(@Nullable Date date, Locale locale) {
    setKandidaturGeburtsdatumAsString(formatDate(GEBURTSDATUM_FORMAT_LONG, date, locale));
  }

  public void setKandidaturGeburtsjahr(@Nullable Date date, Locale locale) {
    setKandidaturGeburtsdatumAsString(formatDate(GEBURTSDATUM_FORMAT_SHORT, date, locale));
  }

  public String getKandidaturGeburtsdatumAsString() {
    return kandidaturGeburtsdatumAsString;
  }

  public void setKandidaturGeburtsdatumAsString(@Nullable String kandidaturGeburtsdatumAsString) {
    this.kandidaturGeburtsdatumAsString = kandidaturGeburtsdatumAsString;
  }

  public String getKandidaturGeburtsort() {
    return kandidaturGeburtsort;
  }

  public void setKandidaturGeburtsort(String kandidaturGeburtsort) {
    this.kandidaturGeburtsort = kandidaturGeburtsort;
  }

  public String getKandidaturEhrenamt() {
    return kandidaturEhrenamt;
  }

  public void setKandidaturEhrenamt(@Nullable String kandidaturEhrenamt) {
    this.kandidaturEhrenamt = kandidaturEhrenamt;
  }

  public String getKandidaturKuenstlername() {
    return kandidaturKuenstlername;
  }

  public void setKandidaturKuenstlername(@Nullable String kandidaturKuenstlername) {
    this.kandidaturKuenstlername = kandidaturKuenstlername;
  }

  public String getKandidaturOrdensname() {
    return kandidaturOrdensname;
  }

  public void setKandidaturOrdensname(@Nullable String kandidaturOrdensname) {
    this.kandidaturOrdensname = kandidaturOrdensname;
  }

  public String getKandidaturAnschriftStrasse() {
    return kandidaturAnschriftStrasse;
  }

  public void setKandidaturAnschriftStrasse(@Nullable String kandidaturAnschriftStrasse) {
    this.kandidaturAnschriftStrasse = kandidaturAnschriftStrasse;
  }

  public String getKandidaturAnschriftHausnummer() {
    return kandidaturAnschriftHausnummer;
  }

  public void setKandidaturAnschriftHausnummer(@Nullable String kandidaturAnschriftHausnummer) {
    this.kandidaturAnschriftHausnummer = kandidaturAnschriftHausnummer;
  }

  public String getKandidaturAnschriftPLZ() {
    return kandidaturAnschriftPLZ;
  }

  public void setKandidaturAnschriftPLZ(@Nullable String kandidaturAnschriftPLZ) {
    this.kandidaturAnschriftPLZ = kandidaturAnschriftPLZ;
  }

  public String getKandidaturAnschriftOrt() {
    return kandidaturAnschriftOrt;
  }

  public void setKandidaturAnschriftOrt(@Nullable String kandidaturAnschriftOrt) {
    this.kandidaturAnschriftOrt = kandidaturAnschriftOrt;
  }

  public String getKandidaturAnschriftOrtsteil() {
    return kandidaturAnschriftOrtsteil;
  }

  public void setKandidaturAnschriftOrtsteil(String kandidaturAnschriftOrtsteil) {
    this.kandidaturAnschriftOrtsteil = kandidaturAnschriftOrtsteil;
  }

  @Override
  public boolean hasKandidaturDublette() {
    return hasKandidaturDubletteGebietsart() || hasKandidaturDubletteGebietsnummer() || hasKandidaturDubletteGruppeSchluessel() || hasKandidaturDubletteListenposition();
  }

  public boolean hasKandidaturDubletteGebietsart() {
    return getKandidaturDubletteGebietsart() != null;
  }

  @Override
  public String getKandidaturDubletteGebietsart() {
    return kandidaturDubletteGebietsart;
  }

  public void setKandidaturDubletteGebietsart(String kandidaturDubletteGebietsart) {
    this.kandidaturDubletteGebietsart = kandidaturDubletteGebietsart;
  }

  public boolean hasKandidaturDubletteGebietsnummer() {
    return getKandidaturDubletteGebietsnummer() != null;
  }

  @Override
  public String getKandidaturDubletteGebietsnummer() {
    return kandidaturDubletteGebietsnummer;
  }

  public void setKandidaturDubletteGebietsnummer(String kandidaturDubletteGebietsnummer) {
    this.kandidaturDubletteGebietsnummer = kandidaturDubletteGebietsnummer;
  }

  @Override
  public boolean hasKandidaturDubletteGruppeSchluessel() {
    return getKandidaturDubletteGruppeSchluessel() != null;
  }

  @Override
  public String getKandidaturDubletteGruppeSchluessel() {
    return kandidaturDubletteGruppeSchluessel;
  }

  public void setKandidaturDubletteGruppeSchluessel(String kandidaturDubletteGruppeSchluessel) {
    this.kandidaturDubletteGruppeSchluessel = kandidaturDubletteGruppeSchluessel;
  }

  @Override
  public boolean hasKandidaturDubletteListenposition() {
    return getKandidaturDubletteListenposition() != null;
  }

  @Override
  public Long getKandidaturDubletteListenposition() {
    return kandidaturDubletteListenposition;
  }

  public void setKandidaturDubletteListenposition(@Nullable Long kandidaturDubletteListenposition) {
    this.kandidaturDubletteListenposition = kandidaturDubletteListenposition;
  }

  public Long getWahlvorschlagPositionVorgegeben() {
    return wahlvorschlagPositionVorgegeben;
  }

  public void setWahlvorschlagPositionVorgegeben(Long wahlvorschlagPositionVorgegeben) {
    this.wahlvorschlagPositionVorgegeben = wahlvorschlagPositionVorgegeben;
  }

  public Long getWahlvorschlagPositionRelativ() {
    return wahlvorschlagPositionRelativ;
  }

  public void setWahlvorschlagPositionRelativ(Long wahlvorschlagPositionRelativ) {
    this.wahlvorschlagPositionRelativ = wahlvorschlagPositionRelativ;
  }

  public Long getWahlvorschlagPositionEingereicht() {
    return wahlvorschlagPositionEingereicht;
  }

  public void setWahlvorschlagPositionEingereicht(Long wahlvorschlagPositionEingereicht) {
    this.wahlvorschlagPositionEingereicht = wahlvorschlagPositionEingereicht;
  }

  public String getKandidaturAnschriftHausnummerzusatz() {
    return kandidaturAnschriftHausnummerzusatz;
  }

  public void setKandidaturAnschriftHausnummerzusatz(String kandidaturAnschriftHausnummerzusatz) {
    this.kandidaturAnschriftHausnummerzusatz = kandidaturAnschriftHausnummerzusatz;
  }

  public String getKandidaturAnschriftWohnungsnummer() {
    return kandidaturAnschriftWohnungsnummer;
  }

  public void setKandidaturAnschriftWohnungsnummer(String kandidaturAnschriftWohnungsnummer) {
    this.kandidaturAnschriftWohnungsnummer = kandidaturAnschriftWohnungsnummer;
  }

  public String getKandidaturAnschriftZustellanweisung() {
    return kandidaturAnschriftZustellanweisung;
  }

  public void setKandidaturAnschriftZustellanweisung(String kandidaturAnschriftZustellanweisung) {
    this.kandidaturAnschriftZustellanweisung = kandidaturAnschriftZustellanweisung;
  }

  public String getKandidaturAnschriftArt() {
    return kandidaturAnschriftArt;
  }

  public void setKandidaturAnschriftArt(String kandidaturAnschriftArt) {
    this.kandidaturAnschriftArt = kandidaturAnschriftArt;
  }

  public boolean hasKandidaturAnschriftArt() {
    return kandidaturAnschriftArt != null;
  }

  @Override
  public String getGewaehltVorperiode() {
    return gewaehltVorperiode;
  }

  @Nullable
  @Override
  public String getExterneId() {
    return null;
  }

  public void setGewaehltVorperiode(String gewaehltVorperiode) {
    this.gewaehltVorperiode = gewaehltVorperiode;
  }

  @Override
  public String getKandidaturNamensbestandteile() {
    return kandidaturNamensbestandteile;
  }

  @Override
  public void setKandidaturNamensbestandteile(String kandidaturNamensbestandteile) {
    this.kandidaturNamensbestandteile = kandidaturNamensbestandteile;
  }

  public String getKandidaturErreichbarkeitsanschriftStrasse() {
    return kandidaturErreichbarkeitsanschriftStrasse;
  }

  public void setKandidaturErreichbarkeitsanschriftStrasse(String kandidaturErreichbarkeitsanschriftStrasse) {
    this.kandidaturErreichbarkeitsanschriftStrasse = kandidaturErreichbarkeitsanschriftStrasse;
  }

  public String getKandidaturErreichbarkeitsanschriftHausnummer() {
    return kandidaturErreichbarkeitsanschriftHausnummer;
  }

  public void setKandidaturErreichbarkeitsanschriftHausnummer(String kandidaturErreichbarkeitsanschriftHausnummer) {
    this.kandidaturErreichbarkeitsanschriftHausnummer = kandidaturErreichbarkeitsanschriftHausnummer;
  }

  public String getKandidaturErreichbarkeitsanschriftPLZ() {
    return kandidaturErreichbarkeitsanschriftPLZ;
  }

  public void setKandidaturErreichbarkeitsanschriftPLZ(String kandidaturErreichbarkeitsanschriftPLZ) {
    this.kandidaturErreichbarkeitsanschriftPLZ = kandidaturErreichbarkeitsanschriftPLZ;
  }

  public String getKandidaturErreichbarkeitsanschriftOrt() {
    return kandidaturErreichbarkeitsanschriftOrt;
  }

  public void setKandidaturErreichbarkeitsanschriftOrt(String kandidaturErreichbarkeitsanschriftOrt) {
    this.kandidaturErreichbarkeitsanschriftOrt = kandidaturErreichbarkeitsanschriftOrt;
  }

  public String getKandidaturErreichbarkeitsanschriftHausnummerzusatz() {
    return kandidaturErreichbarkeitsanschriftHausnummerzusatz;
  }

  public void setKandidaturErreichbarkeitsanschriftHausnummerzusatz(String kandidaturErreichbarkeitsanschriftHausnummerzusatz) {
    this.kandidaturErreichbarkeitsanschriftHausnummerzusatz = kandidaturErreichbarkeitsanschriftHausnummerzusatz;
  }

  public String getKandidaturErreichbarkeitsanschriftWohnungsnummer() {
    return kandidaturErreichbarkeitsanschriftWohnungsnummer;
  }

  public void setKandidaturErreichbarkeitsanschriftWohnungsnummer(String kandidaturErreichbarkeitsanschriftWohnungsnummer) {
    this.kandidaturErreichbarkeitsanschriftWohnungsnummer = kandidaturErreichbarkeitsanschriftWohnungsnummer;
  }

  public String getKandidaturErreichbarkeitsanschriftOrtsteil() {
    return kandidaturErreichbarkeitsanschriftOrtsteil;
  }

  public void setKandidaturErreichbarkeitsanschriftOrtsteil(String kandidaturErreichbarkeitsanschriftOrtsteil) {
    this.kandidaturErreichbarkeitsanschriftOrtsteil = kandidaturErreichbarkeitsanschriftOrtsteil;
  }

  public String getKandidaturErreichbarkeitsanschriftZustellanweisung() {
    return kandidaturErreichbarkeitsanschriftZustellanweisung;
  }

  public void setKandidaturErreichbarkeitsanschriftZustellanweisung(String kandidaturErreichbarkeitsanschriftZustellanweisung) {
    this.kandidaturErreichbarkeitsanschriftZustellanweisung = kandidaturErreichbarkeitsanschriftZustellanweisung;
  }

  public List<String> getKandidaturStaatsangehoerigkeiten() {
    return kandidaturStaatsangehoerigkeiten;
  }

  public void setKandidaturStaatsangehoerigkeiten(List<String> kandidaturStaatsangehoerigkeiten) {
    this.kandidaturStaatsangehoerigkeiten = kandidaturStaatsangehoerigkeiten;
  }
}
