1 package org.opentrafficsim.demo.network.xml;
2
3 import java.awt.Dimension;
4 import java.net.URISyntaxException;
5 import java.net.URL;
6 import java.rmi.RemoteException;
7
8 import javax.naming.NamingException;
9 import javax.swing.SwingUtilities;
10 import javax.xml.bind.JAXBException;
11 import javax.xml.parsers.ParserConfigurationException;
12
13 import org.djunits.unit.LengthUnit;
14 import org.djunits.value.vdouble.scalar.Duration;
15 import org.djunits.value.vdouble.scalar.Length;
16 import org.djunits.value.vdouble.scalar.Time;
17 import org.djutils.io.URLResource;
18 import org.opentrafficsim.core.dsol.AbstractOTSModel;
19 import org.opentrafficsim.core.dsol.OTSAnimator;
20 import org.opentrafficsim.core.dsol.OTSModelInterface;
21 import org.opentrafficsim.core.dsol.OTSSimulatorInterface;
22 import org.opentrafficsim.core.geometry.OTSGeometryException;
23 import org.opentrafficsim.core.gtu.GTUException;
24 import org.opentrafficsim.core.gtu.GTUType;
25 import org.opentrafficsim.core.network.NetworkException;
26 import org.opentrafficsim.draw.core.OTSDrawingException;
27 import org.opentrafficsim.road.network.OTSRoadNetwork;
28 import org.opentrafficsim.road.network.factory.xml.XmlParserException;
29 import org.opentrafficsim.road.network.factory.xml.parser.XmlNetworkLaneParser;
30 import org.opentrafficsim.road.network.lane.conflict.ConflictBuilder;
31 import org.opentrafficsim.swing.gui.OTSAnimationPanel;
32 import org.opentrafficsim.swing.gui.OTSSimulationApplication;
33 import org.xml.sax.SAXException;
34
35 import nl.tudelft.simulation.dsol.SimRuntimeException;
36
37
38
39
40
41
42
43
44
45
46
47
48 public class TestXMLParserAimsun extends OTSSimulationApplication<OTSModelInterface>
49 {
50
51 private static final long serialVersionUID = 1L;
52
53
54
55
56
57
58 public TestXMLParserAimsun(final OTSModelInterface model, final OTSAnimationPanel animationPanel) throws OTSDrawingException
59 {
60 super(model, animationPanel);
61 }
62
63
64
65
66
67
68 public static void main(final String[] args) throws SimRuntimeException
69 {
70 SwingUtilities.invokeLater(new Runnable()
71 {
72 @Override
73 public void run()
74 {
75 try
76 {
77 OTSAnimator simulator = new OTSAnimator();
78 TestAimsunModel xmlModel = new TestAimsunModel(simulator);
79 simulator.initialize(Time.ZERO, Duration.ZERO, Duration.instantiateSI(3600.0), xmlModel);
80 OTSAnimationPanel animationPanel = new OTSAnimationPanel(xmlModel.getNetwork().getExtent(),
81 new Dimension(800, 600), simulator, xmlModel, DEFAULT_COLORER, xmlModel.getNetwork());
82 new TestXMLParserAimsun(xmlModel, animationPanel);
83 }
84 catch (SimRuntimeException | NamingException | RemoteException | OTSDrawingException exception)
85 {
86 exception.printStackTrace();
87 }
88 }
89 });
90 }
91
92
93 @Override
94 public String toString()
95 {
96 return "TestXMLParserAimsunNew []";
97 }
98
99
100
101
102
103
104
105
106
107
108
109
110
111 static class TestAimsunModel extends AbstractOTSModel
112 {
113
114 private static final long serialVersionUID = 20141121L;
115
116
117 private OTSRoadNetwork network = null;
118
119
120
121
122 TestAimsunModel(final OTSSimulatorInterface simulator)
123 {
124 super(simulator);
125 }
126
127
128 @Override
129 public final void constructModel() throws SimRuntimeException
130 {
131 URL url = URLResource.getResource("/xml/AimsunOtsNetwork.xml");
132 this.network = new OTSRoadNetwork("Aimsun network", true);
133 try
134 {
135 XmlNetworkLaneParser.build(url.getPath(), this.network, getSimulator());
136 ConflictBuilder.buildConflicts(this.network, this.network.getGtuType(GTUType.DEFAULTS.VEHICLE), this.simulator,
137 new ConflictBuilder.FixedWidthGenerator(new Length(2.0, LengthUnit.SI)));
138 }
139 catch (NetworkException | ParserConfigurationException | SAXException | OTSGeometryException | JAXBException
140 | URISyntaxException | XmlParserException | GTUException exception)
141 {
142 exception.printStackTrace();
143 }
144 }
145
146
147 @Override
148 public OTSRoadNetwork getNetwork()
149 {
150 return this.network;
151 }
152
153
154 @Override
155 public final String toString()
156 {
157 return "TestXMLParserAimsunNew [simulator=" + this.simulator + "]";
158 }
159
160 }
161
162 }