
package de.ivu.elect.exchange.gebietsbaum.csv;

import javax.annotation.Nullable;

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

import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.exchange.gebietsbaum.AbstractGebietDTO;
import de.ivu.jsefa.CsvHeader;

@CsvDataType
public abstract class AbstractGebietCsvDTO extends AbstractGebietDTO {

  @CsvField(pos = 1)
  @CsvHeader("Gebietsart")
  private String gebietsartName;

  @CsvField(pos = 2)
  @CsvHeader("Nummer des Gebietes")
  private String nummer;

  @CsvField(pos = 3)
  @CsvHeader("Name des Gebietes")
  private String name;

  @CsvField(pos = 4)
  @CsvHeader("Kürzel")
  private String kuerzel;

  @CsvField(pos = 5)
  @CsvHeader("Gebietsart des übergeordneten Gebietes")
  private String uebergeordnetesGebietGebietsartName;

  @CsvField(pos = 6)
  @CsvHeader("Nummer des übergeordneten Gebietes")
  private String nummerUebergeordnetesGebiet;

  @CsvField(pos = 7)
  @CsvHeader("Wahlbeteiligungsbezirk")
  @Nullable
  private Boolean wahlbeteiligungsbezirk /* ELECTKOM-447 überschreibt super-Konstruktor = Boolean.FALSE */;

  @CsvField(pos = 8)
  @CsvHeader("Umfragebezirk")
  @Nullable
  private Boolean umfragebezirk /* ELECTKOM-447 überschreibt super-Konstruktor = Boolean.FALSE */;

  @CsvField(pos = 9)
  @CsvHeader("Auswahlbezirk")
  @Nullable
  private Boolean auswahlbezirk /* ELECTKOM-447 überschreibt super-Konstruktor = Boolean.FALSE */;

  @CsvField(pos = 10)
  @CsvHeader("Sonderstimmbezirk")
  @Nullable
  private Boolean sonderstimmbezirk /* ELECTKOM-447 überschreibt super-Konstruktor = Boolean.FALSE */;

  @CsvField(pos = 11)
  @CsvHeader("Beweglicher Wahlvorstand")
  @Nullable
  private Boolean beweglicherWahlvorstand /* ELECTKOM-447 überschreibt super-Konstruktor = Boolean.FALSE */;

  @CsvField(pos = 12)
  @CsvHeader("Anschrift Straße")
  private String anschriftStrasse;

  @CsvField(pos = 13)
  @CsvHeader("Anschrift Hausnummer")
  private String anschriftHausnummer;

  @CsvField(pos = 14)
  @CsvHeader("Anschrift Hausnummerzusatz")
  private String anschriftHausnummerzusatz;

  @CsvField(pos = 15)
  @CsvHeader("Anschrift Postleitzahl")
  private String anschriftPlz;

  @CsvField(pos = 16)
  @CsvHeader("Anschrift Ort")
  private String anschriftOrt;

  // TODO ELECT-8509
  //  @CsvField(pos = ??)
  //  @CsvHeader("Anschrift Ortsteil")
  private String anschriftOrtsteil;

  @CsvField(pos = 17)
  @CsvHeader("Anschrift Adresszusatz")
  private String anschriftZustellanweisung;

  @CsvField(pos = 18)
  @CsvHeader("Ansprechpartner Anrede")
  private String ansprechpartnerAnrede;

  @CsvField(pos = 19)
  @CsvHeader("Ansprechpartner Familienname")
  private String ansprechpartnerFamilienname;

  @CsvField(pos = 20)
  @CsvHeader("Ansprechpartner Vorname")
  private String ansprechpartnerVorname;

  @CsvField(pos = 21)
  @CsvHeader("Ansprechpartner Funktion")
  private String ansprechpartnerBerufUnformatiert;

  @CsvField(pos = 22)
  @CsvHeader("Ansprechpartner Telefonnummer (mobil)")
  private String ansprechpartnerTelefonnummerMobil;

  @CsvField(pos = 23)
  @CsvHeader("Ansprechpartner Telefonnummer")
  private String ansprechpartnerTelefonnummerFestnetz;

  @CsvField(pos = 24)
  @CsvHeader("Bemerkung")
  private String bemerkung;

  @CsvField(pos = 25)
  @CsvHeader("Rolle für Einsehen")
  private String rolleEinsehen;

  @CsvField(pos = 26)
  @CsvHeader("Rolle für Bearbeiten")
  private String rolleBearbeiten;

  public AbstractGebietCsvDTO() {
    super();
  }

  public AbstractGebietCsvDTO(Gebiet gebiet) {
    super(gebiet, gebiet.getUebergeordnetesGebiet());
  }

  @Override
  @Nullable
  public Boolean getWahlbeteiligungsbezirk() {
    return wahlbeteiligungsbezirk;
  }

  @Override
  public void setWahlbeteiligungsbezirk(Boolean wahlbeteiligungsbezirk) {
    this.wahlbeteiligungsbezirk = wahlbeteiligungsbezirk;
  }

  @Override
  @Nullable
  public Boolean getUmfragebezirk() {
    return umfragebezirk;
  }

  @Override
  public void setUmfragebezirk(Boolean umfragebezirk) {
    this.umfragebezirk = umfragebezirk;
  }

  @Override
  @Nullable
  public Boolean getAuswahlbezirk() {
    return auswahlbezirk;
  }

  @Override
  public void setAuswahlbezirk(Boolean auswahlbezirk) {
    this.auswahlbezirk = auswahlbezirk;
  }

  @Override
  public String getNummer() {
    return nummer;
  }

  @Override
  public void setNummer(String nummer) {
    this.nummer = nummer;
  }

  @Override
  public String getName() {
    return name;
  }

  @Override
  public void setName(String name) {
    this.name = name;
  }

  @Override
  public String getUebergeordnetesGebietNummer() {
    return nummerUebergeordnetesGebiet;
  }

  @Override
  public void setUebergeordnetesGebietNummer(String nummerUebergeordnetesGebiet) {
    this.nummerUebergeordnetesGebiet = nummerUebergeordnetesGebiet;
  }

  @Override
  public void setGebietsartName(String gebietsartName) {
    this.gebietsartName = gebietsartName;
  }

  @Override
  public String getGebietsartName() {
    return gebietsartName;
  }

  @Override
  public String getUebergeordnetesGebietGebietsartName() {
    return uebergeordnetesGebietGebietsartName;
  }

  @Override
  public void setUebergeordnetesGebietGebietsartName(String uebergeordnetesGebietGebietsartName) {
    this.uebergeordnetesGebietGebietsartName = uebergeordnetesGebietGebietsartName;
  }

  @Override
  public String getKuerzel() {
    return kuerzel;
  }

  @Override
  public void setKuerzel(String kuerzel) {
    this.kuerzel = kuerzel;
  }

  @Override
  public boolean getSonderstimmbezirk() {
    if (sonderstimmbezirk == null) {
      return false;
    }
    return sonderstimmbezirk;
  }

  @Override
  public void setSonderstimmbezirk(boolean sonderstimmbezirk) {
    this.sonderstimmbezirk = sonderstimmbezirk;
  }

  @Override
  public boolean getBeweglicherWahlvorstand() {
    if (beweglicherWahlvorstand==null){
      return false;
    }
    return beweglicherWahlvorstand;
  }

  @Override
  public void setBeweglicherWahlvorstand(boolean beweglicherWahlvorstand) {
    this.beweglicherWahlvorstand = beweglicherWahlvorstand;
  }

  @Override
  public String getAnschriftStrasse() {
    return anschriftStrasse;
  }

  @Override
  public void setAnschriftStrasse(String strasse) {
    anschriftStrasse = strasse;
  }

  @Override
  public String getAnschriftHausnummer() {
    return anschriftHausnummer;
  }

  @Override
  public void setAnschriftHausnummer(String hausnummer) {
    anschriftHausnummer = hausnummer;
  }

  @Override
  public String getAnschriftHausnummerzusatz() {
    return anschriftHausnummerzusatz;
  }

  @Override
  public void setAnschriftHausnummerzusatz(String hausnummerzusatz) {
    anschriftHausnummerzusatz = hausnummerzusatz;
  }

  @Override
  public String getAnschriftPlz() {
    return anschriftPlz;
  }

  @Override
  public void setAnschriftPlz(String plz) {
    anschriftPlz = plz;
  }

  @Override
  public String getAnschriftOrt() {
    return anschriftOrt;
  }

  @Override
  public void setAnschriftOrt(String ort) {
    anschriftOrt = ort;
  }

  @Override
  public String getAnschriftOrtsteil() {
    return anschriftOrtsteil;
  }

  @Override
  public void setAnschriftOrtsteil(String ortsteil) {
    this.anschriftOrtsteil = ortsteil;
  }

  @Override
  public String getAnschriftZustellanweisung() {
    return anschriftZustellanweisung;
  }

  @Override
  public void setAnschriftZustellanweisung(String zustellanweisung) {
    anschriftZustellanweisung = zustellanweisung;
  }

  @Override
  public String getAnsprechpartnerTelefonnummerFestnetz() {
    return ansprechpartnerTelefonnummerFestnetz;
  }

  @Override
  public void setAnsprechpartnerTelefonnummerFestnetz(String telefonnummerFestnetz) {
    ansprechpartnerTelefonnummerFestnetz = telefonnummerFestnetz;
  }

  @Override
  public String getAnsprechpartnerBerufUnformatiert() {
    return ansprechpartnerBerufUnformatiert;
  }

  @Override
  public void setAnsprechpartnerBerufUnformatiert(String berufUnformatiert) {
    ansprechpartnerBerufUnformatiert = berufUnformatiert;
  }

  @Override
  public String getAnsprechpartnerTelefonnummerMobil() {
    return ansprechpartnerTelefonnummerMobil;
  }

  @Override
  public void setAnsprechpartnerTelefonnummerMobil(String telefonnummerMobil) {
    ansprechpartnerTelefonnummerMobil = telefonnummerMobil;
  }

  @Override
  public String getAnsprechpartnerVorname() {
    return ansprechpartnerVorname;
  }

  @Override
  public void setAnsprechpartnerVorname(String vorname) {
    ansprechpartnerVorname = vorname;
  }

  @Override
  public String getAnsprechpartnerFamilienname() {
    return ansprechpartnerFamilienname;
  }

  @Override
  public void setAnsprechpartnerFamilienname(String familienname) {
    ansprechpartnerFamilienname = familienname;
  }

  @Override
  public String getAnsprechpartnerAnrede() {
    return ansprechpartnerAnrede;
  }

  @Override
  public void setAnsprechpartnerAnrede(String anrede) {
    ansprechpartnerAnrede = anrede;
  }

  @Override
  public String getBemerkung() {
    return bemerkung;
  }

  @Override
  public void setBemerkung(String bemerkung) {
    this.bemerkung = bemerkung;
  }

  @Override
  public String getRolleEinsehen() {
    return rolleEinsehen;
  }

  @Override
  public void setRolleEinsehen(String rolleEinsehen) {
    this.rolleEinsehen = rolleEinsehen;
  }

  @Override
  public String getRolleBearbeiten() {
    return rolleBearbeiten;
  }

  @Override
  public void setRolleBearbeiten(String rolleBearbeiten) {
    this.rolleBearbeiten = rolleBearbeiten;
  }
}
