source: tmcsimulator/trunk/src/atmsdriver/model/LoopDetector.java @ 79

Revision 79, 3.0 KB checked in by jtorres, 9 years ago (diff)

new atmsdriver package in trunk. fep_rpc_client dynamic data packing added in branches. fep_rpc_client refactored data packing code into static DataPacker? class. Added vds_data folder into config/. Added new project configuration for ATMSDriver.

Line 
1package atmsdriver.model;
2
3import java.util.ArrayList;
4import java.util.List;
5import org.w3c.dom.Document;
6import org.w3c.dom.Element;
7
8/** A LoopDetector represents a single detector for a single lane in a network.
9 *
10 *  A LoopDetector contains static meta data, and three dynamic attributes: vol,
11 *  occ, and spd.
12 *
13 * @author John A. Torres
14 * @version 09/10/2017
15 */
16public class LoopDetector 
17{
18    /* static data */
19    final private int loopID;
20    final private String loopLocation;
21    final private int laneNum;
22   
23    /* dynamic data */
24    private int vol;
25    private int occ;
26    private int spd;
27   
28    public LoopDetector(int loopID, String loopLocation, int laneNum)
29    {
30        /* Set static data */
31        this.loopID = loopID;
32        this.loopLocation = loopLocation;
33        this.laneNum = laneNum;
34       
35        /* Init dynamic data */
36        this.vol = 0;
37        this.spd = 0;
38        this.occ = 0;
39    }
40   
41    private static enum XML_TAGS
42    {
43        LOOP_ID("Loop_ID"),
44        LOOP_LOCATION("Loop_Location"),
45        LANE_NUM("Lane_Num"),
46        VOL("Vol"),
47        SPD("Spd"),
48        OCC("Occ"),
49        LOOP("Loop");
50       
51        String tag;
52       
53        private XML_TAGS(String n)
54        {
55            tag = n;
56        }
57    }
58   
59    /**
60     * Updates loop detector dynamic attributes.
61     * @param vol volume
62     * @param occ occupancy
63     * @param spd speed
64     */
65    public void updateLoop(int vol, int occ, int spd)
66    {
67        this.vol = vol;
68        this.occ = occ;
69        this.spd = spd;
70    }
71   
72    public void toXML(Element currElem)
73    {
74        Document theDoc = currElem.getOwnerDocument();
75       
76        Element loopElement = theDoc.createElement(XML_TAGS.LOOP.tag);
77        currElem.appendChild(loopElement);
78       
79        Element loopIDElement = theDoc.createElement(XML_TAGS.LOOP_ID.tag);
80        loopIDElement.appendChild(theDoc.createTextNode(String.valueOf(this.loopID)));
81        loopElement.appendChild(loopIDElement);
82       
83        Element loopLocElement = theDoc.createElement(XML_TAGS.LOOP_LOCATION.tag);
84        loopLocElement.appendChild(theDoc.createTextNode(this.loopLocation));
85        loopElement.appendChild(loopLocElement);
86       
87        Element laneNumElement = theDoc.createElement(XML_TAGS.LANE_NUM.tag);
88        laneNumElement.appendChild(theDoc.createTextNode(String.valueOf(this.laneNum)));
89        loopElement.appendChild(laneNumElement);
90       
91        Element volElement = theDoc.createElement(XML_TAGS.VOL.tag);
92        volElement.appendChild(theDoc.createTextNode(String.valueOf(this.vol)));
93        loopElement.appendChild(volElement);
94       
95        Element occElement = theDoc.createElement(XML_TAGS.OCC.tag);
96        occElement.appendChild(theDoc.createTextNode(String.valueOf(this.occ)));
97        loopElement.appendChild(occElement);
98       
99        Element spdElement = theDoc.createElement(XML_TAGS.SPD.tag);
100        spdElement.appendChild(theDoc.createTextNode(String.valueOf(this.spd)));
101        loopElement.appendChild(spdElement);
102    }
103}
Note: See TracBrowser for help on using the repository browser.