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

import java.io.Serializable;

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.kandidatur.entity.Direktkandidatur;
import de.ivu.elect.jee.entity.AbstractNoPersistentEntity;

/**
 *  on 28.05.2015.
 */
public class GewinnerUnterlegenerStimmendifferenzSearchResult extends AbstractNoPersistentEntity<GebietPK, GebietUK>
    implements
      KumulierteStimmen,
      Serializable {

  private static final long serialVersionUID = 1L;

  private final Wahldurchfuehrungsgebiet gebiet;
  private final Direktkandidatur erster;
  private final Long anzahlStimmenErster;
  private final Direktkandidatur zweiter;
  private final Long anzahlStimmenZweiter;
  private final Long anzahlStimmenInsgesamt;

  public GewinnerUnterlegenerStimmendifferenzSearchResult(Wahldurchfuehrungsgebiet gebiet, Direktkandidatur erster,
      Long anzahlStimmenErster, Direktkandidatur zweiter, Long anzahlStimmenZweiter, Long anzahlStimmenInsgesamt) {
    super();

    this.gebiet = gebiet;
    this.erster = erster;
    this.anzahlStimmenErster = anzahlStimmenErster;
    this.zweiter = zweiter;
    this.anzahlStimmenZweiter = anzahlStimmenZweiter;
    this.anzahlStimmenInsgesamt = anzahlStimmenInsgesamt;
  }

  @Override
  public Long getId() {
    return gebiet.getId();
  }

  @Override
  public GebietPK getPk() {
    return gebiet.getPk();
  }

  @Override
  public GebietUK getUk() {
    return gebiet.getUk();
  }

  public Long getAnzahlStimmenErster() {
    return anzahlStimmenErster;
  }

  public Long getAnzahlStimmenInsgesamt() {
    return anzahlStimmenInsgesamt;
  }

  public Long getAnzahlStimmenZweiter() {
    return anzahlStimmenZweiter;
  }

  public Direktkandidatur getErster() {
    return erster;
  }

  public Direktkandidatur getZweiter() {
    return zweiter;
  }

  public Long getDifferenzStimmenErsterZweiter() {
    return getAnzahlStimmenErster() - getAnzahlStimmenZweiter();
  }

  public Wahldurchfuehrungsgebiet getGebiet() {
    return gebiet;
  }
}
