package cz.agents.agentpolis.darptestbed.simmodel.environment;
import java.util.Map;
import com.google.inject.Injector;
import cz.agents.agentpolis.darptestbed.global.GlobalParams;
import cz.agents.agentpolis.simmodel.environment.AgentPolisEnvironmentModule;
import cz.agents.agentpolis.simmodel.environment.EnvironmentFactory;
import cz.agents.agentpolis.simmodel.environment.model.citymodel.transportnetwork.Graph;
import cz.agents.agentpolis.simmodel.environment.model.citymodel.transportnetwork.GraphType;
import cz.agents.agentpolis.simmodel.environment.model.citymodel.transportnetwork.elemets.Node;
import cz.agents.agentpolis.simmodel.environment.model.delaymodel.factory.DelayingSegmentCapacityDeterminer;
import cz.agents.alite.simulation.Simulation;
/**
* The factory to inject the modul using injector (framework Guice).
*
* @author Lukas Canda
*/
public class TestbedEnvironmentFactory implements EnvironmentFactory {
private final DelayingSegmentCapacityDeterminer delayingSegmentCapacityDeterminer;
public TestbedEnvironmentFactory(DelayingSegmentCapacityDeterminer delayingSegmentCapacityDeterminer) {
super();
this.delayingSegmentCapacityDeterminer = delayingSegmentCapacityDeterminer;
}
@Override
public Injector injectEnvironment(Injector injector, Simulation simulation, long seed,
Map<GraphType, Graph> graphByGraphType, Map<Long, Node> nodesFromAllGraphs) {
injector = injector.createChildInjector(new AgentPolisEnvironmentModule(simulation, GlobalParams.getRandom(),
graphByGraphType, nodesFromAllGraphs, delayingSegmentCapacityDeterminer));
return injector.createChildInjector(new TestbedEnvironmentModul(simulation));
}
}