1 package org.opentrafficsim.road.gtu.strategical.route;
2
3 import java.io.Serializable;
4
5 import org.opentrafficsim.core.gtu.GTUException;
6 import org.opentrafficsim.core.gtu.behavioralcharacteristics.BehavioralCharacteristics;
7 import org.opentrafficsim.core.gtu.behavioralcharacteristics.BehavioralCharacteristicsFactory;
8 import org.opentrafficsim.core.gtu.behavioralcharacteristics.BehavioralCharacteristicsFactoryDefault;
9 import org.opentrafficsim.core.network.route.Route;
10 import org.opentrafficsim.road.gtu.lane.LaneBasedGTU;
11 import org.opentrafficsim.road.gtu.lane.tactical.LaneBasedTacticalPlanner;
12 import org.opentrafficsim.road.gtu.lane.tactical.LaneBasedTacticalPlannerFactory;
13 import org.opentrafficsim.road.gtu.strategical.LaneBasedStrategicalPlanner;
14 import org.opentrafficsim.road.gtu.strategical.LaneBasedStrategicalPlannerFactory;
15
16
17
18
19
20
21
22
23
24
25
26
27
28 public class LaneBasedStrategicalRoutePlannerFactory
29 implements LaneBasedStrategicalPlannerFactory<LaneBasedStrategicalPlanner>, Serializable
30 {
31
32
33 private static final long serialVersionUID = 20160811L;
34
35
36 private final LaneBasedTacticalPlannerFactory<? extends LaneBasedTacticalPlanner> tacticalPlannerFactory;
37
38
39 private final BehavioralCharacteristicsFactory behavioralCharacteristicsFactory;
40
41
42
43
44
45 public LaneBasedStrategicalRoutePlannerFactory(
46 final LaneBasedTacticalPlannerFactory<? extends LaneBasedTacticalPlanner> tacticalPlannerFactory)
47 {
48 this.tacticalPlannerFactory = tacticalPlannerFactory;
49 this.behavioralCharacteristicsFactory = new BehavioralCharacteristicsFactoryDefault();
50 }
51
52
53
54
55
56
57 public LaneBasedStrategicalRoutePlannerFactory(
58 final LaneBasedTacticalPlannerFactory<? extends LaneBasedTacticalPlanner> tacticalPlannerFactory,
59 final BehavioralCharacteristicsFactory behavioralCharacteristicsFactory)
60 {
61 this.tacticalPlannerFactory = tacticalPlannerFactory;
62 this.behavioralCharacteristicsFactory = behavioralCharacteristicsFactory;
63 }
64
65
66 @Override
67 public final LaneBasedStrategicalPlanner create(final LaneBasedGTU gtu, final Route route) throws GTUException
68 {
69 BehavioralCharacteristics behavioralCharacteristics = this.tacticalPlannerFactory.getDefaultBehavioralCharacteristics();
70 this.behavioralCharacteristicsFactory.setValues(behavioralCharacteristics, gtu.getGTUType());
71 LaneBasedStrategicalRoutePlanner strategicalPlanner = new LaneBasedStrategicalRoutePlanner(behavioralCharacteristics,
72 this.tacticalPlannerFactory.create(gtu), route, gtu);
73 return strategicalPlanner;
74 }
75
76
77 @Override
78 public final String toString()
79 {
80 return "LaneBasedStrategicalRoutePlannerFactory [tacticalPlannerFactory=" + this.tacticalPlannerFactory + "]";
81 }
82
83 }