source: proiecte/ptvs/src/vnsim/gui/selector/RouteDesigner.java @ 31

Last change on this file since 31 was 31, checked in by (none), 14 years ago
File size: 4.8 KB
Line 
1/************************************************************************************
2 * Copyright (C) 2008 by Politehnica University of Bucharest and Rutgers University
3 * All rights reserved.
4 * Refer to LICENSE for terms and conditions of use.
5 ***********************************************************************************/
6package vnsim.gui.selector;
7
8import java.io.EOFException;
9import java.io.File;
10import java.io.FileInputStream;
11import java.io.FileOutputStream;
12import java.io.InputStream;
13import java.io.ObjectInputStream;
14import java.io.ObjectOutputStream;
15import java.util.Vector;
16import java.util.logging.*;
17
18import vnsim.map.object.Globals;
19import vnsim.map.object.Map;
20import vnsim.vehicular.scenarios.*;
21import vnsim.gui.MapLoader;
22import vnsim.gui.Utils;
23import vnsim.gui.Utils.ClassSystemView;
24
25public class RouteDesigner {
26
27        /** Logger used by this class */
28        private static final transient Logger logger = Logger.getLogger("gui.selector.ScenarioDesigner");
29
30        public Vector<ScenarioMap> existingScenarios;
31
32        public ScenarioSelection scenarioSelector;
33
34        public RouteConfiguration routeConfigurator;
35
36        Scenario finalConfiguration;
37
38        public RouteDesigner(String fileIn) {
39                ScenarioMap s;
40                try {
41                        existingScenarios = new Vector<ScenarioMap>();
42                        final ClassSystemView f1 = new ClassSystemView(fileIn);
43                        String[] files = f1.list();
44                        File f = new File(System.getProperty("user.home") + File.separatorChar
45                                        + fileIn.replace('/', File.separatorChar).replace('\\', File.separatorChar));
46                        if (f.exists() && f.isDirectory()) {
47                                String[] f2 = f.list();
48                                Vector<String> v = new Vector<String>();
49                                if (files != null)
50                                        for (int i = 0; i < files.length; i++)
51                                                if (!v.contains(files[i]))
52                                                        v.add(files[i]);
53                                if (f2 != null)
54                                        for (int i = 0; i < f2.length; i++)
55                                                if (!v.contains(f2[i]))
56                                                        v.add(f2[i]);
57                                files = new String[v.size()];
58                                files = v.toArray(files);
59                        }
60                        final String dir = f.getAbsolutePath();
61                        if (files != null && files.length != 0) {
62                                for (int i = 0; i < files.length; i++) {
63                                        ObjectInputStream ois = null;
64                                        f = new File(dir + File.separatorChar + files[i]);
65                                        if (f.isDirectory())
66                                                continue;
67                                        if (f.exists() && f.isFile() && f.canRead()) {
68                                                ois = new ObjectInputStream(new FileInputStream(f));
69                                        } else {
70                                                try {
71                                                        InputStream in = Utils.getInstance().openStream(
72                                                                        fileIn + (fileIn.endsWith("/") ? "" : "/") + files[i]);
73                                                        if (in == null)
74                                                                continue;
75                                                        ois = new ObjectInputStream(in);
76                                                } catch (Throwable t) {
77                                                        logger.log(Level.SEVERE, "Error reading " + fileIn + "/" + files[i], t);
78                                                        System.exit(0);
79                                                }
80                                        }
81                                        while (true) {
82                                                try {
83                                                        s = (ScenarioMap) ois.readObject();
84                                                        if (s != null) {
85                                                                existingScenarios.add(s);
86                                                        }
87                                                } catch (EOFException e) {
88                                                        break;
89                                                } catch (Exception e) {
90                                                        e.printStackTrace();
91                                                }
92                                        }
93                                        ois.close();
94                                }
95                        }
96                } catch (Exception e) {
97                        logger.log(Level.SEVERE, "Error reading ScenarioMaps", e);
98                        System.exit(0);
99                }
100
101        }
102
103        public boolean getScenario() {
104                if (MapLoader.listSmf.getSelectedIndex() == -1) {
105                        System.err.println("Selecteaza un scenariu gol!");
106                        return false;
107                }
108                int id = -1;
109                String s = ((String) MapLoader.listSmf.getSelectedValue());
110                String scenariu = s.substring(0, s.length() - 4);
111                System.err.println(scenariu);
112                System.out.println(existingScenarios.size() + "!!!!!!!!!" + scenariu);
113                for (int i = 0; i < existingScenarios.size(); i++) {
114                        System.err.println(existingScenarios.get(i).name);
115                        if (existingScenarios.get(i).name.equals(scenariu)) {
116                                id = i;
117                                break;
118                        }
119                }
120                logger.info("Map selected: " + id);
121                try {
122                        ObjectInputStream ois = null;
123                        String fn = existingScenarios.elementAt(id).mapFileName;
124                        if (fn.startsWith(".")) {
125                                fn = fn.substring(1);
126                        }
127                        String dir = System.getProperty("user.home") + File.separatorChar
128                                        + fn.replace('/', File.separatorChar).replace('\\', File.separatorChar);
129                        File f = new File(dir);
130                        if (f.exists() && f.isFile() && f.canRead())
131                                ois = new ObjectInputStream(new FileInputStream(f));
132                        else
133                                ois = new ObjectInputStream(Utils.getInstance().openStream(fn.replace('\\', '/')));
134                        Globals.map = (Map) ois.readObject();
135                        ois.close();
136                } catch (Exception ex) {
137                        ex.printStackTrace();
138                }
139                this.routeConfigurator = RouteConfiguration.getInstance(this, this.existingScenarios.elementAt(id), null);
140                routeConfigurator.setVisible(true);
141                return true;
142        }
143
144        public void afterExit() {
145                finalConfiguration = this.routeConfigurator.getScenario();
146                setPreferences(finalConfiguration);
147                this.routeConfigurator.dispose();
148                logger.info("FINAL CONFIGURATION SAVED!");
149        }
150
151        public void setPreferences(Scenario s) {
152        }
153}
Note: See TracBrowser for help on using the repository browser.