VehicleReader.java
Go to the documentation of this file.00001 package ns2;
00002
00003 import java.io.FileInputStream;
00004 import java.io.IOException;
00005 import java.io.InputStream;
00006 import java.util.List;
00007 import java.util.Map;
00008
00009 import javax.xml.stream.XMLInputFactory;
00010 import javax.xml.stream.XMLStreamConstants;
00011 import javax.xml.stream.XMLStreamException;
00012 import javax.xml.stream.XMLStreamReader;
00013
00019 public class VehicleReader {
00027 public static void read(
00028 String trace,
00029 List<String> vehicleId,
00030 Map<String, Double> vehicleFirstOcc,
00031 Map<String, Double> vehicleLastOcc) {
00032 try {
00033 InputStream in = new FileInputStream(trace);
00034 XMLInputFactory factory = XMLInputFactory.newInstance();
00035 XMLStreamReader parser = factory.createXMLStreamReader(in);
00036 float time = -1;
00037
00038 for (int event = parser.next(); event != XMLStreamConstants.END_DOCUMENT; event = parser.next()) {
00039 if (event == XMLStreamConstants.START_ELEMENT) {
00040
00041 if (parser.getLocalName().equals("timestep")) {
00042 for (int attr = 0; attr < parser.getAttributeCount(); attr++) {
00043 String attrName = parser.getAttributeLocalName(attr);
00044 String value = parser.getAttributeValue(attr);
00045 if ("time".equals(attrName)) {
00046 time = Float.parseFloat(value);
00047 }
00048 }
00049 }
00050
00051 if (parser.getLocalName().equals("vehicle")) {
00052 String id = "";
00053 for (int attr = 0; attr < parser.getAttributeCount(); attr++) {
00054 String attrName = parser.getAttributeLocalName(attr);
00055 String value = parser.getAttributeValue(attr);
00056 if ("id".equals(attrName)) {
00057 id = value;
00058 }
00059 }
00060
00061
00062 if (!vehicleId.contains(id)) {
00063 vehicleId.add(id);
00064
00065 vehicleFirstOcc.put(id, new Double(time));
00066 }
00067
00068 vehicleLastOcc.put(id, new Double(time));
00069 }
00070 }
00071 }
00072 parser.close();
00073 } catch (XMLStreamException ex) {
00074 System.err.println(ex);
00075 } catch (IOException ex) {
00076 System.err.println(ex);
00077 }
00078 }
00079 }