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

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

import de.ivu.elect.business.ergebnis.entity.Stimmenart;
import de.ivu.elect.business.gruppe.entity.PolitischeGruppe;
import de.ivu.elect.business.kandidatur.entity.Listenkandidatur;

public class ParteiStimmen<N extends Number> {

  private final PolitischeGruppe partei;
  private final Map<Stimmenart, N> stimmen;
  private final Map<Listenkandidatur, N> listenkandidaturStimmen;

  public ParteiStimmen(PolitischeGruppe partei, Map<Stimmenart, N> stimmen) {
    this(partei, stimmen, new HashMap<>());
  }

  public ParteiStimmen(PolitischeGruppe partei, Map<Stimmenart, N> stimmen, Map<Listenkandidatur, N> listenkandidaturStimmen) {
    this.partei = partei;
    this.stimmen = stimmen;
    this.listenkandidaturStimmen = listenkandidaturStimmen;
  }

  public PolitischeGruppe getPartei() {
    return partei;
  }

  public Map<Stimmenart, N> getStimmen() {
    return stimmen;
  }

  public N getStimmen(Stimmenart stimmenart) {
    return stimmen.get(stimmenart);
  }

  public N putStimmen(Stimmenart stimmenart, N stimmenValue) {
    return stimmen.put(stimmenart, stimmenValue);
  }

  public N getListenKandidaturStimmen(Listenkandidatur listenkandidatur) {
    return listenkandidaturStimmen.get(listenkandidatur);
  }

  public void addAllListenKandidaturStimmen(Map<Listenkandidatur, N> listenkandidaturStimmen) {
    this.listenkandidaturStimmen.putAll(listenkandidaturStimmen);
  }

  public Map<Listenkandidatur, N> getListenkandidaturStimmen() {
    return listenkandidaturStimmen;
  }
}
