
package de.ivu.elect.sitzberechnung.verteilung;

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

public class AbstractTeilnehmerQuotient<T extends TeilnehmerErgebnis> {

  private final T teilnehmerErgebnis;

  private final long zaehler;

  private final long nenner;

  public AbstractTeilnehmerQuotient(T teilnehmerErgebnis, long zaehler, long nenner) {
    super();

    this.teilnehmerErgebnis = teilnehmerErgebnis;

    this.zaehler = zaehler;
    this.nenner = nenner;
  }

  public Teilnehmer getTeilnehmer() {
    return getTeilnehmerErgebnis().getTeilnehmer();
  }

  public T getTeilnehmerErgebnis() {
    return teilnehmerErgebnis;
  }

  public long getZaehler() {
    return zaehler;
  }

  public long getNenner() {
    return nenner;
  }

  public Fraction toFraction(FractionConverter fractionConverter) {
    return fractionConverter.asFractionConverted(getZaehler(), getNenner());
  }
}
