/* amodeus - Copyright (c) 2018, ETH Zurich, Institute for Dynamic Systems and Control */ package amodeus.amodeus.linkspeed; import java.util.Objects; import org.matsim.api.core.v01.Scenario; import org.matsim.core.api.experimental.events.EventsManager; import org.matsim.core.mobsim.qsim.AbstractQSimModule; import org.matsim.core.mobsim.qsim.qnetsimengine.ConfigurableQNetworkFactory; import org.matsim.core.mobsim.qsim.qnetsimengine.QNetworkFactory; import org.matsim.core.mobsim.qsim.qnetsimengine.linkspeedcalculator.LinkSpeedCalculator; import com.google.inject.Provides; import com.google.inject.Singleton; public class TrafficDataModule extends AbstractQSimModule { private final LinkSpeedDataContainer lsData; public TrafficDataModule(LinkSpeedDataContainer lsData) { this.lsData = Objects.isNull(lsData) ? new LinkSpeedDataContainer() : lsData; } @Provides @Singleton public QNetworkFactory provideCustomConfigurableQNetworkFactory(EventsManager events, Scenario scenario, // TaxiTrafficData trafficData) { ConfigurableQNetworkFactory factory = new ConfigurableQNetworkFactory(events, scenario); LinkSpeedCalculator linkSpeedCalculator = new AmodeusLinkSpeedCalculator(trafficData); factory.setLinkSpeedCalculator(linkSpeedCalculator); return factory; } @Provides @Singleton public DefaultTaxiTrafficData provideTaxiTrafficData() { return new DefaultTaxiTrafficData(lsData); } @Override protected void configureQSim() { bind(TaxiTrafficData.class).to(DefaultTaxiTrafficData.class).asEagerSingleton(); } }