1 package org.opentrafficsim.demo.network.xml;
2
3 import java.awt.Dimension;
4 import java.io.IOException;
5 import java.io.Serializable;
6 import java.net.URISyntaxException;
7 import java.net.URL;
8 import java.rmi.RemoteException;
9
10 import javax.naming.NamingException;
11 import javax.swing.SwingUtilities;
12 import javax.xml.bind.JAXBException;
13 import javax.xml.parsers.ParserConfigurationException;
14
15 import org.djunits.value.vdouble.scalar.Duration;
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.network.NetworkException;
25 import org.opentrafficsim.draw.core.OTSDrawingException;
26 import org.opentrafficsim.road.network.OTSRoadNetwork;
27 import org.opentrafficsim.road.network.factory.xml.XmlParserException;
28 import org.opentrafficsim.road.network.factory.xml.parser.XmlNetworkLaneParser;
29 import org.opentrafficsim.swing.gui.OTSAnimationPanel;
30 import org.opentrafficsim.swing.gui.OTSSimulationApplication;
31 import org.opentrafficsim.trafficcontrol.TrafficControlException;
32 import org.xml.sax.SAXException;
33
34 import nl.tudelft.simulation.dsol.SimRuntimeException;
35 import nl.tudelft.simulation.language.DSOLException;
36
37
38
39
40
41
42
43
44
45
46
47
48 public class NetworkTest extends OTSSimulationApplication<OTSModelInterface>
49 {
50
51 private static final long serialVersionUID = 1L;
52
53
54
55
56
57
58 public NetworkTest(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("NetworkTest");
78 TestXMLModel xmlModel = new TestXMLModel(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 NetworkTest(xmlModel, animationPanel);
83 animationPanel.enableSimulationControlButtons();
84 }
85 catch (SimRuntimeException | NamingException | RemoteException | OTSDrawingException | DSOLException exception)
86 {
87 exception.printStackTrace();
88 }
89 }
90 });
91 }
92
93
94 @Override
95 public String toString()
96 {
97 return "NetworkTest []";
98 }
99
100
101
102
103
104
105
106
107
108
109
110
111
112 static class TestXMLModel extends AbstractOTSModel
113 {
114
115 private static final long serialVersionUID = 20141121L;
116
117
118 private OTSRoadNetwork network = null;
119
120
121
122
123 TestXMLModel(final OTSSimulatorInterface simulator)
124 {
125 super(simulator);
126 }
127
128
129 @Override
130 public final void constructModel() throws SimRuntimeException
131 {
132 try
133 {
134 URL xmlURL = URLResource.getResource("/xml/Test-Network-14.xml");
135 this.network = new OTSRoadNetwork("Test-Network-14", true, getSimulator());
136 XmlNetworkLaneParser.build(xmlURL, this.network, false);
137 }
138 catch (NetworkException | ParserConfigurationException | SAXException | GTUException | OTSGeometryException
139 | JAXBException | URISyntaxException | XmlParserException | IOException | TrafficControlException exception)
140 {
141 exception.printStackTrace();
142 }
143 }
144
145
146 @Override
147 public OTSRoadNetwork getNetwork()
148 {
149 return this.network;
150 }
151
152
153 @Override
154 public final String toString()
155 {
156 return "TestXMLModel [simulator=" + this.simulator + "]";
157 }
158
159
160 @Override
161 public Serializable getSourceId()
162 {
163 return "TestXMLModel";
164 }
165
166 }
167
168 }