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

import java.util.ArrayList;
import java.util.List;

import de.ivu.elect.sitzberechnung.math.Fraction;
import de.ivu.elect.sitzberechnung.verteilung.Teilnehmer;

public class SainteLagueHoechstzahlTeilnehmerErgebnis extends AbstractSainteLagueTeilnehmerErgebnis {

  private List<SainteLagueHoechstzahl> hoechstzahlen;

  private SainteLagueHoechstzahlTeilnehmerErgebnis(Teilnehmer teilnehmer) {
    this(teilnehmer, Fraction.ZERO);
  }

  SainteLagueHoechstzahlTeilnehmerErgebnis(Teilnehmer teilnehmer, Fraction divisor) {
    super(teilnehmer, divisor);

    this.hoechstzahlen = new ArrayList<>();
  }

  public List<SainteLagueHoechstzahl> getHoechstzahlen() {
    return hoechstzahlen;
  }

  public void setHoechstzahlen(List<SainteLagueHoechstzahl> hoechstzahlen) {
    this.hoechstzahlen = hoechstzahlen;
  }

  protected void vergibRestsitzeAusHoechstzahlen(long sitzeAusHoechstzahlen) {
    long restsitze = sitzeAusHoechstzahlen - sitzeAusAbrundung;

    for (int i = 0; i < restsitze; i++) {
      vergibRestsitz();
    }
  }

  /**
   * @return Ergebnis eines Teilnehmers, wenn keine richtige Verteilung stattgefunden hat
   */
  static SainteLagueHoechstzahlTeilnehmerErgebnis ohneVerteilung(Teilnehmer teilnehmer) {
    return new SainteLagueHoechstzahlTeilnehmerErgebnis(teilnehmer);
  }
}
