
package de.ivu.elect.interfaces.core;

import java.io.Serializable;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;

@XmlAccessorType(XmlAccessType.FIELD)
public class Gebiet implements Serializable {

  private static final long serialVersionUID = 1L;

  @XmlElement(required = true)
  private GebietReferenz gebietReferenz;

  @XmlElement(required = false)
  private GebietReferenz uebergeordnetesGebiet;

  @XmlElement(required = false)
  private String nummerBezirk; // ELECTKOM-113

  @XmlElement(required = false)
  private String name;

  @XmlElement(required = false)
  private String kuerzel;

  @XmlElement(required = false)
  private String externeId;

  @XmlElement(required = false)
  private String externeIdSalt; // Für WES Prüfziffer-Hash (salt)

  @XmlElement(required = true)
  private String gebietsinformationCustomData;

  @XmlElement(required = false)
  private Long anzahlStimmenProWaehler;

  @XmlElement(required = false)
  private Long anzahlSitze;

  @XmlElement(required = true)
  private long position;

  @XmlAttribute(required = false)
  private boolean auswahlbezirk;

  @XmlAttribute(required = false)
  private boolean sonderstimmbezirk;

  @XmlAttribute(required = false)
  private boolean beweglicherWahlvorstand;

  @XmlAttribute(required = false)
  private boolean umfragebezirk;

  @XmlAttribute(required = false)
  private boolean wahlbeteiligungsbezirk;

  @XmlAttribute(required = false)
  private Long anzahlErforderlicherUnterstuetzer;

  @XmlElement(required = false)
  private String rolleEinsehen;

  @XmlElement(required = false)
  private String rolleBearbeiten;

  @XmlElement(required = false)
  private Wahldurchfuehrungsgebiet wahldurchfuehrungsgebiet;

  @XmlElement(required = false)
  private Anschrift anschrift;

  @XmlElement(required = false)
  private Person ansprechpartner;

  @XmlElement(required = false)
  private Long verantwortlicherMandant;

  @XmlElement(required = false)
  private String briefwahlbezirkNummer;

  @XmlElement(required = false)
  private Long anzahlWahlberechtigteVorlaeufig;

  @XmlElement(required = false)
  private String verantwortlicherEmpfaenger;

  public GebietReferenz getUebergeordnetesGebiet() {
    return uebergeordnetesGebiet;
  }

  public void setUebergeordnetesGebiet(GebietReferenz uebergeordnetesGebiet) {
    this.uebergeordnetesGebiet = uebergeordnetesGebiet;
  }

  public GebietReferenz getGebietReferenz() {
    return gebietReferenz;
  }

  public void setGebietReferenz(GebietReferenz gebietReferenz) {
    this.gebietReferenz = gebietReferenz;
  }

  public String getName() {
    return name;
  }

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

  public String getKuerzel() {
    return kuerzel;
  }

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

  public String getExterneId() {
    return externeId;
  }

  public void setExterneId(String externeId) {
    this.externeId = externeId;
  }

  public String getExterneIdSalt() {
    return externeIdSalt;
  }

  public void setExterneIdSalt(String externeIdSalt) {
    this.externeIdSalt = externeIdSalt;
  }

  public String getGebietsinformationCustomData() {
    return gebietsinformationCustomData;
  }

  public void setGebietsinformationCustomData(String gebietsinformationCustomData) {
    this.gebietsinformationCustomData = gebietsinformationCustomData;
  }

  public Long getAnzahlStimmenProWaehler() {
    return anzahlStimmenProWaehler;
  }

  public void setAnzahlStimmenProWaehler(Long anzahlStimmenProWaehler) {
    this.anzahlStimmenProWaehler = anzahlStimmenProWaehler;
  }

  public Long getAnzahlSitze() {
    return anzahlSitze;
  }

  public void setAnzahlSitze(Long anzahlSitze) {
    this.anzahlSitze = anzahlSitze;
  }

  public long getPosition() {
    return position;
  }

  public void setPosition(long position) {
    this.position = position;
  }

  public boolean getAuswahlbezirk() {
    return auswahlbezirk;
  }

  public void setAuswahlbezirk(boolean auswahlbezirk) {
    this.auswahlbezirk = auswahlbezirk;
  }

  public boolean getSonderstimmbezirk() {
    return sonderstimmbezirk;
  }

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

  public boolean getBeweglicherWahlvorstand() {
    return beweglicherWahlvorstand;
  }

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

  public boolean getUmfragebezirk() {
    return umfragebezirk;
  }

  public void setUmfragebezirk(boolean umfragebezirk) {
    this.umfragebezirk = umfragebezirk;
  }

  public boolean getWahlbeteiligungsbezirk() {
    return wahlbeteiligungsbezirk;
  }

  public void setWahlbeteiligungsbezirk(boolean wahlbeteiligungsbezirk) {
    this.wahlbeteiligungsbezirk = wahlbeteiligungsbezirk;
  }

  public Long getAnzahlErforderlicherUnterstuetzer() {
    return anzahlErforderlicherUnterstuetzer;
  }

  public void setAnzahlErforderlicherUnterstuetzer(Long anzahlErforderlicherUnterstuetzer) {
    this.anzahlErforderlicherUnterstuetzer = anzahlErforderlicherUnterstuetzer;
  }

  public String getRolleEinsehen() {
    return rolleEinsehen;
  }

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

  public String getRolleBearbeiten() {
    return rolleBearbeiten;
  }

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

  public Wahldurchfuehrungsgebiet getWahldurchfuehrungsgebiet() {
    return wahldurchfuehrungsgebiet;
  }

  public void setWahldurchfuehrungsgebiet(Wahldurchfuehrungsgebiet wahldurchfuehrungsgebiet) {
    this.wahldurchfuehrungsgebiet = wahldurchfuehrungsgebiet;
  }

  public Anschrift getAnschrift() {
    return anschrift;
  }

  public void setAnschrift(Anschrift anschrift) {
    this.anschrift = anschrift;
  }

  public Person getAnsprechpartner() {
    return ansprechpartner;
  }

  public void setAnsprechpartner(Person ansprechpartner) {
    this.ansprechpartner = ansprechpartner;
  }

  public Long getVerantwortlicherMandant() {
    return verantwortlicherMandant;
  }

  public void setVerantwortlicherMandant(Long verantwortlicherMandant) {
    this.verantwortlicherMandant = verantwortlicherMandant;
  }

  public String getNummerBezirk() {
    return nummerBezirk;
  }

  public void setNummerBezirk(String nummerBezirk) {
    this.nummerBezirk = nummerBezirk;
  }

  public String getBriefwahlbezirkNummer() {
    return briefwahlbezirkNummer;
  }

  public void setBriefwahlbezirkNummer(String briefwahlbezirkNummer) {
    this.briefwahlbezirkNummer = briefwahlbezirkNummer;
  }

  public Long getAnzahlWahlberechtigteVorlaeufig() {
    return anzahlWahlberechtigteVorlaeufig;
  }

  public void setAnzahlWahlberechtigteVorlaeufig(Long anzahlWahlberechtigteVorlaeufig) {
    this.anzahlWahlberechtigteVorlaeufig = anzahlWahlberechtigteVorlaeufig;
  }

  public String getVerantwortlicherEmpfaenger() {
    return verantwortlicherEmpfaenger;
  }

  public void setVerantwortlicherEmpfaenger(String verantwortlicherEmpfaenger) {
    this.verantwortlicherEmpfaenger = verantwortlicherEmpfaenger;
  }

  @Override
  public int hashCode() {
    return gebietReferenz.hashCode();
  }

  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }

    Gebiet gebiet = (Gebiet) o;

    if (!gebietReferenz.equals(gebiet.gebietReferenz)) {
      return false;
    }

    return true;
  }

  @Override
  public String toString() {
    return "Gebiet{" + "gebietReferenz=" + gebietReferenz + ", name='" + name + '\'' + ", position=" + position + ", kuerzel='" + kuerzel + '\'' + ", nummerBezirk='" + nummerBezirk + '\'' + '}';
  }
}
