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

import java.util.Map;

import de.ivu.elect.business.gruppe.entity.Gruppe;
import de.ivu.elect.business.hochrechnung.entity.ParteiStimmen;
import de.ivu.elect.business.ergebnis.entity.Stimmenart;
import de.ivu.elect.business.gruppe.entity.PolitischeGruppe;
import de.ivu.elect.business.hochrechnung.entity.GebietDaten;
import de.ivu.elect.business.hochrechnung.entity.ReferendumFrage;

public class GebietDatenGanzeZahlenToAnteileConverter {

  private final GebietDatenNormierer<Long> gebietDatenNormierer = new GebietDatenNormierer<>();

  public Map<PolitischeGruppe, ParteiStimmen<Double>> berechneParteiStimmenAnteile(Map<PolitischeGruppe, ParteiStimmen<Long>> parteiStimmenAlsZahlen) {
    return gebietDatenNormierer.getParteiStimmenAnteileNormiert(parteiStimmenAlsZahlen);
  }

  public Map<Stimmenart, Double> berechneGueltigeAnteile(GebietDaten<Long> gebietDatenAlsZahlen) {
    Map<Stimmenart, Long> gueltigeAlsZahlen = gebietDatenAlsZahlen.getGueltige();
    Map<Stimmenart, Long> ungueltigeAlsZahlen = gebietDatenAlsZahlen.getUngueltige();
    return gebietDatenNormierer.getNormierteGueltigeStimmen(gueltigeAlsZahlen, ungueltigeAlsZahlen);
  }

  public Map<Stimmenart, Double> berechneUngueltigeAnteileVonGueltige(Map<Stimmenart, Double> gueltige) {
    return gebietDatenNormierer.berechneUngueltigeAnteileVonGueltige(gueltige);
  }

  public Map<Gruppe, ReferendumFrage<Double>> berechneReferendumFragenStimmenAnteile(Map<Gruppe, ReferendumFrage<Long>> referendumFragen) {
    return gebietDatenNormierer.getReferendumFragenStimmenAnteileNormiert(referendumFragen);
  }
}
