001/* 002 * Copyright (C) Schweizerische Bundesbahnen SBB, 2017. 003 */ 004 005package ch.sbb.matsim.routing.pt.raptor; 006 007import ch.sbb.matsim.config.SwissRailRaptorConfigGroup; 008import org.matsim.core.config.ConfigUtils; 009import org.matsim.core.controler.AbstractModule; 010import org.matsim.core.router.MainModeIdentifier; 011 012/** 013 * @author mrieser / SBB 014 */ 015public class SwissRailRaptorModule extends AbstractModule { 016 017 @Override 018 public void install() { 019 if (getConfig().transit().isUseTransit()) { 020 bind(SwissRailRaptor.class).toProvider(SwissRailRaptorFactory.class); 021 022 for (String mode : getConfig().transit().getTransitModes()) { 023 addRoutingModuleBinding(mode).toProvider(SwissRailRaptorRoutingModuleProvider.class); 024 } 025 026 SwissRailRaptorConfigGroup srrConfig = ConfigUtils.addOrGetModule(getConfig(), SwissRailRaptorConfigGroup.class); 027 028 if (srrConfig.isUseRangeQuery()) { 029 bind(RaptorRouteSelector.class).to(ConfigurableRaptorRouteSelector.class); 030 } else { 031 bind(RaptorRouteSelector.class).to(LeastCostRaptorRouteSelector.class); // just a simple default in case it ever gets used. 032 } 033 034 switch (srrConfig.getScoringParameters()) { 035 case Default: 036 bind(RaptorParametersForPerson.class).to(DefaultRaptorParametersForPerson.class); 037 break; 038 case Individual: 039 bind(RaptorParametersForPerson.class).to(IndividualRaptorParametersForPerson.class); 040 break; 041 } 042 043 if (srrConfig.isUseIntermodalAccessEgress()) { 044 bind(MainModeIdentifier.class).to(IntermodalAwareRouterModeIdentifier.class); 045 } 046 bind(RaptorStopFinder.class).to(DefaultRaptorStopFinder.class); 047 048 049 bind(RaptorIntermodalAccessEgress.class).to(DefaultRaptorIntermodalAccessEgress.class); 050 } 051 052 } 053 054}