package de.ivu.elect.business.stimmeingabe.control.fiktive;

import java.util.List;
import java.util.function.Function;

import de.ivu.elect.business.stimmeingabe.entity.Stimmeingabe;

class LambdaVerteilungsSchluessel implements VerteilungsSchluessel {
  private final Function<Stimmeingabe, Long> lambda;

  public LambdaVerteilungsSchluessel(Function<Stimmeingabe, Long> lambda) {
    this.lambda = lambda;
  }

  @Override
  public int getAnzahl(List<Stimmeingabe> stimmeingabeList) {
    return stimmeingabeList.size();
  }

  @Override
  public double getSumme(List<Stimmeingabe> stimmeingabeList) {
    long result = 0l;
    for (Stimmeingabe stimmeingabe : stimmeingabeList) {
      result += lambda.apply(stimmeingabe);
    }
    return result;
  }

  @Override
  public double getWert(int index, Stimmeingabe stimmeingabe) {
    return lambda.apply(stimmeingabe);
  }
}
