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

import javax.inject.Inject;

import de.ivu.elect.business.ergebnis.control.StimmenPoolExtendedDAOFactory;
import de.ivu.elect.business.ergebnis.control.StimmenPoolFactory;
import de.ivu.elect.business.kandidatur.boundary.AbstractListenkandidaturDAO;
import de.ivu.elect.business.kandidatur.boundary.ListenkandidaturExtendedDAO;
import de.ivu.elect.business.kandidatur.entity.Listenkandidatur;
import de.ivu.elect.business.pruefung.control.WusZulassungPrueferCacheNoCache;
import de.ivu.elect.business.wahl.entity.AbstractWahlParameterLoader;
import de.ivu.elect.business.wahl.entity.WahlParameterExtendedLoader;
import de.ivu.elect.business.wahlrechtspruefung.boundary.AbstractWahlrechtspruefungDAO;
import de.ivu.elect.business.wahlrechtspruefung.boundary.WahlrechtspruefungExtendedDAO;
import de.ivu.elect.business.wahlvorschlag.boundary.AbstractWahlvorschlagDAO;
import de.ivu.elect.business.wahlvorschlag.boundary.WahlvorschlagExtendedDAO;
import de.ivu.elect.business.wahlvorschlagsperson.boundary.AbstractWahlvorschlagsPersonDAO;
import de.ivu.elect.business.wahlvorschlagsperson.boundary.WahlvorschlagsPersonExtendedDAO;

/**
 * Für die GUI ZulassungPrueferRequestScope verwenden (cached).
 */
public class ZulassungPrueferExtendedDAOFactory extends AbstractZulassungPrueferDAOFactory {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient WahlrechtspruefungExtendedDAO wahlrechtspruefungExtendedDAO;

  @Inject
  private transient WahlvorschlagExtendedDAO wahlvorschlagExtendedDAO;

  @Inject
  private transient WahlvorschlagsPersonExtendedDAO wahlvorschlagsPersonExtendedDAO;

  @Inject
  private transient StimmenPoolExtendedDAOFactory stimmenPoolExtendedDAOFactory;

  @Inject
  private transient WahlParameterExtendedLoader wahlParameterExtendedLoader;

  @Inject
  private transient ListenkandidaturExtendedDAO listenkandidaturExtendedDAO;

  public ZulassungPrueferExtendedDAOFactory() {
    super();
  }

  @Override
  protected WusZulassungPruefer createWusZulassungPruefer() {
    WusZulassungPruefer wusZulassungPruefer = super.createWusZulassungPruefer();
    wusZulassungPruefer.setCache(new WusZulassungPrueferCacheNoCache()); // ELECTMUC-1842 Cache deaktiviert...

    return wusZulassungPruefer;
  }

  @Override
  protected AbstractWahlrechtspruefungDAO getWahlrechtspruefungDAO() {
    return wahlrechtspruefungExtendedDAO;
  }

  @Override
  protected AbstractWahlvorschlagDAO getWahlvorschlagDAO() {
    return wahlvorschlagExtendedDAO;
  }

  @Override
  protected AbstractListenkandidaturDAO getListenkandidaturDAO() {
    return listenkandidaturExtendedDAO;
  }

  @Override
  protected AbstractWahlvorschlagsPersonDAO getWahlvorschlagsPersonDAO() {
    return wahlvorschlagsPersonExtendedDAO;
  }

  @Override
  protected StimmenPoolFactory getStimmenPoolFactory() {
    return stimmenPoolExtendedDAOFactory;
  }

  @Override
  protected AbstractWahlParameterLoader getWahlParameterLoader() {
    return wahlParameterExtendedLoader;
  }
}
