1 package org.opentrafficsim.road.network.factory.vissim;
2
3 import java.io.Serializable;
4
5 import org.opentrafficsim.core.network.NetworkException;
6 import org.w3c.dom.NamedNodeMap;
7 import org.w3c.dom.Node;
8 import org.w3c.dom.NodeList;
9 import org.xml.sax.SAXException;
10
11
12
13
14
15
16
17
18
19
20 class SignalHeadTag implements Serializable
21 {
22
23 private static final long serialVersionUID = 20150723L;
24
25
26 @SuppressWarnings("checkstyle:visibilitymodifier")
27 String no = "";
28
29
30 @SuppressWarnings("checkstyle:visibilitymodifier")
31 String sg = "";
32
33
34 Boolean activeOnThisLink = true;
35
36
37
38
39
40 @SuppressWarnings("checkstyle:visibilitymodifier")
41 String positionStr = null;
42
43
44
45
46
47 @SuppressWarnings("checkstyle:visibilitymodifier")
48 String signalGroup = null;
49
50
51 @SuppressWarnings("checkstyle:visibilitymodifier")
52 String className = null;
53
54 String linkName;
55
56 String laneName;
57
58
59
60
61 public SignalHeadTag(SignalHeadTag signalHeadTag)
62 {
63 this.no = signalHeadTag.no;
64 this.sg = signalHeadTag.sg;
65 this.activeOnThisLink = signalHeadTag.activeOnThisLink;
66 this.positionStr = signalHeadTag.positionStr;
67 this.signalGroup = signalHeadTag.signalGroup;
68 this.className = signalHeadTag.className;
69 this.linkName = signalHeadTag.linkName;
70 this.laneName = signalHeadTag.laneName;
71 }
72
73
74
75
76 public SignalHeadTag()
77 {
78
79 }
80
81
82
83
84
85
86
87
88 @SuppressWarnings("checkstyle:needbraces")
89 static void parseSignalHead(final NodeList nodeList, final VissimNetworkLaneParser parser)
90 throws SAXException, NetworkException
91 {
92 for (Node linksNode : XMLParser.getNodes(nodeList, "signalHeads"))
93 {
94
95 for (Node node : XMLParser.getNodes(linksNode.getChildNodes(), "signalHead"))
96 {
97 NamedNodeMap attributes = node.getAttributes();
98
99 SignalHeadTag signalHeadTag = new SignalHeadTag();
100
101 if (attributes.getNamedItem("lane") == null)
102 {
103 throw new SAXException("SignalHead: missing attribute: lane");
104 }
105 String laneLink = attributes.getNamedItem("lane").getNodeValue().trim();
106 String[] laneLinkInfo = laneLink.split("\\s+");
107 signalHeadTag.linkName = laneLinkInfo[0];
108 signalHeadTag.laneName = laneLinkInfo[1];
109
110 if (attributes.getNamedItem("no") == null)
111 {
112 throw new SAXException("SignalHead: missing attribute: no");
113 }
114 signalHeadTag.no = attributes.getNamedItem("no").getNodeValue().trim();
115
116 if (attributes.getNamedItem("pos") == null)
117 {
118 throw new SAXException("SignalHead: missing attribute: pos");
119 }
120 signalHeadTag.positionStr = attributes.getNamedItem("pos").getNodeValue().trim();
121
122 if (attributes.getNamedItem("sg") == null)
123 {
124 throw new SAXException("SignalHead: missing attribute: sg");
125 }
126 signalHeadTag.signalGroup = attributes.getNamedItem("sg").getNodeValue().trim();
127
128 parser.getSignalHeadTags().put(signalHeadTag.no, signalHeadTag);
129
130 }
131 }
132
133 }
134
135
136 @Override
137 public final String toString()
138 {
139 return "TrafficLightTag [name=" + this.no + ", positionStr=" + this.positionStr + ", className=" + this.className + "]";
140 }
141
142 }