
package de.ivu.elect.business.verteilung.boundary;

import static java.util.Collections.emptyList;

import java.util.List;

public class VerteilungZuteilungsdivisorBerechnungSchritt {

  private final List<String> beschreibung;

  private final boolean schrittInIterationInitial;

  private final boolean schrittInIteration;

  private final long anzahlSitzeZuVerteilen;

  private final long anzahlSitzeVerteilt;

  private final List<VerteilungTeilnehmerErgebnis> teilnehmerErgebnisse;

  private final List<String> teilnehmerErgebnisseBeschreibung;

  private final List<VerteilungTeilnehmerErgebnis> divisorkandidaten;

  private final List<String> divisorkandidatenBeschreibung;

  public VerteilungZuteilungsdivisorBerechnungSchritt(List<String> beschreibung, long anzahlSitzeZuVerteilen, long anzahlSitzeVerteilt) {
    this(beschreibung, false, false, anzahlSitzeZuVerteilen, anzahlSitzeVerteilt, emptyList(), emptyList(), emptyList(), emptyList());
  }

  public VerteilungZuteilungsdivisorBerechnungSchritt(List<String> beschreibung, boolean schrittInIteration, boolean schrittInIterationInitial, long anzahlSitzeZuVerteilen, long anzahlSitzeVerteilt,
      List<VerteilungTeilnehmerErgebnis> teilnehmerErgebnisse, List<String> teilnehmerErgebnisseBeschreibung, List<VerteilungTeilnehmerErgebnis> divisorkandidaten,
      List<String> divisorkandidatenBeschreibung) {
    super();

    this.beschreibung = beschreibung;

    this.schrittInIteration = schrittInIteration;
    this.schrittInIterationInitial = schrittInIterationInitial;

    this.anzahlSitzeZuVerteilen = anzahlSitzeZuVerteilen;
    this.anzahlSitzeVerteilt = anzahlSitzeVerteilt;

    this.teilnehmerErgebnisse = teilnehmerErgebnisse;
    this.teilnehmerErgebnisseBeschreibung = teilnehmerErgebnisseBeschreibung;

    this.divisorkandidaten = divisorkandidaten;
    this.divisorkandidatenBeschreibung = divisorkandidatenBeschreibung;
  }

  public List<String> formatBeschreibung(VerteilungContext context) {
    return beschreibung;
  }

  public boolean isSchrittInIteration() {
    return schrittInIteration;
  }

  public boolean isSchrittInIterationInitial() {
    return schrittInIterationInitial;
  }

  public long getAnzahlSitzeZuVerteilen() {
    return anzahlSitzeZuVerteilen;
  }

  public long getAnzahlSitzeVerteilt() {
    return anzahlSitzeVerteilt;
  }

  public List<VerteilungTeilnehmerErgebnis> collectTeilnehmerErgebnisse() {
    return teilnehmerErgebnisse;
  }

  public List<String> formatTeilnehmerErgebnisseBeschreibung(VerteilungContext context) {
    return teilnehmerErgebnisseBeschreibung;
  }

  public List<VerteilungTeilnehmerErgebnis> collectDivisorkandidaten() {
    return divisorkandidaten;
  }

  public List<String> formatDivisorkandidatenBeschreibung(VerteilungContext context) {
    return divisorkandidatenBeschreibung;
  }
}
