
package de.ivu.elect.sitzberechnung.verteilung.dhondt;

import de.ivu.elect.sitzberechnung.verteilung.AbstractTeilnehmerQuotient;
import de.ivu.elect.sitzberechnung.verteilung.TeilnehmerErgebnis;

/**
 * Ein DHondtQuotient liefert Detailinformation aus der Sitzverteilung nach D’Hondt als Divisorverfahren (auch: Höchstzahlverfahren, siehe http://www.wahlrecht.de/verfahren/divisorverfahren.html). Er
 * repräsentiert das Ergebnis einer Division (Stimmenzahl durch Divisor) und die Bedeutung dieses Quotienten bei der Sitzverteilung nach D’Hondt:
 * <ul>
 * <li>Der Teilnehmer, zu dem der Quotient gehört, dessen Stimmenzahl also den Zähler bildet.</li>
 * <li>Rang = Position dieses Quotienten in der sortierten Liste aller Quotienten.</li>
 * <li>Angabe, ob der Teilnehmer durch diesen Quotienten einen Sitz gewonnen hat</li>
 * <li>Angabe, ob die Teilnehmer mit diesen Quotienten an einem Losentscheid um den letzten Sitz / die letzten Sitze teilgenommen hat</li>
 * </ul>
 */
public class DHondtQuotient extends AbstractTeilnehmerQuotient<TeilnehmerErgebnis> {

  private long rang;

  private final boolean isSitzgewinn;

  private final boolean isTeilnehmerAmLosverfahren;

  public DHondtQuotient(TeilnehmerErgebnis teilnehmerErgebnis, long zaehler, long nenner, boolean isSitzgewinn, boolean isTeilnehmerAmLosverfahren) {
    super(teilnehmerErgebnis, zaehler, nenner);

    this.isSitzgewinn = isSitzgewinn;

    this.isTeilnehmerAmLosverfahren = isTeilnehmerAmLosverfahren;
  }

  public long getRang() {
    return rang;
  }

  public void setRang(long rang) {
    this.rang = rang;
  }

  public boolean isSitzgewinn() {
    return isSitzgewinn;
  }

  public boolean isTeilnehmerAmLosverfahren() {
    return isTeilnehmerAmLosverfahren;
  }
}
