package ns2; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.List; import java.util.Map; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamConstants; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; /** * class for reading vehicle information * @author Thimor Bohn <bohn@itm.uni-luebeck.de> * */ public class VehicleReader { /** * working method * @param trace name of sumo trace file * @param vehicleId list of unique ids of vehicles in sumo simulation * @param vehicleFirstOcc map: vehicle id -> first occurence of vehicle in sumo * @param vehicleLastOcc map: vehicle id -> last occurence of vehicle in sumo */ public static void read( String trace, List<String> vehicleId, Map<String, Double> vehicleFirstOcc, Map<String, Double> vehicleLastOcc) { try { InputStream in = new FileInputStream(trace); XMLInputFactory factory = XMLInputFactory.newInstance(); XMLStreamReader parser = factory.createXMLStreamReader(in); float time = -1; // parse trace file for (int event = parser.next(); event != XMLStreamConstants.END_DOCUMENT; event = parser.next()) { if (event == XMLStreamConstants.START_ELEMENT) { // get current time if (parser.getLocalName().equals("timestep")) { for (int attr = 0; attr < parser.getAttributeCount(); attr++) { String attrName = parser.getAttributeLocalName(attr); String value = parser.getAttributeValue(attr); if ("time".equals(attrName)) { time = Float.parseFloat(value); } } } // vehicle element found if (parser.getLocalName().equals("vehicle")) { String id = ""; for (int attr = 0; attr < parser.getAttributeCount(); attr++) { String attrName = parser.getAttributeLocalName(attr); String value = parser.getAttributeValue(attr); if ("id".equals(attrName)) { id = value; } } // add id if not already added if (!vehicleId.contains(id)) { vehicleId.add(id); // id is new -> first occurence of id vehicleFirstOcc.put(id, new Double(time)); } // maybe last occurence of id vehicleLastOcc.put(id, new Double(time)); } } } parser.close(); } catch (XMLStreamException ex) { System.err.println(ex); } catch (IOException ex) { System.err.println(ex); } } }