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

import javax.enterprise.inject.Instance;
import javax.inject.Inject;

import de.ivu.elect.business.stimmeingabe.entity.Ergebniseingang;
import de.ivu.elect.business.wahl.entity.Wahl;

public class StimmeingabePlausiBuilderResolver {

  /*
  NOTE, dass es sauberer wäre, mit dem StimmeingabeErfassenDescriptionResolver die StimmeingabeErfassenDescription zur Wahl zu finden,
  und dort nach dem PlausiBuilder zu fragen
  */

  @Inject
  private transient Instance<StimmeingabePlausiBuilder> stimmeingabePlausiBuilders;

  public StimmeingabePlausiBuilder getStimmeingabePlausiBuilder(Ergebniseingang ergebniseingang) {
    return getStimmeingabePlausiBuilder(ergebniseingang.getWahldurchfuehrungsgebiet().getWahl());
  }

  public StimmeingabePlausiBuilder getStimmeingabePlausiBuilder(Wahl wahl) {
    for (StimmeingabePlausiBuilder stimmeingabePlausiBuilder : stimmeingabePlausiBuilders) {
      if (stimmeingabePlausiBuilder.isApplicable(wahl)) {
        return stimmeingabePlausiBuilder;
      }
    }

    return StimmeingabePlausiBuilder.NO_OP_BUILDER;
  }

}
