Changeset 6 in tmcsimulator for trunk/src/tmcsim/simulationmanager
- Timestamp:
- 04/20/2016 02:29:52 PM (10 years ago)
- Location:
- trunk/src/tmcsim/simulationmanager
- Files:
-
- 4 edited
-
SimulationManager.java (modified) (2 diffs)
-
SimulationManagerModel.java (modified) (2 diffs)
-
SimulationManagerView.java (modified) (6 diffs)
-
actions/LoadScriptAction.java (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/tmcsim/simulationmanager/SimulationManager.java
r2 r6 9 9 import java.util.logging.Level; 10 10 import java.util.logging.Logger; 11 12 11 import javax.swing.JOptionPane; 13 12 import javax.swing.UIManager; 14 13 import tmcsim.common.CADEnums.PARAMICS_STATUS; 15 14 import tmcsim.common.SimulationException; 16 import tmcsim.common.CADEnums.PARAMICS_STATUS;17 15 18 16 /** 19 * Simulation Manager is the main class for this module. The Simulation Manager20 * is used to control the view and control the simulation. Simulation incidents21 * are loaded, removed, reschedule, and added from the Simulation Manager. The17 * Simulation Manager is the main class for this module. The Simulation Manager 18 * is used to control the view and control the simulation. Simulation incidents 19 * are loaded, removed, reschedule, and added from the Simulation Manager. The 22 20 * Simulation Manager provides functionality for connecting to the paramics 23 * communicator and applying diversions. A history of all events is shown as well.<br> 24 * The SimulationManager may be started at any point before, during, or after 25 * a simulation has begun. The SimulationManager connects to the CADSimulator 26 * and communicates through Java RMI methods. If two SimulationManagers are started, 27 * the second one started, chronologically, will receive communication from the 28 * CADSimulator. <br><br> 29 * The properties file for the SimulationManager class contains the following data.<br> 21 * communicator and applying diversions. A history of all events is shown as 22 * well.<br> 23 * The SimulationManager may be started at any point before, during, or after a 24 * simulation has begun. The SimulationManager connects to the CADSimulator and 25 * communicates through Java RMI methods. If two SimulationManagers are started, 26 * the second one started, chronologically, will receive communication from the 27 * CADSimulator. <br><br> 28 * The properties file for the SimulationManager class contains the following 29 * data.<br> 30 30 * <code> 31 31 * -----------------------------------------------------------------------------<br> 32 * Host Name The host name where the CADSimulator is located.<br>33 * Error File The target file to use for error logging.<br>32 * Host Name The host name where the CADSimulator is located.<br> 33 * Error File The target file to use for error logging.<br> 34 34 * -----------------------------------------------------------------------------<br> 35 35 * Example File: <br> 36 * CADSimulatorHost = localhost <br>37 * ErrorFile = sim_mgr_error.xml <br>36 * CADSimulatorHost = localhost <br> 37 * ErrorFile = sim_mgr_error.xml <br> 38 38 * -----------------------------------------------------------------------------<br> 39 39 * </code> 40 40 * 41 41 * @author Matthew Cechini (mcechini@calpoly.edu) 42 * @version $Date: 2009/04/17 16:27:47 $ $Revision: 1.7 42 * @version $Date: 2009/04/17 16:27:47 $ $Revision: 1.7 43 43 */ 44 public class SimulationManager { 45 46 /** Error logger. */ 44 public class SimulationManager 45 { 46 47 /** 48 * Error logger. 49 */ 47 50 private static Logger simManLogger = Logger.getLogger("tmcsim.simulationmanager"); 48 51 49 52 /** 50 53 * Enumeration containing property names. 54 * 51 55 * @author Matthew Cechini 52 56 */ 53 private static enum PROPERTIES { 54 CAD_SIM_HOST ("CADSimulatorHost"), 55 CAD_SIM_PORT ("CADSimulatorRMIPort"), 56 SCRIPT_DIR ("ScriptDir"), 57 FAKE_PARAMICS ("FakeParamicsConnection"); 58 57 private static enum PROPERTIES 58 { 59 60 CAD_SIM_HOST("CADSimulatorHost"), 61 CAD_SIM_PORT("CADSimulatorRMIPort"), 62 SCRIPT_DIR("ScriptDir"), 63 FAKE_PARAMICS("FakeParamicsConnection"); 59 64 public String name; 60 61 private PROPERTIES(String n) { 65 66 private PROPERTIES(String n) 67 { 62 68 name = n; 63 69 } 64 65 70 } 66 67 /** 68 * Instance of the SimulationManagerModel which communicates with the 69 * CAD Simulator to display the current simulation information. This 70 * model class contains the data that is displayed by the SimulationManagerView 71 * class. The View purely provides a GUI interface for the data contained within 71 /** 72 * Instance of the SimulationManagerModel which communicates with the CAD 73 * Simulator to display the current simulation information. This model class 74 * contains the data that is displayed by the SimulationManagerView class. 75 * The View purely provides a GUI interface for the data contained within 72 76 * the model. 73 77 */ 74 private SimulationManagerModel theSimManagerModel; 75 76 /** 77 * Instance of the SimulationManagerView class which provides a GUI for the user 78 * to view the current simulation information and to manage the simulation. The 79 * view communicates to the SimulationManagerModel class to get and set data. 80 */ 81 SimulationManagerView theSimManagerView; 82 83 /** The Properties object for the Simulation Manager. */ 78 SimulationManagerModel theSimManagerModel; 79 /** 80 * Instance of the SimulationManagerView class which provides a GUI for the 81 * user to view the current simulation information and to manage the 82 * simulation. The view communicates to the SimulationManagerModel class to 83 * get and set data. 84 */ 85 SimulationManagerView theSimManagerView; 86 /** 87 * The Properties object for the Simulation Manager. 88 */ 84 89 private Properties simManagerProperties; 85 86 /** 87 * Constructor. Set communication data members from properties file. Instantiate 88 * the SimulationManager Model and View objects, and set visibility to true. 89 * 90 * @param propertiesFile Properties file containing info for Simulation Manager. 91 */ 92 public SimulationManager(String propertiesFile) throws SimulationException { 93 94 try { 90 91 /** 92 * Constructor. Set communication data members from properties file. 93 * Instantiate the SimulationManager Model and View objects, and set 94 * visibility to true. 95 * 96 * @param propertiesFile Properties file containing info for Simulation 97 * Manager. 98 */ 99 public SimulationManager(String propertiesFile) throws SimulationException 100 { 101 102 try 103 { 95 104 simManagerProperties = new Properties(); 96 105 simManagerProperties.load(new FileInputStream(new File(propertiesFile))); 97 98 SimulationManagerView.SCRIPT_DIR = 99 simManagerProperties.getProperty(PROPERTIES.SCRIPT_DIR.name).trim();106 107 SimulationManagerView.SCRIPT_DIR = 108 simManagerProperties.getProperty(PROPERTIES.SCRIPT_DIR.name).trim(); 100 109 101 110 //make sure properties aren't null 102 if(simManagerProperties.getProperty(PROPERTIES.CAD_SIM_HOST.name) == null) 103 throw new Exception("CAD Simulator host property is null."); 104 105 if(simManagerProperties.getProperty(PROPERTIES.CAD_SIM_PORT.name) == null) 111 if (simManagerProperties.getProperty(PROPERTIES.CAD_SIM_HOST.name) == null) 112 { 113 throw new Exception("CAD Simulator host property is null."); 114 } 115 116 if (simManagerProperties.getProperty(PROPERTIES.CAD_SIM_PORT.name) == null) 117 { 106 118 throw new Exception("CAD Simulator port property is null."); 107 108 } 109 catch (Exception e)110 { 111 simManLogger.logp(Level.SEVERE, "SimulationManager", "Constructor", 119 } 120 121 } catch (Exception e) 122 { 123 simManLogger.logp(Level.SEVERE, "SimulationManager", "Constructor", 112 124 "Exception in reading properties file.", e); 113 125 114 126 throw new SimulationException(SimulationException.INITIALIZE_ERROR, e); 115 127 } 116 128 117 129 //Construct the SimulationManagerModel 118 try 119 { 130 try 131 { 120 132 theSimManagerModel = new SimulationManagerModel( 121 simManagerProperties.getProperty(PROPERTIES.CAD_SIM_HOST.name).trim(), 133 simManagerProperties.getProperty(PROPERTIES.CAD_SIM_HOST.name).trim(), 122 134 simManagerProperties.getProperty(PROPERTIES.CAD_SIM_PORT.name).trim()); 123 135 124 136 //Construct the SimulationManagerView and set up the Model-View references. 125 137 theSimManagerView = new SimulationManagerView(theSimManagerModel); 126 theSimManagerModel.setView(theSimManagerView); 127 } 128 catch (RemoteException re) 129 { 130 simManLogger.logp(Level.SEVERE, "SimulationManager", "Constructor", 138 theSimManagerModel.setView(theSimManagerView); 139 } catch (RemoteException re) 140 { 141 simManLogger.logp(Level.SEVERE, "SimulationManager", "Constructor", 131 142 "Unable to establish RMI ", re); 132 143 133 throw new SimulationException(SimulationException.CAD_SIM_CONNECT, re); 134 } 135 136 theSimManagerView.addWindowListener(new WindowListener() { 137 public void windowClosed(WindowEvent e) {} 138 public void windowOpened(WindowEvent e) {} 139 public void windowIconified(WindowEvent e) {} 140 public void windowDeiconified(WindowEvent e) {} 141 public void windowActivated(WindowEvent e) {} 142 public void windowDeactivated(WindowEvent e) {} 143 public void windowClosing(WindowEvent e) { 144 throw new SimulationException(SimulationException.CAD_SIM_CONNECT, re); 145 } 146 147 theSimManagerView.addWindowListener(new WindowListener() 148 { 149 public void windowClosed(WindowEvent e) 150 { 151 } 152 153 public void windowOpened(WindowEvent e) 154 { 155 } 156 157 public void windowIconified(WindowEvent e) 158 { 159 } 160 161 public void windowDeiconified(WindowEvent e) 162 { 163 } 164 165 public void windowActivated(WindowEvent e) 166 { 167 } 168 169 public void windowDeactivated(WindowEvent e) 170 { 171 } 172 173 public void windowClosing(WindowEvent e) 174 { 144 175 theSimManagerModel.disconnect(); 145 176 System.exit(0); 146 } 177 } 147 178 }); 148 179 149 if (Boolean.parseBoolean(simManagerProperties.getProperty(180 if (Boolean.parseBoolean(simManagerProperties.getProperty( 150 181 PROPERTIES.FAKE_PARAMICS.name).trim())) 151 182 { … … 154 185 155 186 //Show the SimulationManager 156 theSimManagerView.setVisible(true); 187 theSimManagerView.setVisible(true); 157 188 } 158 159 /** 160 * Main class. 161 * 189 190 /** 191 * Main class. 192 * 162 193 * @param args Command line arguments. 163 194 */ 164 static public void main(String[] args) { 195 static public void main(String[] args) 196 { 165 197 System.setProperty("SIM_MGR_PROPERTIES", "config/sim_manager_config.properties"); 166 167 try { 168 if(System.getProperty("SIM_MGR_PROPERTIES") != null) 198 //System.setProperty("swing.defaultlaf", "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"); 199 200 try 201 { 202 if (System.getProperty("SIM_MGR_PROPERTIES") != null) 169 203 { 170 204 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 171 205 172 206 new SimulationManager(System.getProperty("SIM_MGR_PROPERTIES")); 173 } 174 else 175 { 176 throw new Exception ("SIM_MGR_PROPERTIES system property not defined."); 177 } 178 } 179 catch (Exception e) 180 { 181 simManLogger.logp(Level.SEVERE, "SimulationManager", "Main", 207 } else 208 { 209 throw new Exception("SIM_MGR_PROPERTIES system property not defined."); 210 } 211 } catch (Exception e) 212 { 213 simManLogger.logp(Level.SEVERE, "SimulationManager", "Main", 182 214 "Error occured initializing application", e); 183 184 JOptionPane.showMessageDialog(null, e.getMessage(), 185 "Error - Program Exiting", JOptionPane.ERROR_MESSAGE);186 215 216 JOptionPane.showMessageDialog(null, e.getMessage(), 217 "Error - Program Exiting", JOptionPane.ERROR_MESSAGE); 218 187 219 System.exit(-1); 188 } 189 220 } 221 190 222 } 191 223 } 192 193 194 195 196 197 198 -
trunk/src/tmcsim/simulationmanager/SimulationManagerModel.java
r2 r6 10 10 import java.util.logging.Level; 11 11 import java.util.logging.Logger; 12 13 12 import tmcsim.cadmodels.CMSDiversion; 14 13 import tmcsim.cadmodels.CMSInfo; 15 14 import tmcsim.client.cadclientgui.data.Incident; 16 15 import tmcsim.client.cadclientgui.data.IncidentEvent; 16 import tmcsim.common.CADEnums.PARAMICS_STATUS; 17 import tmcsim.common.CADEnums.SCRIPT_STATUS; 17 18 import tmcsim.common.ScriptException; 18 19 import tmcsim.common.SimulationException; 19 import tmcsim.common.CADEnums.PARAMICS_STATUS;20 import tmcsim.common.CADEnums.SCRIPT_STATUS;21 20 import tmcsim.interfaces.CoordinatorInterface; 22 21 import tmcsim.interfaces.SimulationManagerInterface; 23 22 24 25 23 /** 26 * SimulationManagerModel is the model class for the Simulation Manager. All communication 27 * between the Coordinator and the Simulation Manager passes through this object. The view 28 * passes requests through local methods, and the Coordinator calls remote functions in this 29 * object to update the viewed simulation data. 30 * <br/> 31 * At construction, the SimulationManagerModel registers itself with the coordinator. 32 * Administrative commands for the simulation are received from the SimlationManagerView 33 * class, and then the appropriate Coordinator remote method is executed. During a 34 * simulation, the Coordinator calls remote methods contained in the SimulationManagerInterface. 35 * For a description of those methods, see the interface's documentation. After construction, 36 * this model class must have its setView() method called to set the reference to its view class. 37 * 24 * SimulationManagerModel is the model class for the Simulation Manager. All 25 * communication between the Coordinator and the Simulation Manager passes 26 * through this object. The view passes requests through local methods, and the 27 * Coordinator calls remote functions in this object to update the viewed 28 * simulation data. 29 * <br/> 30 * At construction, the SimulationManagerModel registers itself with the 31 * coordinator. Administrative commands for the simulation are received from the 32 * SimlationManagerView class, and then the appropriate Coordinator remote 33 * method is executed. During a simulation, the Coordinator calls remote methods 34 * contained in the SimulationManagerInterface. For a description of those 35 * methods, see the interface's documentation. After construction, this model 36 * class must have its setView() method called to set the reference to its view 37 * class. 38 * 38 39 * @see SimulationManagerView 39 40 * @see SimulationManagerInterface 40 * @author Matthew Cechini 41 * @author Matthew Cechini 41 42 * @version $Revision: 1.3 $ $Date: 2006/06/06 20:46:41 $ 42 43 */ 43 44 @SuppressWarnings("serial") 44 public class SimulationManagerModel extends UnicastRemoteObject 45 implements SimulationManagerInterface { 46 47 /** Error Logger. */ 45 public class SimulationManagerModel extends UnicastRemoteObject 46 implements SimulationManagerInterface 47 { 48 49 /** 50 * Error Logger. 51 */ 48 52 private Logger simManagerLogger = Logger.getLogger("tmcsim.simulationmanager"); 49 50 /** RMI interface for communication with the remote Coordinator. */ 53 /** 54 * RMI interface for communication with the remote Coordinator. 55 */ 51 56 private static CoordinatorInterface theCoorInt; 52 53 /** The SimulationManagerView object. */54 private SimulationManagerView theSimManagerView;55 56 57 /** 58 * Constructor. Establishes the RMI communication with the Coordinator.59 * 60 * @param hostname Host name of the CAD Simulator. 61 * @param portNumber Port number of the CAD Simulator RMI communication. 57 /** 58 * The SimulationManagerView object. 59 */ 60 private SimulationManagerView theSimManagerView; 61 62 /** 63 * Constructor. Establishes the RMI communication with the Coordinator. 64 * 65 * @param hostname Host name of the CAD Simulator. 66 * @param portNumber Port number of the CAD Simulator RMI communication. 62 67 * @throws RemoteException if error in RMI communication 63 * @throws SimulationException if there is an error in registering RMI methods. 64 */ 65 public SimulationManagerModel(String hostname, String portNumber) 66 throws RemoteException, SimulationException { 67 super(); 68 68 * @throws SimulationException if there is an error in registering RMI 69 * methods. 70 */ 71 public SimulationManagerModel(String hostname, String portNumber) 72 throws RemoteException, SimulationException 73 { 74 super(); 75 69 76 connect(hostname, portNumber); 70 } 71 77 } 78 72 79 /** 73 80 * Connect to the Coordinator's RMI object, and register this object for 74 81 * callback with the Coordinator. 75 * @param hostname Host name of the CAD Simulator. 76 * @param portNumber Port number of the CAD Simulator RMI communication. 77 * @throws SimulationException if there is an error creating the RMI connection. 78 */ 79 protected void connect(String hostname, String portNumber) 80 throws SimulationException { 81 82 * 83 * @param hostname Host name of the CAD Simulator. 84 * @param portNumber Port number of the CAD Simulator RMI communication. 85 * @throws SimulationException if there is an error creating the RMI 86 * connection. 87 */ 88 protected void connect(String hostname, String portNumber) 89 throws SimulationException 90 { 91 82 92 String coorIntURL = ""; 83 84 try { 85 coorIntURL = "rmi://" + hostname + ":" + portNumber + "/coordinator"; 86 87 theCoorInt = (CoordinatorInterface)Naming.lookup(coorIntURL); 88 theCoorInt.registerForCallback(this); 89 90 } 91 catch (Exception e) { 92 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 93 "establishRMIConnection", "Unable to establish RMI " + 94 "communication with the CAD Simulator. URL <" + coorIntURL + ">", e); 95 93 94 try 95 { 96 coorIntURL = "rmi://" + hostname + ":" + portNumber + "/coordinator"; 97 98 theCoorInt = (CoordinatorInterface) Naming.lookup(coorIntURL); 99 theCoorInt.registerForCallback(this); 100 101 } catch (Exception e) 102 { 103 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 104 "establishRMIConnection", "Unable to establish RMI " 105 + "communication with the CAD Simulator. URL <" + coorIntURL + ">", e); 106 96 107 throw new SimulationException(SimulationException.CAD_SIM_CONNECT, e); 97 } 98 } 99 100 /** 101 * This method unregisters this SimulationManager from the Coordinator and closes 102 * the RMI communication. 103 */ 104 public void disconnect() { 105 try { 108 } 109 } 110 111 /** 112 * This method unregisters this SimulationManager from the Coordinator and 113 * closes the RMI communication. 114 */ 115 public void disconnect() 116 { 117 try 118 { 106 119 theCoorInt.unregisterForCallback(this); 107 120 theCoorInt = null; 108 } 109 catch (Exception e){110 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 111 "closeSimManager", "Exception in unregistering Simulation" +112 "Manager from the CAD Simulator.", e);113 } 114 } 115 116 /** 117 * Set the local reference to the SimulationManagerView object. The view118 * isupdated with the current simulation time, script status, and Paramics119 * connection status. 121 } catch (Exception e) 122 { 123 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 124 "closeSimManager", "Exception in unregistering Simulation" 125 + "Manager from the CAD Simulator.", e); 126 } 127 } 128 129 /** 130 * Set the local reference to the SimulationManagerView object. The view is 131 * updated with the current simulation time, script status, and Paramics 132 * connection status. 120 133 * 121 134 * @param newView The instance of the SimulationManagerView class. 122 * @throws SimulationException if there is an error in RMI communication to the CAD Simulator. 123 */ 124 public void setView(SimulationManagerView newView) throws SimulationException { 125 try { 135 * @throws SimulationException if there is an error in RMI communication to 136 * the CAD Simulator. 137 */ 138 public void setView(SimulationManagerView newView) throws SimulationException 139 { 140 try 141 { 126 142 theSimManagerView = newView; 127 128 theSimManagerView.tick(theCoorInt.getCurrentSimulationTime()); 143 144 theSimManagerView.tick(theCoorInt.getCurrentSimulationTime()); 129 145 theSimManagerView.setScriptStatus(theCoorInt.getScriptStatus()); 130 146 theSimManagerView.setParamicsStatus(theCoorInt.getParamicsStatus()); 131 147 132 148 initialize(); 133 } 134 catch (RemoteException re){135 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 136 "startSimulation", "Unable to communicate with the " +137 "CAD Simulator.", re);138 139 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 140 } 141 142 } 143 149 } catch (RemoteException re) 150 { 151 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 152 "startSimulation", "Unable to communicate with the " 153 + "CAD Simulator.", re); 154 155 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 156 } 157 158 } 159 144 160 /** 145 161 * This method initializes the SimulationManager with all current simulation 146 * data from the Coordinator. If the simulation is running when the Simulation 147 * Manager is initialized, all previously occured incidents, events, and current 148 * diversion must be displayed. This method first loads the list of current 149 * incidents from the coordinator, then the triggered events, followed by 150 * all CMSInfo objects. The SimulationManagerView is notified of any current 151 * diversions within the CMSInfo objects. 152 * 153 * @throws SimulationException if there is an error in RMI communication or if the 154 * SimulationManagerView reference has not been set. 155 */ 156 protected void initialize() throws SimulationException { 157 158 try { 159 162 * data from the Coordinator. If the simulation is running when the 163 * Simulation Manager is initialized, all previously occured incidents, 164 * events, and current diversion must be displayed. This method first loads 165 * the list of current incidents from the coordinator, then the triggered 166 * events, followed by all CMSInfo objects. The SimulationManagerView is 167 * notified of any current diversions within the CMSInfo objects. 168 * 169 * @throws SimulationException if there is an error in RMI communication or 170 * if the SimulationManagerView reference has not been set. 171 */ 172 protected void initialize() throws SimulationException 173 { 174 175 try 176 { 177 160 178 //Load all incidents from Coordinator 161 loadIncidents(); 162 179 loadIncidents(); 180 163 181 //Load all triggered incidents from Coordinator 164 182 TreeMap<Integer, Vector<IncidentEvent>> tempEvents = theCoorInt.getTriggeredEvents(); 165 for(Integer key : tempEvents.keySet()) { 166 for(IncidentEvent ie : tempEvents.get(key)) 167 eventOccured(key, ie); 168 } 169 183 for (Integer key : tempEvents.keySet()) 184 { 185 for (IncidentEvent ie : tempEvents.get(key)) 186 { 187 eventOccured(key, ie); 188 } 189 } 190 170 191 //Load all current diversions from the Coordinator 171 192 TreeSet<String> cmsIDs = theCoorInt.getCMSIDs(); 172 CMSInfo cmsinfo = null; 173 for(String cms_id : cmsIDs) { 193 CMSInfo cmsinfo = null; 194 for (String cms_id : cmsIDs) 195 { 174 196 cmsinfo = theCoorInt.getCMSDiversionInfo(cms_id); 175 176 for(CMSDiversion div : cmsinfo.possibleDiversions) { 177 if(div.getCurrDiv() != 0) { 197 198 for (CMSDiversion div : cmsinfo.possibleDiversions) 199 { 200 if (div.getCurrDiv() != 0) 201 { 178 202 theSimManagerView.addDiversion(cmsinfo, div); 179 } 203 } 180 204 } 181 } 182 205 } 206 183 207 //Send the list of CMS IDs to the View. 184 208 theSimManagerView.setCMS_IDList(cmsIDs.toArray()); 185 } 186 catch (Exception e) { 187 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 209 210 } catch (Exception e) 211 { 212 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 188 213 "initialize", "Unable to initialize the SimulationManager.", e); 189 214 190 215 throw new SimulationException(SimulationException.CAD_SIM_COMM, e); 191 } 192 } 193 194 public void tick(long theTime) throws RemoteException { 195 if(theSimManagerView != null) 196 theSimManagerView.tick(theTime); 197 } 198 199 public void incidentAdded(Incident newIncident) throws RemoteException { 200 if(theSimManagerView != null) { 216 } 217 } 218 219 public void tick(long theTime) throws RemoteException 220 { 221 if (theSimManagerView != null) 222 { 223 theSimManagerView.tick(theTime); 224 } 225 } 226 227 public void incidentAdded(Incident newIncident) throws RemoteException 228 { 229 if (theSimManagerView != null) 230 { 201 231 Integer logNum = new Integer(newIncident.getLogNumber()); 202 203 theSimManagerView.addIncident(newIncident); 232 233 theSimManagerView.addIncident(newIncident); 204 234 theSimManagerView.addIncidentTab(logNum); 205 235 } 206 236 } 207 237 208 public void incidentStarted(Integer logNumber) throws RemoteException { 209 if(theSimManagerView != null) { 238 public void incidentStarted(Integer logNumber) throws RemoteException 239 { 240 if (theSimManagerView != null) 241 { 210 242 theSimManagerView.startIncident(logNumber); 211 243 } 212 244 } 213 245 214 public void incidentRemoved(Integer logNumber) throws RemoteException { 215 if(theSimManagerView != null) { 246 public void incidentRemoved(Integer logNumber) throws RemoteException 247 { 248 if (theSimManagerView != null) 249 { 216 250 theSimManagerView.removeIncident(logNumber); 217 251 theSimManagerView.removeIncidentTab(logNumber); 218 252 } 219 253 } 220 221 public void eventOccured(Integer logNumber, IncidentEvent theEvent) throws RemoteException { 222 if(theSimManagerView != null) { 254 255 public void eventOccured(Integer logNumber, IncidentEvent theEvent) throws RemoteException 256 { 257 if (theSimManagerView != null) 258 { 223 259 theSimManagerView.addIncidentEvent(logNumber, theEvent); 224 260 } 225 261 } 226 227 public void setScriptStatus(SCRIPT_STATUS newStatus) throws RemoteException { 228 if(theSimManagerView != null) 229 theSimManagerView.setScriptStatus(newStatus); 230 } 231 232 public void setParamicsStatus(PARAMICS_STATUS newStatus) throws RemoteException { 233 if(theSimManagerView != null) 234 theSimManagerView.setParamicsStatus(newStatus); 235 236 } 237 238 /** 239 * This method passes the view's request to start the simulation 240 * on to the remote coordinator. 262 263 public void setScriptStatus(SCRIPT_STATUS newStatus) throws RemoteException 264 { 265 if (theSimManagerView != null) 266 { 267 theSimManagerView.setScriptStatus(newStatus); 268 } 269 } 270 271 public void setParamicsStatus(PARAMICS_STATUS newStatus) throws RemoteException 272 { 273 if (theSimManagerView != null) 274 { 275 theSimManagerView.setParamicsStatus(newStatus); 276 } 277 278 } 279 280 /** 281 * This method passes the view's request to start the simulation on to the 282 * remote coordinator. 241 283 * 242 284 * @throws ScriptException if an error occurs in started the simulation. 243 * @throws SimulationException if there is an error in RMI communication to the CAD Simulator. 244 */ 245 public void startSimulation() throws ScriptException, SimulationException { 246 247 try { 285 * @throws SimulationException if there is an error in RMI communication to 286 * the CAD Simulator. 287 */ 288 public void startSimulation() throws ScriptException, SimulationException 289 { 290 291 try 292 { 248 293 theCoorInt.startSimulation(); 249 } 250 catch (RemoteException re) { 251 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 252 "startSimulation", "Unable to communicate with the " + 253 "CAD Simulator.", re); 254 255 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 256 } 257 258 } 259 260 /** 261 * This method passes the view's request to reset the simulation 262 * on to the remote coordinator. The View's simulation time is reset to 0. 263 * The view's incident tabs are cleared and incident list reset and initialized 264 * with the current list of incidents. The list of diversions is also reset. 265 * 266 * @throws SimulationException if there is an error in RMI communication to the CAD Simulator. 267 */ 268 public void resetSimulation() throws SimulationException { 269 270 try { 294 } catch (RemoteException re) 295 { 296 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 297 "startSimulation", "Unable to communicate with the " 298 + "CAD Simulator.", re); 299 300 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 301 } 302 303 } 304 305 /** 306 * This method passes the view's request to reset the simulation on to the 307 * remote coordinator. The View's simulation time is reset to 0. The view's 308 * incident tabs are cleared and incident list reset and initialized with 309 * the current list of incidents. The list of diversions is also reset. 310 * 311 * @throws SimulationException if there is an error in RMI communication to 312 * the CAD Simulator. 313 */ 314 public void resetSimulation() throws SimulationException 315 { 316 317 try 318 { 271 319 theCoorInt.resetSimulation(); 272 320 273 321 tick(0); 274 322 theSimManagerView.resetIncidentTabs(); … … 276 324 theSimManagerView.resetDiversions(); 277 325 278 loadIncidents(); 279 } 280 catch (RemoteException re) { 281 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 282 "resetSimulation", "Unable to communicate with the " + 283 "CAD Simulator.", re); 284 285 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 286 } 287 288 } 289 290 /** 291 * This method passes the view's request to pause the simulation 292 * on to the remote coordinator. 293 * 294 * @throws SimulationException if there is an error in RMI communication to the CAD Simulator. 295 */ 296 public void pauseSimulation() throws SimulationException { 297 298 try { 326 loadIncidents(); 327 } catch (RemoteException re) 328 { 329 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 330 "resetSimulation", "Unable to communicate with the " 331 + "CAD Simulator.", re); 332 333 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 334 } 335 336 } 337 338 /** 339 * This method passes the view's request to pause the simulation on to the 340 * remote coordinator. 341 * 342 * @throws SimulationException if there is an error in RMI communication to 343 * the CAD Simulator. 344 */ 345 public void pauseSimulation() throws SimulationException 346 { 347 348 try 349 { 299 350 theCoorInt.pauseSimulation(); 300 } 301 catch (RemoteException re) { 302 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 303 "pauseSimulation", "Unable to communicate with the " + 304 "CAD Simulator.", re); 305 306 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 307 } 308 309 } 310 311 /** 312 * This method passes the view's request to goto a new simulation 313 * time on to the remote coordinator. 314 * 315 * @param time Simulation time 316 * @throws SimulationException if there is an error in RMI communication to the CAD Simulator. 317 */ 318 public void gotoSimulationTime(long time) throws SimulationException { 319 320 try { 351 } catch (RemoteException re) 352 { 353 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 354 "pauseSimulation", "Unable to communicate with the " 355 + "CAD Simulator.", re); 356 357 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 358 } 359 360 } 361 362 /** 363 * This method passes the view's request to goto a new simulation time on to 364 * the remote coordinator. 365 * 366 * @param time Simulation time 367 * @throws SimulationException if there is an error in RMI communication to 368 * the CAD Simulator. 369 */ 370 public void gotoSimulationTime(long time) throws SimulationException 371 { 372 373 try 374 { 321 375 theCoorInt.gotoSimulationTime(time); 322 } 323 catch (RemoteException re){324 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 325 "gotoSimulationTime", "Unable to communicate with the " +326 "CAD Simulator.", re);327 328 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 329 } 330 } 331 332 /** 333 * This method passes the view's request to load a script file on to the 334 * remote Coordinator. If this is successful, the View's incident tabs335 * are cleared and incident list reset and initialized with the current336 * list of incidents. If the load is not successful, the View's incident tabs337 * and incident list are cleared.The list of diversions is also reset.376 } catch (RemoteException re) 377 { 378 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 379 "gotoSimulationTime", "Unable to communicate with the " 380 + "CAD Simulator.", re); 381 382 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 383 } 384 } 385 386 /** 387 * This method passes the view's request to load a script file on to the 388 * remote Coordinator. If this is successful, the View's incident tabs are 389 * cleared and incident list reset and initialized with the current list of 390 * incidents. If the load is not successful, the View's incident tabs and 391 * incident list are cleared. The list of diversions is also reset. 338 392 * 339 393 * @param scriptFile the File chosen by the user in the open file dialog. 340 394 * @throws ScriptException if an error occurs in reading the script file. 341 * @throws SimulationException if there is an error in RMI communication to the CAD Simulator. 342 */ 343 public void loadScript(File scriptFile) throws ScriptException, SimulationException{ 344 345 try { 395 * @throws SimulationException if there is an error in RMI communication to 396 * the CAD Simulator. 397 */ 398 public void loadScript(File scriptFile) throws ScriptException, SimulationException 399 { 400 401 try 402 { 346 403 theCoorInt.loadScriptFile(scriptFile); 347 404 348 405 tick(0); 349 406 theSimManagerView.resetIncidentTabs(); 350 407 theSimManagerView.resetIncidents(); 351 408 theSimManagerView.resetDiversions(); 352 409 353 410 loadIncidents(); 354 }355 catch(ScriptException se){411 } catch (ScriptException se) 412 { 356 413 theSimManagerView.resetIncidentTabs(); 357 414 theSimManagerView.resetIncidents(); 358 415 theSimManagerView.resetDiversions(); 359 416 throw se; 360 } 361 catch (RemoteException re) { 362 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 363 "loadScript", "Unable to communicate with the " + 364 "CAD Simulator.", re); 365 366 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 367 } 368 } 369 370 /** 371 * This method passes the view's request to create a connection between 372 * the CADSimulator and the Paramics Communicator on to the remote Coordinator. 373 * 374 * @throws SimulationException if there is an error in RMI communication to the CAD Simulator. 375 */ 376 public void connectToParamics() throws SimulationException { 377 378 try { 417 } catch (RemoteException re) 418 { 419 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 420 "loadScript", "Unable to communicate with the " 421 + "CAD Simulator.", re); 422 423 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 424 } 425 } 426 427 /** 428 * This method passes the view's request to create a connection between the 429 * CADSimulator and the Paramics Communicator on to the remote Coordinator. 430 * 431 * @throws SimulationException if there is an error in RMI communication to 432 * the CAD Simulator. 433 */ 434 public void connectToParamics() throws SimulationException 435 { 436 437 try 438 { 379 439 theCoorInt.connectToParamics(); 380 } 381 catch (RemoteException re) { 382 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 383 "connectToParamics", "Unable to communicate with the " + 384 "CAD Simulator.", re); 385 386 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 387 } 388 } 389 390 /** 391 * This method passes the view's request to drop the connection between 392 * the CADSimulator and the Paramics Communicator on to the 393 * remote Coordinator. 394 * 395 * @throws SimulationException if there is an error in RMI communication to the CAD Simulator. 396 */ 397 public void disconnectFromParamics() throws SimulationException { 398 399 try { 440 } catch (RemoteException re) 441 { 442 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 443 "connectToParamics", "Unable to communicate with the " 444 + "CAD Simulator.", re); 445 446 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 447 } 448 } 449 450 /** 451 * This method passes the view's request to drop the connection between the 452 * CADSimulator and the Paramics Communicator on to the remote Coordinator. 453 * 454 * @throws SimulationException if there is an error in RMI communication to 455 * the CAD Simulator. 456 */ 457 public void disconnectFromParamics() throws SimulationException 458 { 459 460 try 461 { 400 462 theCoorInt.disconnectFromParamics(); 401 } 402 catch (RemoteException re) { 403 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 404 "disconnectFromParamics", "Unable to communicate with the " + 405 "CAD Simulator.", re); 406 407 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 408 } 409 } 410 411 /** 412 * This method passes the view's request to load a paramics 413 * network on to the remote Coordinator. 414 * 415 * @param networkID The unique network ID that is being loaded 416 * 417 * @throws ScriptException if there is an error in loading the network 418 * @throws SimulationException if there is an error in RMI communication to the CAD Simulator. 419 */ 420 public void loadParamicsNetwork(int networkID) throws ScriptException, SimulationException { 421 try { 422 theCoorInt.loadParamicsNetwork(networkID); 423 } catch (RemoteException re) { 424 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 425 "loadParamicsNetwork", "Unable to communicate with the " + 426 "CAD Simulator.", re); 427 428 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 429 } 430 } 431 432 /** 433 * This method passes the view's request to get the value of the 434 * currently loaded paramics network on to the remote Coordinator. 435 * 436 * @return Value of the loaded paramics network. 437 * @throws SimulationException if there is an error in RMI communication to the CAD Simulator. 438 */ 439 public int getParamicsNetworkLoaded() throws SimulationException { 440 try { 441 return theCoorInt.getParamicsNetworkLoaded(); 442 } catch (RemoteException re) { 443 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 444 "getParamicsNetworkLoaded", "Unable to communicate with the " + 445 "CAD Simulator.", re); 446 447 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 448 } 449 } 450 451 /** 452 * This method passes the view's request to trigger an incident 453 * on to the remote Coordinator. 463 } catch (RemoteException re) 464 { 465 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 466 "disconnectFromParamics", "Unable to communicate with the " 467 + "CAD Simulator.", re); 468 469 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 470 } 471 } 472 473 /** 474 * This method passes the view's request to load a paramics network on to 475 * the remote Coordinator. 476 * 477 * @param networkID The unique network ID that is being loaded 478 * 479 * @throws ScriptException if there is an error in loading the network 480 * @throws SimulationException if there is an error in RMI communication to 481 * the CAD Simulator. 482 */ 483 public void loadParamicsNetwork(int networkID) throws ScriptException, SimulationException 484 { 485 try 486 { 487 theCoorInt.loadParamicsNetwork(networkID); 488 } catch (RemoteException re) 489 { 490 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 491 "loadParamicsNetwork", "Unable to communicate with the " 492 + "CAD Simulator.", re); 493 494 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 495 } 496 } 497 498 /** 499 * This method passes the view's request to get the value of the currently 500 * loaded paramics network on to the remote Coordinator. 501 * 502 * @return Value of the loaded paramics network. 503 * @throws SimulationException if there is an error in RMI communication to 504 * the CAD Simulator. 505 */ 506 public int getParamicsNetworkLoaded() throws SimulationException 507 { 508 try 509 { 510 return theCoorInt.getParamicsNetworkLoaded(); 511 } catch (RemoteException re) 512 { 513 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 514 "getParamicsNetworkLoaded", "Unable to communicate with the " 515 + "CAD Simulator.", re); 516 517 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 518 } 519 } 520 521 /** 522 * This method passes the view's request to trigger an incident on to the 523 * remote Coordinator. 454 524 * 455 525 * @throws ScriptException if an error occurs in triggering an event. 456 * @throws SimulationException if there is an error in RMI communication to the CAD Simulator. 457 */ 458 public void triggerIncident(int logNumber) throws ScriptException, SimulationException { 459 try { 526 * @throws SimulationException if there is an error in RMI communication to 527 * the CAD Simulator. 528 */ 529 public void triggerIncident(int logNumber) throws ScriptException, SimulationException 530 { 531 try 532 { 460 533 theCoorInt.triggerIncident(logNumber); 461 462 } catch (RemoteException re) { 463 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 464 "startIncident", "Unable to communicate with the " + 465 "CAD Simulator.", re); 466 467 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 468 } 469 } 470 471 /** 472 * This method passes the view's request to add an incident into the 473 * simulation on to the remote Coordinator. 474 * 475 * @param newIncident Incident to add to the simulation 476 * @throws SimulationException if there is an error in RMI communication to the CAD Simulator. 477 */ 478 public void addIncident(final Incident newIncident) throws SimulationException { 479 480 try { 534 535 } catch (RemoteException re) 536 { 537 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 538 "startIncident", "Unable to communicate with the " 539 + "CAD Simulator.", re); 540 541 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 542 } 543 } 544 545 /** 546 * This method passes the view's request to add an incident into the 547 * simulation on to the remote Coordinator. 548 * 549 * @param newIncident Incident to add to the simulation 550 * @throws SimulationException if there is an error in RMI communication to 551 * the CAD Simulator. 552 */ 553 public void addIncident(final Incident newIncident) throws SimulationException 554 { 555 556 try 557 { 481 558 theCoorInt.addIncident(newIncident); 482 483 } catch (RemoteException re) { 484 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 485 "addIncident", "Unable to communicate with the " + 486 "CAD Simulator.", re); 487 488 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 489 } 490 491 } 492 493 /** 494 * This method passes the view's request to delete an incident from the 559 560 } catch (RemoteException re) 561 { 562 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 563 "addIncident", "Unable to communicate with the " 564 + "CAD Simulator.", re); 565 566 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 567 } 568 569 } 570 571 /** 572 * This method passes the view's request to delete an incident from the 495 573 * simulation on to the remote Coordinator. 496 574 * 497 575 * @throws ScriptException if an error occurs in deleting an event. 498 * @throws SimulationException if there is an error in RMI communication to the CAD Simulator. 499 */ 500 public void deleteIncident(int logNumber) throws ScriptException, SimulationException { 501 502 try { 503 theCoorInt.deleteIncident(logNumber); 504 505 } catch (RemoteException re) { 506 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 507 "deleteIncident", "Unable to communicate with the " + 508 "CAD Simulator.", re); 509 510 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 511 } 512 } 513 514 515 /** 516 * This method passes the view's request to reschedule an incident on to 517 * the remote Coordinator. 576 * @throws SimulationException if there is an error in RMI communication to 577 * the CAD Simulator. 578 */ 579 public void deleteIncident(int logNumber) throws ScriptException, SimulationException 580 { 581 582 try 583 { 584 theCoorInt.deleteIncident(logNumber); 585 586 } catch (RemoteException re) 587 { 588 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 589 "deleteIncident", "Unable to communicate with the " 590 + "CAD Simulator.", re); 591 592 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 593 } 594 } 595 596 /** 597 * This method passes the view's request to reschedule an incident on to the 598 * remote Coordinator. 518 599 * 519 600 * @param newTime New simulation time (in seconds). 520 * @throws ScriptException if the Incident has already started or the time for 521 * recheduling has already passed. 522 * @throws SimulationException if there is an error in RMI communication to the CAD Simulator. 523 */ 524 public void rescheduleIncident(long newTime, int logNumber) throws ScriptException, SimulationException { 525 526 try { 601 * @throws ScriptException if the Incident has already started or the time 602 * for recheduling has already passed. 603 * @throws SimulationException if there is an error in RMI communication to 604 * the CAD Simulator. 605 */ 606 public void rescheduleIncident(long newTime, int logNumber) throws ScriptException, SimulationException 607 { 608 609 try 610 { 527 611 theCoorInt.rescheduleIncident(logNumber, newTime); 528 } catch (RemoteException re) { 529 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 530 "rescheduleIncident", "Unable to communicate with the " + 531 "CAD Simulator.", re); 532 533 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 534 } 535 } 536 537 /** 538 * This method passes the view's request to get the current list of 612 } catch (RemoteException re) 613 { 614 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 615 "rescheduleIncident", "Unable to communicate with the " 616 + "CAD Simulator.", re); 617 618 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 619 } 620 } 621 622 /** 623 * This method passes the view's request to get the current list of 539 624 * Incidents loaded into the simulation on to the remote Coordinator. 540 625 * 541 626 * @return Vector The Vector of currently loaded incidents. 542 * @throws SimulationException if there is an error in RMI communication to the CAD Simulator. 543 */ 544 public Vector<Incident> getIncidentList() throws SimulationException { 545 546 try { 627 * @throws SimulationException if there is an error in RMI communication to 628 * the CAD Simulator. 629 */ 630 public Vector<Incident> getIncidentList() throws SimulationException 631 { 632 633 try 634 { 547 635 return theCoorInt.getIncidentList(); 548 549 } catch (RemoteException re) { 550 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 551 "getIncidentList", "Unable to communicate with the " + 552 "CAD Simulator.", re); 553 554 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 555 } 556 } 557 558 /** 559 * This method passes the view's request to get the CMSInfo object 560 * that corresponds to a unique CMS ID String on to the remote Coordinator. 561 * 636 637 } catch (RemoteException re) 638 { 639 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 640 "getIncidentList", "Unable to communicate with the " 641 + "CAD Simulator.", re); 642 643 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 644 } 645 } 646 647 /** 648 * This method passes the view's request to get the CMSInfo object that 649 * corresponds to a unique CMS ID String on to the remote Coordinator. 650 * 562 651 * @param cms_id Unique CMS ID String. 563 652 * @return CMSInfo object corresponding to the parameter CMS id. 564 * @throws SimulationException if there is an error in RMI communication to the CAD Simulator. 565 */ 566 public CMSInfo getCMSDiversionInfo(String cms_id) throws SimulationException { 567 568 try { 653 * @throws SimulationException if there is an error in RMI communication to 654 * the CAD Simulator. 655 */ 656 public CMSInfo getCMSDiversionInfo(String cms_id) throws SimulationException 657 { 658 659 try 660 { 569 661 return theCoorInt.getCMSDiversionInfo(cms_id); 570 } catch (RemoteException re) { 571 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 572 "getCMSDiversionInfo", "Unable to communicate with the " + 573 "CAD Simulator.", re); 574 575 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 576 } 577 } 578 579 /** 580 * This method passes the view's request to update diversions for a 581 * CMS on to the remote Coordinator. 582 * 662 } catch (RemoteException re) 663 { 664 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 665 "getCMSDiversionInfo", "Unable to communicate with the " 666 + "CAD Simulator.", re); 667 668 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 669 } 670 } 671 672 /** 673 * This method passes the view's request to update diversions for a CMS on 674 * to the remote Coordinator. 675 * 583 676 * @param diversion CMS diversions information to apply. 584 * @throws SimulationException if there is an error in RMI communication to the CAD Simulator. 585 */ 586 public void applyDiversions(CMSInfo diversion) throws SimulationException { 587 588 try { 677 * @throws SimulationException if there is an error in RMI communication to 678 * the CAD Simulator. 679 */ 680 public void applyDiversions(CMSInfo diversion) throws SimulationException 681 { 682 683 try 684 { 589 685 theCoorInt.applyDiversions(diversion); 590 686 591 } catch (RemoteException re) { 592 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 593 "applyDiversions", "Unable to communicate with the " + 594 "CAD Simulator.", re); 595 596 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 597 } 598 } 599 600 /** 601 * This method loads the current list of incidents from the Coordinator into the 602 * SimulationManager. For each incident in the simulation, notify the view to 603 * add a new incident tab. If the Incident has begun in the simulation, 604 * call the incidentStarted() method to update the view accordingly. 605 * 606 * @throws SimulationException if there is an error in RMI communication to the CAD Simulator. 607 */ 608 private void loadIncidents() throws SimulationException { 609 610 try { 611 for(Incident inc : theCoorInt.getIncidentList()) { 612 687 } catch (RemoteException re) 688 { 689 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 690 "applyDiversions", "Unable to communicate with the " 691 + "CAD Simulator.", re); 692 693 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 694 } 695 } 696 697 /** 698 * This method loads the current list of incidents from the Coordinator into 699 * the SimulationManager. For each incident in the simulation, notify the 700 * view to add a new incident tab. If the Incident has begun in the 701 * simulation, call the incidentStarted() method to update the view 702 * accordingly. 703 * 704 * @throws SimulationException if there is an error in RMI communication to 705 * the CAD Simulator. 706 */ 707 private void loadIncidents() throws SimulationException 708 { 709 710 try 711 { 712 for (Incident inc : theCoorInt.getIncidentList()) 713 { 714 613 715 Integer logNum = new Integer(inc.getLogNumber()); 614 716 615 717 theSimManagerView.addIncidentTab(logNum); 616 718 theSimManagerView.addIncident(inc); 617 618 if(inc.getSecondsToStart() < theCoorInt.getCurrentSimulationTime()) { 719 720 if (inc.getSecondsToStart() < theCoorInt.getCurrentSimulationTime()) 721 { 619 722 incidentStarted(logNum); 620 723 } 621 724 } 622 } catch (RemoteException re) { 623 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 624 "loadIncidentListTable", "Unable to communicate with the " + 625 "CAD Simulator.", re); 626 627 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 628 } 629 630 } 631 632 725 } catch (RemoteException re) 726 { 727 simManagerLogger.logp(Level.SEVERE, "SimulationManagerModel", 728 "loadIncidentListTable", "Unable to communicate with the " 729 + "CAD Simulator.", re); 730 731 throw new SimulationException(SimulationException.CAD_SIM_COMM, re); 732 } 733 734 } 633 735 } -
trunk/src/tmcsim/simulationmanager/SimulationManagerView.java
r2 r6 737 737 simulationStatus = new JLabel("Simulation Status"); 738 738 simulationStatusText = new JLabel("No Script"); 739 simulationStatusText.setName("simulationStatusText"); 739 740 simulationStatusText.setFont(new Font("Geneva", Font.BOLD, 14)); 740 741 … … 746 747 pauseButton = new JButton(new PauseSimulationAction(this)); 747 748 resetButton = new JButton(new ResetSimulationAction(this)); 749 loadScriptButton = new JButton(new LoadScriptAction(this)); 750 loadScriptButton.setAlignmentX(Box.CENTER_ALIGNMENT); 748 751 749 752 startButton.setEnabled(false); … … 756 759 simulationTimeButtonBox = new Box(BoxLayout.X_AXIS); 757 760 761 simulationTimeButtonBox.add(loadScriptButton); 758 762 simulationTimeButtonBox.add(startButton); 759 763 simulationTimeButtonBox.add(pauseButton); 760 764 simulationTimeButtonBox.add(resetButton); 765 // currentScript = new JLabel(" no script loaded"); 766 //currentScript.setAlignmentX(Box.LEFT_ALIGNMENT); 767 // simulationTimeButtonBox.add (currentScript); 761 768 762 769 simulationStatus.setAlignmentX(Box.CENTER_ALIGNMENT); 763 770 simulationStatusText.setAlignmentX(Box.CENTER_ALIGNMENT); 764 simulationStatusText.setName("simulationStatusText");765 771 766 772 TitledBorder title = BorderFactory.createTitledBorder( … … 779 785 scriptBox.setAlignmentX(Box.CENTER_ALIGNMENT); 780 786 781 loadScriptButton = new JButton(new LoadScriptAction(this));782 loadScriptButton.setAlignmentX(Box.CENTER_ALIGNMENT);783 784 787 scriptBox.add(simulationStatusBox); 785 788 scriptBox.add(Box.createVerticalStrut(5)); 786 scriptBox.add(loadScriptButton);787 789 788 790 simulationClockLabel = new JLabel("0:00:00"); … … 800 802 simulationTimeAndStatusBox = Box.createHorizontalBox(); 801 803 simulationTimeAndStatusBox.setAlignmentX(Box.LEFT_ALIGNMENT); 802 simulationTimeAndStatusBox.setMaximumSize(new Dimension(640, 200));803 simulationTimeAndStatusBox.setPreferredSize(new Dimension(640, 160 ));804 simulationTimeAndStatusBox.setMaximumSize(new Dimension(640, 300)); 805 simulationTimeAndStatusBox.setPreferredSize(new Dimension(640, 1600)); 804 806 simulationTimeAndStatusBox.add(Box.createHorizontalStrut(5)); 805 807 simulationTimeAndStatusBox.add(simulationTimeBox); … … 1224 1226 private JLabel timeScheduledLabel; 1225 1227 private JLabel CADClientClockLabel; 1226 1228 private JLabel currentScript; 1227 1229 private Box adminInteractionBox; 1228 1230 private Box simulationRightSideBox; -
trunk/src/tmcsim/simulationmanager/actions/LoadScriptAction.java
r2 r6 54 54 try{ 55 55 theSimManagerView.getModel().loadScript(selectedFile); 56 theSimManagerView.setTitle("Simulation Manager: " + selectedFile.getName()); 56 57 } 57 58 catch (ScriptException se) {
Note: See TracChangeset
for help on using the changeset viewer.
