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