SUMOPlayer.java

Go to the documentation of this file.
00001 
00009 package de.psi.telco.sumoplayer;
00010 
00011 import java.io.File;
00012 import java.io.IOException;
00013 
00014 import javax.xml.parsers.ParserConfigurationException;
00015 import javax.xml.parsers.SAXParser;
00016 import javax.xml.parsers.SAXParserFactory;
00017 
00018 import org.xml.sax.SAXException;
00019 
00028 public class SUMOPlayer extends Thread{
00029 
00030     private String ndumpFile = "sumo.ndump.xml";
00031     private String networkFile = "sumo.net.xml";
00032     private double trackingPropability = 0.01;
00033     private int jitter = 0; // in meters
00034     private String listenerClassname = "de.psi.telco.sumoplayer.SUMOPipedLocationListener";
00035     
00036     private SAXParser saxParser;
00037     private SUMOSAXHandler saxHandler;
00038     
00043     public static void main(String[] args) {
00044         String nDumpFilename = "sumo.ndump.xml";
00045         String netFilename = "sumo.net.xml";
00046         String listenerClassname = "de.psi.telco.sumoplayer.SUMOPipedLocationListener";
00047         double propability = 0.01;
00048         int jitter = 0;
00049         
00050         for (int i = 0; i<args.length;i++){
00051             if (args[i].equals("-n") && args.length > i+1){
00052                 netFilename = args[i+1];
00053                 i++;
00054             }
00055             if (args[i].equals("-d") && args.length > i+1){
00056                 nDumpFilename = args[i+1];
00057                 i++;
00058             }
00059             if (args[i].equals("-l") && args.length > i+1){
00060                 listenerClassname = args[i+1];
00061                 i++;
00062             }
00063             if (args[i].equals("-e") && args.length > i+1){
00064                 propability = Double.parseDouble(args[i+1]);
00065                 i++;
00066             }
00067             if (args[i].equals("-j") && args.length > i+1){
00068                 jitter = Integer.parseInt(args[i+1]);
00069                 i++;
00070             }
00071         }
00072         
00073         File net = new File(netFilename);
00074         if (!net.exists()){
00075             System.out.println("SUMO Network file does not exist! set this with \"-n sumo.net.xml\". aborting");
00076             System.exit(1);
00077         }
00078         File ndump = new File(nDumpFilename);
00079         if (!ndump.exists()){
00080             System.out.println("SUMO ndump file does not exist! set this with \"-d sumo.ndump.xml\". aborting");
00081             System.exit(1);
00082         }
00083         
00084         SUMOPlayer player = new SUMOPlayer(nDumpFilename,netFilename,propability, jitter, listenerClassname);
00085         
00086         player.run();
00087     }
00088     
00095     private void init() {
00096         SAXParserFactory saxFactory = SAXParserFactory.newInstance();
00097         try {
00098             saxParser = saxFactory.newSAXParser();
00099         } catch (ParserConfigurationException e) {
00100             // TODO Auto-generated catch block
00101             e.printStackTrace();
00102         } catch (SAXException e) {
00103             // TODO Auto-generated catch block
00104             e.printStackTrace();
00105         }
00106         saxHandler = new SUMOSAXHandler(networkFile);
00107         saxHandler.setCar4carEquippedPropability(this.trackingPropability);
00108         saxHandler.setJitter(jitter);
00109         
00110         SUMOLocationListener listener = null;
00111         try {
00112             listener = (SUMOLocationListener) Class.forName(listenerClassname).newInstance();
00113         } catch (Exception e){
00114             e.printStackTrace();
00115             System.exit(1);
00116         }
00117         saxHandler.setListener(listener);
00118     }
00119     
00124     public void run() {
00125         this.init();    // read network first
00126         
00127         System.out.println("Performing Simulation...");
00128         try {
00129             saxParser.parse(new File(ndumpFile), saxHandler);
00130         } catch (SAXException e) {
00131             // TODO Auto-generated catch block
00132             e.printStackTrace();
00133         } catch (IOException e) {
00134             // TODO Auto-generated catch block
00135             e.printStackTrace();
00136         }
00137         System.out.println("done.");
00138     }
00139 
00146     public SUMOPlayer(String ndumpFile, String networkFile, double trackingPropability, int jitter, String listenerClassname){
00147         
00148         this.ndumpFile = ndumpFile;
00149         this.networkFile = networkFile;
00150         if (trackingPropability > 0) this.trackingPropability = trackingPropability;
00151         this.jitter = jitter;
00152         
00153         if (listenerClassname != null && listenerClassname.length() > 0){
00154             this.listenerClassname = listenerClassname;
00155         }
00156     }
00157 
00158 }

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