
package de.ivu.elect.presentation.ergebnis.dokumente.gesamtergebnis;

import de.ivu.elect.dokumente.DokumentFormatter;

/**
 * Fasst 8 Stimmenzahlen zusammen, folgendes jeweils für Erst- und Zweitstimmen:
 * <ul>
 * <li>Aktuelle Stimmenzahl</li>
 * <li>Aktuelle Bezugsgröße für die Stimmenzahl, um daraus eine Prozentangabe zu machen</li>
 * <li>Stimmenzahl der Vorperiode</li>
 * <li>Bezugsgröße für die Stimmenzahl der Vorperiode, um daraus eine Prozentangabe für die Vorperiode zu machen</li>
 * </ul>
 * <p/>
 *  on 07.07.2016.
 */
public class StimmenAktuellMitVorperiodeUndBezug {

  public static StimmenAktuellMitVorperiodeUndBezug NULL = StimmenAktuellMitVorperiode.NULL.ohneBezug();

  private final StimmenAktuellMitVorperiode anzahl;
  private final StimmenAktuellMitVorperiode bezug;

  public StimmenAktuellMitVorperiodeUndBezug(StimmenAktuellMitVorperiode anzahl, StimmenAktuellMitVorperiode bezug) {
    this.anzahl = anzahl;
    this.bezug = bezug;
  }

  public Long getErststimmen() {
    return anzahl.getErststimmen();
  }

  public Long getZweitstimmen() {
    return anzahl.getZweitstimmen();
  }

  public Long getErststimmenVorperiode() {
    return anzahl.getErststimmenVorperiode();
  }

  public Long getZweitstimmenVorperiode() {
    return anzahl.getZweitstimmenVorperiode();
  }

  public Long getErststimmenBezug() {
    return bezug.getErststimmen();
  }

  public Long getZweitstimmenBezug() {
    return bezug.getZweitstimmen();
  }

  public AnzahlMitProzent createAnzahlMitProzentErststimmen(DokumentFormatter formatter) {
    return new AnzahlMitProzent(anzahl.getErststimmen(), bezug.getErststimmen(), formatter);
  }

  public AnzahlMitProzent createAnzahlMitProzentErststimmenVorperiode(DokumentFormatter formatter) {
    return new AnzahlMitProzent(anzahl.getErststimmenVorperiode(), bezug.getErststimmenVorperiode(), formatter);
  }

  public AnzahlMitProzent createAnzahlMitProzentDifferenzErststimmen(DokumentFormatter formatter) {
    return AnzahlMitProzent.createDifferenz(anzahl.getErststimmen(), bezug.getErststimmen(),
        anzahl.getErststimmenVorperiode(), bezug.getErststimmenVorperiode(), formatter);
  }

  public AnzahlMitProzent createAnzahlMitProzentZweitstimmen(DokumentFormatter formatter) {
    return new AnzahlMitProzent(anzahl.getZweitstimmen(), bezug.getZweitstimmen(), formatter);
  }

  public AnzahlMitProzent createAnzahlMitProzentZweitstimmenVorperiode(DokumentFormatter formatter) {
    return new AnzahlMitProzent(anzahl.getZweitstimmenVorperiode(), bezug.getZweitstimmenVorperiode(), formatter);
  }

  public AnzahlMitProzent createAnzahlMitProzentDifferenzZweitstimmen(DokumentFormatter formatter) {
    return AnzahlMitProzent.createDifferenz(anzahl.getZweitstimmen(), bezug.getZweitstimmen(),
        anzahl.getZweitstimmenVorperiode(), bezug.getZweitstimmenVorperiode(), formatter);
  }

}
