
package de.ivu.elect.interfaces.core;

import java.io.Serializable;
import java.util.Date;

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

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

  private static final long serialVersionUID = 1L;

  @XmlElement(required = true)
  private WahlvorschlagReferenz wahlvorschlagReferenz;

  // required=false für Abwärtskompatibilität
  @XmlElement(required = false)
  private String kennwort;

  // required=false für Abwärtskompatibilität
  @XmlElement(required = false)
  private String kurzname;

  @XmlElement(required = false)
  private String zusatzbezeichnung;

  @Deprecated
  @XmlElement(required = false)
  private boolean zugelassen;

  // required=false nur für Abwärtskompatibilität (ELECT-2591)
  @XmlElement(required = false)
  private WahlvorschlagStatus wahlvorschlagStatus;

  // required=false nur für Abwärtskompatibilität
  @XmlElement(required = false)
  private Date zeitpunktDerEinreichung;

  // required=false nur für Abwärtskompatibilität
  @XmlElement(required = false)
  private Date unterstuetzerErfassbarAb;

  // required=false nur für Abwärtskompatibilität
  @XmlElement(required = false)
  private Long anzahlUnterstuetzerExternGueltig;

  // required=false nur für Abwärtskompatibilität
  @XmlElement(required = false)
  private Long anzahlUnterstuetzerExternUngueltig;

  public Wahlvorschlag() {
    super();
  }

  public WahlvorschlagReferenz getWahlvorschlagReferenz() {
    return wahlvorschlagReferenz;
  }

  public void setWahlvorschlagReferenz(WahlvorschlagReferenz wahlvorschlagReferenz) {
    this.wahlvorschlagReferenz = wahlvorschlagReferenz;
  }

  public String getKennwort() {
    return kennwort;
  }

  public void setKennwort(String kennwort) {
    this.kennwort = kennwort;
  }

  public String getKurzname() {
    return kurzname;
  }

  public void setKurzname(String kurzname) {
    this.kurzname = kurzname;
  }

  @Deprecated
  public boolean isZugelassen() {
    return zugelassen;
  }

  @Deprecated
  public void setZugelassen(boolean zugelassen) {
    this.zugelassen = zugelassen;
  }

  public WahlvorschlagStatus getWahlvorschlagStatus() {
    return wahlvorschlagStatus;
  }

  public void setWahlvorschlagStatus(WahlvorschlagStatus wahlvorschlagStatus) {
    this.wahlvorschlagStatus = wahlvorschlagStatus;
  }

  public Date getZeitpunktDerEinreichung() {
    return zeitpunktDerEinreichung;
  }

  public void setZeitpunktDerEinreichung(Date zeitpunktDerEinreichung) {
    this.zeitpunktDerEinreichung = zeitpunktDerEinreichung;
  }

  public Date getUnterstuetzerErfassbarAb() {
    return unterstuetzerErfassbarAb;
  }

  public void setUnterstuetzerErfassbarAb(Date unterstuetzerErfassbarAb) {
    this.unterstuetzerErfassbarAb = unterstuetzerErfassbarAb;
  }

  public Long getAnzahlUnterstuetzerExternGueltig() {
    return anzahlUnterstuetzerExternGueltig;
  }

  public void setAnzahlUnterstuetzerExternGueltig(Long anzahlUnterstuetzerExternGueltig) {
    this.anzahlUnterstuetzerExternGueltig = anzahlUnterstuetzerExternGueltig;
  }

  public Long getAnzahlUnterstuetzerExternUngueltig() {
    return anzahlUnterstuetzerExternUngueltig;
  }

  public void setAnzahlUnterstuetzerExternUngueltig(Long anzahlUnterstuetzerExternUngueltig) {
    this.anzahlUnterstuetzerExternUngueltig = anzahlUnterstuetzerExternUngueltig;
  }

  public String getZusatzbezeichnung() {
    return zusatzbezeichnung;
  }

  public void setZusatzbezeichnung(String zusatzbezeichnung) {
    this.zusatzbezeichnung = zusatzbezeichnung;
  }

  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }

    if (!(o instanceof Wahlvorschlag)) {
      return false;
    }

    Wahlvorschlag that = (Wahlvorschlag) o;

    if (!wahlvorschlagReferenz.equals(that.wahlvorschlagReferenz)) {
      return false;
    }

    return true;
  }

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