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;
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
00101 e.printStackTrace();
00102 } catch (SAXException e) {
00103
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();
00126
00127 System.out.println("Performing Simulation...");
00128 try {
00129 saxParser.parse(new File(ndumpFile), saxHandler);
00130 } catch (SAXException e) {
00131
00132 e.printStackTrace();
00133 } catch (IOException e) {
00134
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 }