
package de.ivu.elect.interfaces.core;

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

@XmlAccessorType(XmlAccessType.FIELD)
public class Listenkandidatur extends Kandidatur {

  private static final long serialVersionUID = 1L;

  @Deprecated // war mal die Stimmzettelposition, jetzt eingereichtePosition, vorgegebenePosition und relativePosition verwenden
  @XmlElement(required = false)
  private long listenposition;

  @XmlElement(required = true)
  private WahlvorschlagReferenz liste;

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

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

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

  @XmlElement(required = false)
  private Long vorgegebenePosition;

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

  @Deprecated
  public long getListenposition() {
    return listenposition;
  }

  @Deprecated
  public void setListenposition(long listenposition) {
    this.listenposition = listenposition;
  }

  public WahlvorschlagReferenz getListe() {
    return liste;
  }

  public void setListe(WahlvorschlagReferenz liste) {
    this.liste = liste;
  }

  public Long getAnzahlNennungen() {
    return anzahlNennungen;
  }

  public void setAnzahlNennungen(Long anzahlNennungen) {
    this.anzahlNennungen = anzahlNennungen;
  }

  public ListenkandidaturArt getListenkandidaturArt() {
    return listenkandidaturArt;
  }

  public void setListenkandidaturArt(ListenkandidaturArt listenkandidaturArt) {
    this.listenkandidaturArt = listenkandidaturArt;
  }

  public Long getEingereichtePosition() {
    return eingereichtePosition;
  }

  public void setEingereichtePosition(Long eingereichtePosition) {
    this.eingereichtePosition = eingereichtePosition;
  }

  public Long getVorgegebenePosition() {
    return vorgegebenePosition;
  }

  public void setVorgegebenePosition(Long vorgegebenePosition) {
    this.vorgegebenePosition = vorgegebenePosition;
  }

  public Long getRelativePosition() {
    return relativePosition;
  }

  public void setRelativePosition(Long relativePosition) {
    this.relativePosition = relativePosition;
  }

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

    Listenkandidatur that = (Listenkandidatur) o;

    if (listenposition != that.listenposition) return false;
    if (liste != null ? !liste.equals(that.liste) : that.liste != null) return false;
    return listenkandidaturArt == that.listenkandidaturArt;
  }

  @Override
  public int hashCode() {
    int result = (int) (listenposition ^ (listenposition >>> 32));
    result = 31 * result + (liste != null ? liste.hashCode() : 0);
    result = 31 * result + (listenkandidaturArt != null ? listenkandidaturArt.hashCode() : 0);
    return result;
  }
}
