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

import de.ivu.elect.sitzberechnung.math.Fraction;
import de.ivu.elect.sitzberechnung.math.FractionConverter;
import de.ivu.elect.sitzberechnung.verteilung.VerteilungContext;

/**
 * Diese Variante der Hare-Niemeyer-Verteilung tritt z.B. bei der Abgeordnetenhauswahl in Berlin auf. Hier ergibt sich der Hare-Quotient nicht aus der Gesamtstimmenzahl und der Anzahl der zu
 * verteilender Sitze, sondern wird "von außen" vorgegeben. In Berlin ist das eine Folge davon, dass bestimmte Teilnehmer von der Verteilung ausgeschlossen sind, ihre Stimmen und bereits vorab
 * bestimmten Sitze zählen aber mit.
 */
public class HareNiemeyerVerteilungMitVorgegebenemDivisor extends HareNiemeyerVerteilung {

  private final Fraction divisorVorgegeben;

  public HareNiemeyerVerteilungMitVorgegebenemDivisor(Fraction divisor) {
    this(FractionConverter.convertingExakt(), divisor);
  }

  public HareNiemeyerVerteilungMitVorgegebenemDivisor(FractionConverter fractionConverter, Fraction divisorVorgegeben) {
    super(fractionConverter);

    this.divisorVorgegeben = divisorVorgegeben;
  }

  @Override
  protected Fraction getDivisorVorgegeben(VerteilungContext context) {
    return divisorVorgegeben;
  }
}
