
package de.ivu.elect.dokumente.kandidatur.statistik;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.business.wahl.control.Wahldaten;
import de.ivu.elect.business.wahl.entity.Wahl;

/**
 *  on 07.11.2016.
 */
public class WahlkreisStatistik {

  private final Wahldaten< ? extends Wahl, Gebiet> wahldaten;

  public WahlkreisStatistik(Wahldaten< ? extends Wahl, Gebiet> wahldaten) {
    this.wahldaten = wahldaten;
  }

  public long getAnzahlWahlkreise() {
    return getWahlkreise().size();
  }

  public List<Gebiet> getWahlkreise() {
    return wahldaten.getDirektwahlGebiete();
  }

  public Map<Gebiet, Long> getAnzahlWahlkreiseProGebiet(List<Gebiet> gebiete) {
    Map<Gebiet, Long> anzahlWahlkreise = new HashMap<>();
    for (Gebiet gebiet : gebiete) {
      anzahlWahlkreise.put(gebiet, 0L);
    }

    for (Gebiet gebiet : getWahlkreise()) {
      for (Gebiet uebergeordnetesGebiet : gebiet.getInGebietshierarchieUebergeordneteGebiete()) {
        anzahlWahlkreise.computeIfPresent(uebergeordnetesGebiet, (egal, old) -> old + 1L);
      }
    }
    return anzahlWahlkreise;
  }

}
