package de.ivu.elect.sitzberechnung.osv.exchange.p22;

import java.util.Objects;

public class DHondtQuotient {

  private int lauf;
  private int zaehler;
  private int nenner;
  private boolean sitzAusRestanteil;

  public DHondtQuotient() {
  }

  public DHondtQuotient(int lauf, int zaehler, int nenner, boolean sitzAusRestanteil) {
    this.lauf = lauf;
    this.zaehler = zaehler;
    this.nenner = nenner;
    this.sitzAusRestanteil = sitzAusRestanteil;
  }

  /**
   * @return 1-basierter Index der Zuteilung. Gleichzeitige Zuteilung im gleichen Schritt werden auf mehrere Läufe
   * aufgeteilt, so dass pro Lauf genau ein Sitz zugeteilt wird. Siehe OSV-1458, issue 4.
   */
  public int getLauf() {
    return lauf;
  }

  public void setLauf(int lauf) {
    this.lauf = lauf;
  }

  public int getZaehler() {
    return zaehler;
  }

  public void setZaehler(int zaehler) {
    this.zaehler = zaehler;
  }

  public int getNenner() {
    return nenner;
  }

  public void setNenner(int nenner) {
    this.nenner = nenner;
  }

  public boolean getSitzAusRestanteil() {
    return sitzAusRestanteil;
  }

  public void setSitzAusRestanteil(boolean sitzAusRestanteil) {
    this.sitzAusRestanteil = sitzAusRestanteil;
  }

  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    DHondtQuotient that = (DHondtQuotient) o;
    return lauf == that.lauf &&
            zaehler == that.zaehler &&
            nenner == that.nenner &&
            sitzAusRestanteil == that.sitzAusRestanteil;
  }

  @Override
  public int hashCode() {
    return Objects.hash(lauf, zaehler, nenner, sitzAusRestanteil);
  }

  @Override
  public String toString() {
    return "DHondtQuotient{" +
            "lauf=" + lauf +
            ", zaehler=" + zaehler +
            ", nenner=" + nenner +
            ", sitzAusRestanteil=" + sitzAusRestanteil +
            '}';
  }

}
