Warning: Can't use blame annotator:
svn blame failed on trunk/src/atmsdriver/trafficeventseditor/TimeFrames.java: ("Can't find a temporary directory: Internal error", 20014)

source: tmcsimulator/trunk/src/atmsdriver/trafficeventseditor/TimeFrames.java @ 422

Revision 422, 5.4 KB checked in by jdalbey, 7 years ago (diff)

Remove ATMS functionality. Reworked and simplified the Highway model to use only VDS data from PeMS. Updated all unit tests.

RevLine 
1
2package atmsdriver.trafficeventseditor;
3
4import tmcsim.highwaymodel.Highway;
5import tmcsim.highwaymodel.Highways;
6import tmcsim.highwaymodel.LoopDetector;
7import tmcsim.highwaymodel.LoopDetector.DOTCOLOR;
8import tmcsim.highwaymodel.Station;
9import java.util.ArrayList;
10import java.util.List;
11import java.util.Observable;
12import java.util.logging.Level;
13import java.util.logging.Logger;
14import tmcsim.common.SimulationException;
15
16/**
17 *
18 * @author jtorres
19 */
20public class TimeFrames extends Observable
21{
22    public List<TimeFrame> frames;
23    final public Highways highways;
24    public Highway currentHighway;
25    public TimeFrame currentTimeFrame;
26    public Station currentStation;
27    public LoopDetector currentLoopDetector;
28    public TrafficLaneEvent currentTrafficLaneEvent;
29   
30    public TimeFrames()
31    {
32        frames = new ArrayList<>();
33        highways = new Highways("./config/vds_data/postmile_coordinates.txt");
34    }
35   
36    public void addTimeFrame(String time)
37    {
38        TimeFrame frame = new TimeFrame(time);
39        frames.add(frame);
40       
41        setCurrentTimeFrame(this.frames.size() - 1);
42       
43        setChanged();
44        notifyObservers("add frame");
45    }
46   
47    public void addEventsToTimeFrame(int[] rows, DOTCOLOR dotcolor)
48    {
49        for(int row : rows)
50        {
51            TrafficLaneEvent event = new TrafficLaneEvent(currentHighway.routeNumber,
52                    currentStation, currentStation.loops.get(row), dotcolor);
53            currentTimeFrame.addEvent(event);
54        }
55       
56        setChanged();
57        notifyObservers("add event");
58    }
59   
60    public void setCurrentHighway(int index)
61    {
62        currentHighway = highways.highways.get(index);
63        currentStation = null;
64        currentLoopDetector = null;
65       
66        setChanged();
67        notifyObservers("select hwy");
68    }
69   
70    public void setCurrentTimeFrame(int index)
71    {
72        currentTimeFrame = frames.get(index);
73       
74        setChanged();
75        notifyObservers("select frame");
76    }
77   
78    public void setCurrentStation(int index)
79    {
80        currentStation = currentHighway.stations.get(index);
81        currentLoopDetector = null;
82       
83        setChanged();
84        notifyObservers("select station");
85    }
86   
87    public void setCurrentLoopDetector(int index)
88    {
89        currentLoopDetector = currentStation.loops.get(index);
90       
91        setChanged();
92        notifyObservers("select loop");
93    }
94
95    public void setCurrentTrafficLaneEvent(int index)
96    {
97        currentTrafficLaneEvent = currentTimeFrame.events.get(index);
98       
99        setChanged();
100        notifyObservers("select event");
101    }
102   
103    int getCurrentTrafficEventIndex()
104    {
105        return currentTimeFrame.events.indexOf(currentTrafficLaneEvent);
106    }
107   
108    int getCurrentTimeFrameIndex()
109    {
110        return frames.indexOf(currentTimeFrame);
111    }
112
113    int getCurrentHighwayIndex()
114    {
115        return highways.highways.indexOf(currentHighway);
116    }
117
118    public void deleteTrafficLaneEvent(int index)
119    {
120        currentTimeFrame.events.remove(index);
121       
122        if(currentTimeFrame.events.size() > 0)
123        {
124            if(index == 0)
125            {
126                currentTrafficLaneEvent = currentTimeFrame.events.get(0);
127            }
128            else
129            {
130                currentTrafficLaneEvent = currentTimeFrame.events.get(index - 1);
131            }
132        }
133        else
134        {
135            currentTrafficLaneEvent = null;
136        }
137       
138        setChanged();
139        notifyObservers("delete event");
140    }
141   
142    void deleteTimeFrame(int selectedIndex)
143    {
144        frames.remove(selectedIndex);
145       
146        if(frames.size() > 0)
147        {
148            if(selectedIndex == 0)
149            {
150                currentTimeFrame = frames.get(0);
151            }
152            else
153            {
154                currentTimeFrame = frames.get(selectedIndex - 1);
155            }
156        }
157        else
158        {
159            currentTimeFrame = null;
160        }
161       
162        setChanged();
163        notifyObservers("delete frame");
164    }
165
166    void singlePreviewStation()
167    {
168        highways.reset();
169        for(TrafficLaneEvent event : currentTimeFrame.events)
170        {
171            if(event.station.equals(currentStation))
172            {
173                highways.applyTrafficLaneEvent(event);
174            }
175        }
176        writeToFEP();
177    }
178
179    void singlePreviewHighways()
180    {
181        highways.reset();
182        for(TrafficLaneEvent event : currentTimeFrame.events)
183        {
184            highways.applyTrafficLaneEvent(event);
185        }
186        writeToFEP();
187    }
188   
189    void writeToFEP()
190    {
191            highways.toJson();
192    }
193
194    void cumulativePreviewStation()
195    {
196        highways.reset();
197        for(TimeFrame tf : frames)
198        {
199            for(TrafficLaneEvent e : tf.events)
200            {
201                if(e.station.equals(currentStation))
202                {
203                    highways.applyTrafficLaneEvent(e);
204                }
205            }
206           
207            if(tf.equals(currentTimeFrame))
208                break;
209        }
210        writeToFEP();
211    }
212
213    void cumulativePreviewHighways()
214    {
215        highways.reset();
216        for(TimeFrame tf : frames)
217        {
218            for(TrafficLaneEvent e : tf.events)
219            {
220                highways.applyTrafficLaneEvent(e);
221            }
222   
223            if(tf.equals(currentTimeFrame))
224                break;
225        }
226        writeToFEP();
227    }
228}
Note: See TracBrowser for help on using the repository browser.