package de.ivu.elect.business.stimmeingabe.entity;

import de.ivu.elect.business.ergebnis.entity.Stimmenart;
import de.ivu.elect.business.gebietsbaum.entity.EntityMitGebiet;
import de.ivu.elect.business.gebietsbaum.entity.GebietPK;
import de.ivu.elect.business.gebietsbaum.entity.GebietUK;
import de.ivu.elect.business.gebietsbaum.entity.Wahldurchfuehrungsgebiet;
import de.ivu.elect.business.gruppe.entity.Gruppe;
import de.ivu.elect.business.hochrechnung.entity.HochrechneralgorithmusAusfuehrbarkeitStatus;
import de.ivu.elect.jee.entity.AbstractNoPersistentEntity;

/**
 *  on 29.03.2016.
 */
public class StimmeingabeHochgerechnet extends AbstractNoPersistentEntity<GebietPK, GebietUK> implements EntityMitGebiet {

  private Long counter;

  private Wahldurchfuehrungsgebiet wahldurchfuehrungsgebiet;

  private Gruppe gruppe;

  private Stimmenart stimmenart;

  private Long anzahlVorperiode;

  private Long anzahlAktuell;

  private Long anzahlHochgerechnet;

  private Long gueltigeVorperiode;

  private Long gueltigeHochgerechhnet;

  private Long gueltigeAktuell;

  private final HochrechneralgorithmusAusfuehrbarkeitStatus hochrechneralgorithmusAusfuehrbarkeitStatus;

  public StimmeingabeHochgerechnet(Long counter, Wahldurchfuehrungsgebiet wahldurchfuehrungsgebiet, Gruppe gruppe, Stimmenart stimmenart, Long anzahlVorperiode, Long anzahlAktuell, Long anzahlHochgerechnet, Long gueltigeVorperiode, Long gueltigeHochgerechhnet, Long gueltigeAktuell, HochrechneralgorithmusAusfuehrbarkeitStatus hochrechneralgorithmusAusfuehrbarkeitStatus) {
    this.counter = counter;
    this.wahldurchfuehrungsgebiet = wahldurchfuehrungsgebiet;
    this.gruppe = gruppe;
    this.stimmenart = stimmenart;
    this.anzahlVorperiode = anzahlVorperiode;
    this.anzahlAktuell = anzahlAktuell;
    this.anzahlHochgerechnet = anzahlHochgerechnet;
    this.gueltigeVorperiode = gueltigeVorperiode;
    this.gueltigeHochgerechhnet = gueltigeHochgerechhnet;
    this.gueltigeAktuell = gueltigeAktuell;
    this.hochrechneralgorithmusAusfuehrbarkeitStatus = hochrechneralgorithmusAusfuehrbarkeitStatus;
  }

  public Long getGueltigeAktuell() {
    return gueltigeAktuell;
  }

  public void setGueltigeAktuell(Long gueltigeAktuell) {
    this.gueltigeAktuell = gueltigeAktuell;
  }

  public Long getGueltigeHochgerechhnet() {
    return gueltigeHochgerechhnet;
  }

  public void setGueltigeHochgerechhnet(Long gueltigeHochgerechhnet) {
    this.gueltigeHochgerechhnet = gueltigeHochgerechhnet;
  }

  public Long getGueltigeVorperiode() {
    return gueltigeVorperiode;
  }

  public void setGueltigeVorperiode(Long gueltigeVorperiode) {
    this.gueltigeVorperiode = gueltigeVorperiode;
  }

  public Wahldurchfuehrungsgebiet getWahldurchfuehrungsgebiet() {
    return wahldurchfuehrungsgebiet;
  }

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

  public Long getAnzahlAktuell() {
    return anzahlAktuell;
  }

  public void setAnzahlAktuell(Long anzahlAktuell) {
    this.anzahlAktuell = anzahlAktuell;
  }

  public Long getAnzahlHochgerechnet() {
    return anzahlHochgerechnet;
  }

  public void setAnzahlHochgerechnet(Long anzahlHochgerechnet) {
    this.anzahlHochgerechnet = anzahlHochgerechnet;
  }

  public Long getAnzahlVorperiode() {
    return anzahlVorperiode;
  }

  public void setAnzahlVorperiode(Long anzahlVorperiode) {
    this.anzahlVorperiode = anzahlVorperiode;
  }

  public Gruppe getGruppe() {
    return gruppe;
  }

  public void setGruppe(Gruppe gruppe) {
    this.gruppe = gruppe;
  }

  public Stimmenart getStimmenart() {
    return stimmenart;
  }

  public void setStimmenart(Stimmenart stimmenart) {
    this.stimmenart = stimmenart;
  }

  @Override
  public Long getId() {
    return counter;
  }

  @Override
  public Wahldurchfuehrungsgebiet getGebiet() {
    return wahldurchfuehrungsgebiet;
  }

  public Long getCounter() {
    return counter;
  }

  public void setCounter(Long counter) {
    this.counter = counter;
  }

  public HochrechneralgorithmusAusfuehrbarkeitStatus getHochrechneralgorithmusAusfuehrbarkeitStatus() {
    return hochrechneralgorithmusAusfuehrbarkeitStatus;
  }

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

    StimmeingabeHochgerechnet that = (StimmeingabeHochgerechnet) o;

    return getCounter() != null ? getCounter().equals(that.getCounter()) : that.getCounter() == null;

  }

  @Override
  public int hashCode() {
    return getCounter() != null ? getCounter().hashCode() : 0;
  }
}
