package ns2; import java.io.FileNotFoundException; import java.io.PrintWriter; import java.util.Map; import java.util.List; /** * class for writing ns2 activity files * activity files enable vehicles at first occurence and * disable vehicles at last occurence * @author Thimor Bohn <bohn@itm.uni-luebeck.de> * */ public class ActivityWriter { /** * working method * @param activity name of ns2 activity file * @param wantedVehicle list of vehicles to be selected for ns2 * @param vehicleNewId list of vehicle ids for ns2 * @param vehicleFirstOcc map: vehicle id -> first occurence of vehicle in sumo * @param vehicleLastOcc map: vehicle id -> last occurence of vehicle in sumo * @param begin sumo time at which ns2 should start to simulate */ public static void write( String activity, List<String> wantedVehicle, List<String> vehicleNewId, Map<String, Double> vehicleFirstOcc, Map<String, Double> vehicleLastOcc, double begin, double penetration, boolean hasPenetration) { try { PrintWriter out = new PrintWriter(activity); for (String id: wantedVehicle) { String newId = vehicleNewId.get(wantedVehicle.indexOf(id)); double minP = Double.parseDouble(newId)/wantedVehicle.size(); if (hasPenetration) { if (penetration > minP) { out.println("$ns_ at " + (vehicleFirstOcc.get(id)-begin) + " \"$g(" + newId + ") start\"" + "\t;# SUMO-ID: " + id); out.println("$ns_ at " + (vehicleLastOcc.get(id)-begin) + " \"$g(" + newId + ") stop\"" + "\t;# SUMO-ID: " + id); } } else { out.println("if { $opt(penetration) > " + minP + " } { "); out.println(" $ns_ at " + (vehicleFirstOcc.get(id)-begin) + " \"$g(" + newId + ") start\"" + "\t;# SUMO-ID: " + id); out.println(" $ns_ at " + (vehicleLastOcc.get(id)-begin) + " \"$g(" + newId + ") stop\"" + "\t;# SUMO-ID: " + id); out.println("}"); } } out.flush(); out.close(); } catch (FileNotFoundException ex) { System.err.println(ex); } } }