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.network.route.Route;
8 import org.opentrafficsim.road.gtu.lane.LaneBasedGTU;
9 import org.opentrafficsim.road.gtu.lane.tactical.LaneBasedTacticalPlanner;
10 import org.opentrafficsim.road.gtu.lane.tactical.LaneBasedTacticalPlannerFactory;
11 import org.opentrafficsim.road.gtu.strategical.LaneBasedStrategicalPlanner;
12 import org.opentrafficsim.road.gtu.strategical.LaneBasedStrategicalPlannerFactory;
13
14
15
16
17
18
19
20
21
22
23
24
25
26 public class LaneBasedStrategicalRoutePlannerFactory implements
27 LaneBasedStrategicalPlannerFactory<LaneBasedStrategicalPlanner>, Serializable
28 {
29
30
31 private static final long serialVersionUID = 20160811L;
32
33
34 private Route route;
35
36
37 private BehavioralCharacteristics behavioralCharacteristics;
38
39
40 private final LaneBasedTacticalPlannerFactory<? extends LaneBasedTacticalPlanner> tacticalPlannerFactory;
41
42
43
44
45
46 public LaneBasedStrategicalRoutePlannerFactory(
47 final LaneBasedTacticalPlannerFactory<? extends LaneBasedTacticalPlanner> tacticalPlannerFactory)
48 {
49 this.tacticalPlannerFactory = tacticalPlannerFactory;
50 }
51
52
53
54
55
56 public final void setRoute(final Route route)
57 {
58 this.route = route;
59 }
60
61
62 @Override
63 public final BehavioralCharacteristics getDefaultBehavioralCharacteristics()
64 {
65 return this.tacticalPlannerFactory.getDefaultBehavioralCharacteristics();
66 }
67
68
69 @Override
70 public final void setBehavioralCharacteristics(final BehavioralCharacteristics behavioralCharacteristics)
71 {
72 this.behavioralCharacteristics = behavioralCharacteristics;
73 }
74
75
76 @Override
77 public final LaneBasedStrategicalPlanner create(final LaneBasedGTU gtu) throws GTUException
78 {
79 if (this.behavioralCharacteristics == null)
80 {
81 this.behavioralCharacteristics = getDefaultBehavioralCharacteristics();
82 }
83 LaneBasedStrategicalRoutePlanner strategicalPlanner =
84 new LaneBasedStrategicalRoutePlanner(this.behavioralCharacteristics, this.tacticalPlannerFactory.create(gtu),
85 this.route, gtu);
86 this.route = null;
87 this.behavioralCharacteristics = null;
88 return strategicalPlanner;
89 }
90
91
92 @Override
93 public final String toString()
94 {
95 return "LaneBasedStrategicalRoutePlannerFactory [tacticalPlannerFactory=" + this.tacticalPlannerFactory + "]";
96 }
97
98 }