package de.ivu.elect.business.hochrechnung.control;

import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import de.ivu.elect.business.ergebnis.control.ErgebnisDaten;
import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.business.gebietsbaum.entity.Wahldurchfuehrungsgebiet;
import de.ivu.elect.business.hochrechnung.entity.GebietDaten;
import de.ivu.elect.business.hochrechnung.entity.StimmenHochrechnerEingabedaten;

public class StimmenHochrechnerEingabedatenVonErgebnisdaten implements StimmenHochrechnerEingabedaten<Long> {

  private final Map<Gebiet, GebietDaten<Long>> vorperiode ;
  private final Map<Gebiet, GebietDaten<Long>> aktuelleWahl;

  public StimmenHochrechnerEingabedatenVonErgebnisdaten(ErgebnisDaten ergebnisDatenAktuell) {
    this.vorperiode = new LinkedHashMap<>();
    this.aktuelleWahl = new LinkedHashMap<>();

    extractErgebnis (ergebnisDatenAktuell);
  }

  private void extractErgebnis(ErgebnisDaten ergebnisDatenAktuell) {
    List<Wahldurchfuehrungsgebiet> gebiete = ergebnisDatenAktuell.getGebiete();

    for (Wahldurchfuehrungsgebiet wahldurchfuehrungsgebiet: gebiete) {
      vorperiode.put(wahldurchfuehrungsgebiet, new GebietDatenVonVorperiodeErgebnisdaten(wahldurchfuehrungsgebiet, ergebnisDatenAktuell));
      aktuelleWahl.put(wahldurchfuehrungsgebiet, new GebietDatenVonAktuelleErgebnisdaten(wahldurchfuehrungsgebiet, ergebnisDatenAktuell));
    }
  }

  @Override
  public Map<Gebiet, GebietDaten<Long>> getVorperiode() {
    return vorperiode;
  }

  @Override
  public Map<Gebiet, GebietDaten<Long>> getAktuelleWahl() {
    return aktuelleWahl;
  }
}
