/************************************************************************************ * Copyright (C) 2008 by Politehnica University of Bucharest and Rutgers University * All rights reserved. * Refer to LICENSE for terms and conditions of use. ***********************************************************************************/ package vnsim.gui.selector; import java.io.EOFException; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.Vector; import java.util.logging.*; import vnsim.map.object.Globals; import vnsim.map.object.Map; import vnsim.vehicular.scenarios.*; import vnsim.gui.MapLoader; import vnsim.gui.Utils; import vnsim.gui.Utils.ClassSystemView; public class RouteDesigner { /** Logger used by this class */ private static final transient Logger logger = Logger.getLogger("gui.selector.ScenarioDesigner"); public Vector existingScenarios; public ScenarioSelection scenarioSelector; public RouteConfiguration routeConfigurator; Scenario finalConfiguration; public RouteDesigner(String fileIn) { ScenarioMap s; try { existingScenarios = new Vector(); final ClassSystemView f1 = new ClassSystemView(fileIn); String[] files = f1.list(); File f = new File(System.getProperty("user.home") + File.separatorChar + fileIn.replace('/', File.separatorChar).replace('\\', File.separatorChar)); if (f.exists() && f.isDirectory()) { String[] f2 = f.list(); Vector v = new Vector(); if (files != null) for (int i = 0; i < files.length; i++) if (!v.contains(files[i])) v.add(files[i]); if (f2 != null) for (int i = 0; i < f2.length; i++) if (!v.contains(f2[i])) v.add(f2[i]); files = new String[v.size()]; files = v.toArray(files); } final String dir = f.getAbsolutePath(); if (files != null && files.length != 0) { for (int i = 0; i < files.length; i++) { ObjectInputStream ois = null; f = new File(dir + File.separatorChar + files[i]); if (f.isDirectory()) continue; if (f.exists() && f.isFile() && f.canRead()) { ois = new ObjectInputStream(new FileInputStream(f)); } else { try { InputStream in = Utils.getInstance().openStream( fileIn + (fileIn.endsWith("/") ? "" : "/") + files[i]); if (in == null) continue; ois = new ObjectInputStream(in); } catch (Throwable t) { logger.log(Level.SEVERE, "Error reading " + fileIn + "/" + files[i], t); System.exit(0); } } while (true) { try { s = (ScenarioMap) ois.readObject(); if (s != null) { existingScenarios.add(s); } } catch (EOFException e) { break; } catch (Exception e) { e.printStackTrace(); } } ois.close(); } } } catch (Exception e) { logger.log(Level.SEVERE, "Error reading ScenarioMaps", e); System.exit(0); } } public boolean getScenario() { if (MapLoader.listSmf.getSelectedIndex() == -1) { System.err.println("Selecteaza un scenariu gol!"); return false; } int id = -1; String s = ((String) MapLoader.listSmf.getSelectedValue()); String scenariu = s.substring(0, s.length() - 4); System.err.println(scenariu); System.out.println(existingScenarios.size() + "!!!!!!!!!" + scenariu); for (int i = 0; i < existingScenarios.size(); i++) { System.err.println(existingScenarios.get(i).name); if (existingScenarios.get(i).name.equals(scenariu)) { id = i; break; } } logger.info("Map selected: " + id); try { ObjectInputStream ois = null; String fn = existingScenarios.elementAt(id).mapFileName; if (fn.startsWith(".")) { fn = fn.substring(1); } String dir = System.getProperty("user.home") + File.separatorChar + fn.replace('/', File.separatorChar).replace('\\', File.separatorChar); File f = new File(dir); if (f.exists() && f.isFile() && f.canRead()) ois = new ObjectInputStream(new FileInputStream(f)); else ois = new ObjectInputStream(Utils.getInstance().openStream(fn.replace('\\', '/'))); Globals.map = (Map) ois.readObject(); ois.close(); } catch (Exception ex) { ex.printStackTrace(); } this.routeConfigurator = RouteConfiguration.getInstance(this, this.existingScenarios.elementAt(id), null); routeConfigurator.setVisible(true); return true; } public void afterExit() { finalConfiguration = this.routeConfigurator.getScenario(); setPreferences(finalConfiguration); this.routeConfigurator.dispose(); logger.info("FINAL CONFIGURATION SAVED!"); } public void setPreferences(Scenario s) { } }