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

import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.inject.Named;

import de.ivu.elect.business.ergebnis.control.StimmenPoolExtendedDAOFactory;
import de.ivu.elect.business.gruppeimgebiet.control.GruppeImGebietReihenfolgeVorsortierer;
import de.ivu.elect.business.kandidatur.boundary.ListenkandidaturExtendedDAO;
import de.ivu.elect.business.kandidatur.control.StimmzettelFormatter;
import de.ivu.elect.business.pruefung.boundary.ZulassungPruefer;
import de.ivu.elect.business.pruefung.boundary.ZulassungPrueferExtendedDAOFactory;
import de.ivu.elect.business.stimmzettel.entity.EntityAufStimmzettelDaten;
import de.ivu.elect.business.stimmzettel.entity.EntityAufStimmzettelDatenFactory;
import de.ivu.elect.business.wahl.entity.WahlParameterExtendedLoader;
import de.ivu.elect.business.wahlvorschlag.boundary.WahlvorschlagExtendedDAO;

@RequestScoped
@Named(EntityAufStimmzettelDatenExtendedDAOFactory.COMPONENT_NAME)
public class EntityAufStimmzettelDatenExtendedDAOFactory implements EntityAufStimmzettelDatenFactory {

  private static final long serialVersionUID = 1L;

  public static final String COMPONENT_NAME = "entityAufStimmzettelDatenExtendedDAOFactory";

  @Inject
  private transient WahlParameterExtendedLoader wahlParameterExtendedLoader;

  @Inject
  private transient ZulassungPrueferExtendedDAOFactory zulassungPrueferExtendedDAOFactory;

  @Inject
  private transient StimmenPoolExtendedDAOFactory stimmenPoolExtendedDAOFactory;

  @Inject
  private transient WahlvorschlagExtendedDAO wahlvorschlagExtendedDAO;

  @Inject
  private transient ListenkandidaturExtendedDAO listenkandidaturExtendedDAO;

  @Inject
  private transient StimmzettelFormatter stimmzettelFormatter;

  @Inject
  private transient EntityAufStimmzettelDatenStimmzettelPositionBerechnung entityAufStimmzettelDatenStimmzettelPositionBerechnung;

  @Inject
  private transient GruppeImGebietReihenfolgeVorsortierer gruppeImGebietReihenfolgeVorsortierer;

  public EntityAufStimmzettelDatenExtendedDAOFactory() {
    super();
  }

  @Override
  public EntityAufStimmzettelDaten getEntityAufStimmzettelDaten() {
    return new EntityAufStimmzettelDaten(wahlParameterExtendedLoader, getZulassungPruefer(), stimmzettelFormatter, entityAufStimmzettelDatenStimmzettelPositionBerechnung,
        stimmenPoolExtendedDAOFactory, gruppeImGebietReihenfolgeVorsortierer, wahlvorschlagExtendedDAO, listenkandidaturExtendedDAO);
  }

  private ZulassungPruefer getZulassungPruefer() {
    return zulassungPrueferExtendedDAOFactory.createZulassungPruefer();
  }
}
