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

import java.io.Serializable;

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

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

public class StimmeingabeErfassenDescriptionResolver implements Serializable {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient Instance<StimmeingabeErfassenDescription> stimmeingabeErfassenDescriptions;

  public StimmeingabeErfassenDescriptionResolver() {
    super();
  }

  public StimmeingabeErfassenDescription getStimmeingabeErfassenDescriptionByGebiet(Gebiet gebiet) {
    return getStimmeingabeErfassenDescriptionByWahl(gebiet.getWahl());
  }

  public StimmeingabeErfassenDescription getStimmeingabeErfassenDescriptionByWahl(Wahl wahl) {
    for (StimmeingabeErfassenDescription stimmeingabeErfassenDescription : stimmeingabeErfassenDescriptions) {
      if (stimmeingabeErfassenDescription.isApplicable(wahl)) {
        return stimmeingabeErfassenDescription;
      }
    }

    throw new IllegalStateException("Keine Stimmenerfassung verfügbar für Wahl " + wahl);
  }
}
