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             // parse trace file
00038             for (int event = parser.next(); event != XMLStreamConstants.END_DOCUMENT; event = parser.next()) {
00039                 if (event == XMLStreamConstants.START_ELEMENT) {
00040                     // get current time
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                     // vehicle element found
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                         // add id if not already added
00062                         if (!vehicleId.contains(id)) {
00063                             vehicleId.add(id);
00064                             // id is new -> first occurence of id
00065                             vehicleFirstOcc.put(id, new Double(time));
00066                         }
00067                         // maybe last occurence of id
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 }

Generated on Wed May 5 00:06:37 2010 for Sumo - Simulation of Urban MObility by  doxygen 1.5.6