20 package org.matsim.core.router;
22 import java.util.ArrayList;
23 import java.util.Collections;
24 import java.util.HashMap;
25 import java.util.LinkedHashMap;
26 import java.util.List;
30 import jakarta.inject.Inject;
31 import jakarta.inject.Provider;
33 import org.apache.logging.log4j.LogManager;
34 import org.apache.logging.log4j.Logger;
61 private static final Logger
log = LogManager.getLogger(
TripRouter.class );
80 this.routingModuleProviders.put( mainMode,
new Provider<RoutingModule>(){
82 return routingModule ;
88 return new TripRouter( routingModuleProviders, config, fallbackRoutingModule ) ;
126 final String mainMode,
134 return routingModules.get( mainMode );
138 return Collections.unmodifiableSet( routingModules.keySet() );
157 public synchronized List<? extends PlanElement>
calcRoute(
158 final String mainMode,
161 final double departureTime,
172 if (module == null) {
173 throw new UnknownModeException(
"unregistered main mode |"+mainMode+
"|: does not pertain to "+routingModules.keySet() );
182 List<? extends PlanElement> trip = module.
calcRoute(request);
184 if ( trip == null ) {
185 trip = fallbackRoutingModule.
calcRoute(request) ;
221 final List<? extends PlanElement> trip,
241 final List<PlanElement> plan,
243 final List<? extends PlanElement> trip,
245 int indexOfOrigin = -1;
246 int indexOfDestination = -1;
249 int currentIndex = 0;
252 indexOfOrigin = currentIndex;
254 if (pe == destination) {
255 indexOfDestination = currentIndex;
256 if (indexOfDestination < indexOfOrigin ) {
258 "destination "+destination+
" found before origin "+
259 origin+
" in "+plan );
267 if (indexOfOrigin < 0) {
270 if (indexOfDestination < 0) {
271 throw new RuntimeException(
"could not find destination "+destination+
" in "+plan );
275 List<PlanElement> seq = plan.subList( indexOfOrigin + 1 , indexOfDestination );
276 List<PlanElement> oldTrip =
new ArrayList<>( seq );
290 return transportMode + FallbackRoutingModuleDefaultImpl._fallback;
295 return mode.endsWith(FallbackRoutingModuleDefaultImpl._fallback);
synchronized List<? extends PlanElement > calcRoute(final String mainMode, final Facility fromFacility, final Facility toFacility, final double departureTime, final Person person, final Attributes routingAttributes)
final Map< String, RoutingModule > routingModules
static RoutingRequest of(Facility fromFacility, Facility toFacility, double departureTime, Person person, Attributes attributes)
Map< String, Provider< RoutingModule > > routingModuleProviders
Builder setRoutingModule(String mainMode, RoutingModule routingModule)
static boolean isFallbackMode(String mode)
static List< PlanElement > insertTrip(final Plan plan, final Activity origin, final List<? extends PlanElement > trip, final Activity destination)
static void setRoutingMode(Leg leg, String mode)
List<? extends PlanElement > calcRoute(RoutingRequest request)
List< PlanElement > getPlanElements()
static List< PlanElement > insertTrip(final List< PlanElement > plan, final Activity origin, final List<? extends PlanElement > trip, final Activity destination)
static void assertNotNull(Object obj)
final FallbackRoutingModule fallbackRoutingModule
Set< String > getRegisteredModes()
static String getFallbackMode(String transportMode)
FallbackRoutingModule fallbackRoutingModule
RoutingModule getRoutingModule(final String mainMode)
static List< Leg > getLegs(final Plan plan)
UnknownModeException(final String msg)