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

import javax.inject.Inject;

import de.ivu.elect.business.gebietsbaum.boundary.GebietDAO;
import de.ivu.elect.business.gruppe.boundary.GruppeDAO;
import de.ivu.elect.business.gruppeimgebiet.boundary.GruppeImGebietDAO;
import de.ivu.elect.business.gruppeimgebiet.boundary.GruppeImGebietFactory;
import de.ivu.elect.business.gruppeimgebiet.boundary.GruppeImGebietHierarchyBuilder;
import de.ivu.elect.business.wahl.boundary.WahlDAO;
import de.ivu.elect.business.wahl.entity.Wahl;

public class GruppeImGebietCacheFactory {

  @Inject
  private transient WahlDAO wahlDAO;

  @Inject
  private transient GebietDAO gebietDAO;

  @Inject
  private transient GruppeDAO gruppeDAO;

  @Inject
  private transient GruppeImGebietDAO gruppeImGebietDAO;

  @Inject
  private transient GruppeImGebietFactory gruppeImGebietFactory;

  @Inject
  private transient GruppeImGebietCreate gruppeImGebietCreate;

  @Inject
  private transient GruppeImGebietHierarchyBuilder gruppeImGebietHierarchyBuilder;

  public AbstractGruppeImGebietCache createNewGruppeImGebietCache(Wahl wahl) {
    return new DefaultGruppeImGebietCache(wahlDAO, gebietDAO, gruppeDAO, gruppeImGebietDAO, gruppeImGebietFactory,
        wahl, gruppeImGebietCreate);
  }

  public AbstractGruppeImGebietCache createNewGruppeImGebietCompleteHierarchyCache(Wahl wahl) {
    return new GruppeImGebietCompleteHierarchyCache(wahlDAO, gebietDAO, gruppeDAO, gruppeImGebietDAO,
        gruppeImGebietFactory, wahl, gruppeImGebietHierarchyBuilder);
  }

}
