Author: [log in to unmask]
Date: Sat Mar 7 16:05:59 2015
New Revision: 2358
Log:
Merge fixes from trunk to monitoring-app dev branch.
Added:
java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/AIDAServer.java
Removed:
java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/model/ConfigurationListener.java
Modified:
java/branches/monitoring-app-dev/ (props changed)
java/branches/monitoring-app-dev/pom.xml
java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/Commands.java
java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/DataSourceComboBox.java
java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/MenuBar.java
java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/MonitoringApplication.java
java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/MonitoringApplicationFrame.java
java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/model/Configuration.java
java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/model/ConfigurationModel.java
Modified: java/branches/monitoring-app-dev/pom.xml
=============================================================================
--- java/branches/monitoring-app-dev/pom.xml (original)
+++ java/branches/monitoring-app-dev/pom.xml Sat Mar 7 16:05:59 2015
@@ -130,5 +130,10 @@
<artifactId>jlfgr</artifactId>
<version>1.0</version>
</dependency>
+ <dependency>
+ <groupId>org.freehep</groupId>
+ <artifactId>freehep-jaida-remote</artifactId>
+ <version>3.4.11</version>
+ </dependency>
</dependencies>
</project>
Modified: java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/Commands.java
=============================================================================
--- java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/Commands.java (original)
+++ java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/Commands.java Sat Mar 7 16:05:59 2015
@@ -41,6 +41,9 @@
static final String EXIT = "exit";
static final String LOG_LEVEL_FILTER_CHANGED = "logLevelFilterChanged";
+
+ static final String START_AIDA_SERVER = "startAIDAServer";
+ static final String STOP_AIDA_SERVER = "stopAIDAServer";
////////////////////////////////////////////
static final String BLOCKING_CHANGED = "blockingChanged";
Modified: java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/DataSourceComboBox.java
=============================================================================
--- java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/DataSourceComboBox.java (original)
+++ java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/DataSourceComboBox.java Sat Mar 7 16:05:59 2015
@@ -11,7 +11,6 @@
import javax.swing.JComboBox;
import org.hps.monitoring.application.DataSourceComboBox.DataSourceItem;
-import org.hps.monitoring.application.model.ConfigurationListener;
import org.hps.monitoring.application.model.ConfigurationModel;
import org.hps.monitoring.application.model.ConnectionStatus;
import org.hps.monitoring.application.model.ConnectionStatusModel;
@@ -28,7 +27,7 @@
*
* @author Jeremy McCormick <[log in to unmask]>
*/
-class DataSourceComboBox extends JComboBox<DataSourceItem> implements PropertyChangeListener, ActionListener, ConfigurationListener {
+class DataSourceComboBox extends JComboBox<DataSourceItem> implements PropertyChangeListener, ActionListener{
ConnectionStatusModel connectionModel;
ConfigurationModel configurationModel;
@@ -65,16 +64,9 @@
setEditable(false);
this.configurationModel = configurationModel;
connectionModel.addPropertyChangeListener(this);
- configurationModel.addConfigurationListener(this);
+ configurationModel.addPropertyChangeListener(this);
}
- void setSelectedItem() {
- DataSourceItem item = findItem(configurationModel.getDataSourcePath(), getDataSourceType(configurationModel.getDataSourcePath()));
- if (item != null) {
- setSelectedItem(item);
- }
- }
-
boolean contains(DataSourceItem item) {
return ((DefaultComboBoxModel<DataSourceItem>) getModel()).getIndexOf(item) != -1;
}
@@ -91,12 +83,35 @@
setEnabled(false);
}
} else if (evt.getPropertyName().equals(ConfigurationModel.DATA_SOURCE_PATH_PROPERTY)) {
- String path = configurationModel.getDataSourcePath();
- DataSourceType type = getDataSourceType(path);
- addDataSourceItem(path, type);
- setSelectedItem();
+ if (configurationModel.hasValidProperty(ConfigurationModel.DATA_SOURCE_TYPE_PROPERTY)) {
+ String path = configurationModel.getDataSourcePath();
+ DataSourceType type = getDataSourceType(path);
+ if (type.isFile()) {
+ DataSourceItem item = findItem(path, type);
+ if (item == null) {
+ item = addDataSourceItem(path, type);
+ }
+ if (configurationModel.getDataSourceType().isFile()) {
+ setSelectedItem(item);
+ }
+ }
+ }
} else if (evt.getPropertyName().equals(ConfigurationModel.DATA_SOURCE_TYPE_PROPERTY)) {
- setSelectedItem();
+ if (configurationModel.getDataSourceType() == DataSourceType.ET_SERVER) {
+ DataSourceItem item = findEtItem();
+ if (item == null) {
+ item = new DataSourceItem(configurationModel.getEtPath(), DataSourceType.ET_SERVER);
+ }
+ setSelectedItem(item);
+ } else {
+ if (configurationModel.hasValidProperty(ConfigurationModel.DATA_SOURCE_PATH_PROPERTY)) {
+ DataSourceItem item = findItem(configurationModel.getDataSourcePath(), configurationModel.getDataSourceType());
+ if (item == null) {
+ item = addDataSourceItem(configurationModel.getDataSourcePath(), configurationModel.getDataSourceType());
+ }
+ setSelectedItem(item);
+ }
+ }
} else if (evt.getPropertyName().equals(ConfigurationModel.HOST_PROPERTY)) {
updateEtItem();
} else if (evt.getPropertyName().equals(ConfigurationModel.ET_NAME_PROPERTY)) {
@@ -125,46 +140,18 @@
// Update the model with data source settings.
configurationModel.removePropertyChangeListener(this);
DataSourceItem item = (DataSourceItem) getSelectedItem();
- configurationModel.setDataSourceType(item.type);
- if (item.type != DataSourceType.ET_SERVER) {
- configurationModel.setDataSourcePath(item.name);
+ if (item != null) {
+ configurationModel.setDataSourceType(item.type);
+ if (item.type != DataSourceType.ET_SERVER) {
+ configurationModel.setDataSourcePath(item.name);
+ }
}
} finally {
configurationModel.addPropertyChangeListener(this);
}
}
}
-
- public void configurationChanged(ConfigurationModel configurationModel) {
-
- // Clear the data source list.
- removeAllItems();
-
- // Add the default ET item.
- this.removeActionListener(this);
- try {
- addItem(new DataSourceItem(configurationModel.getEtPath(), DataSourceType.ET_SERVER));
-
- // Add a file source if one has been provided.
- if (configurationModel.getDataSourcePath() != null) {
- // Add an item for this data source.
- DataSourceItem newItem = new DataSourceItem(configurationModel.getDataSourcePath(), configurationModel.getDataSourceType());
- //System.out.println("adding new item " + newItem.name + " " + newItem.type);
- addItem(newItem);
- if (configurationModel.getDataSourceType().isFile()) {
- //System.out.println("setting selected");
- setSelectedItem(newItem);
- }
- }
- } finally {
- this.addActionListener(this);
- }
-
- // Don't add as property change listener until after configuration has been initialized.
- configurationModel.removePropertyChangeListener(this);
- configurationModel.addPropertyChangeListener(this);
- }
-
+
public void addItem(DataSourceItem item) {
// Do not add invalid looking items.
if (item.name == null || item.name.length() == 0) {
@@ -196,15 +183,19 @@
return null;
}
- void addDataSourceItem(String path, DataSourceType type) {
+ DataSourceItem addDataSourceItem(String path, DataSourceType type) {
DataSourceItem newItem = new DataSourceItem(path, type);
- if (!contains(newItem)) {
- addItem(newItem);
- }
+ addItem(newItem);
+ return newItem;
}
void updateEtItem() {
DataSourceItem item = findEtItem();
- item.name = configurationModel.getEtPath();
+ if (item == null) {
+ item = new DataSourceItem(configurationModel.getEtPath(), DataSourceType.ET_SERVER);
+ addItem(item);
+ } else {
+ item.name = configurationModel.getEtPath();
+ }
}
}
Modified: java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/MenuBar.java
=============================================================================
--- java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/MenuBar.java (original)
+++ java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/MenuBar.java Sat Mar 7 16:05:59 2015
@@ -39,6 +39,7 @@
JMenuItem closeFileItem;
JMenuItem openFileItem;
JMenu settingsMenu;
+ JMenuItem serverItem;
ConfigurationModel configurationModel;
MenuBar(ConfigurationModel configurationModel, ConnectionStatusModel connectionModel, ActionListener listener) {
@@ -118,13 +119,21 @@
savePlotsItem.setToolTipText("Save plots to AIDA file");
plotsMenu.add(savePlotsItem);
- JMenuItem clearPlotsItem = new JMenuItem("Clear plots");
+ JMenuItem clearPlotsItem = new JMenuItem("Clear Plots");
clearPlotsItem.setMnemonic(KeyEvent.VK_C);
clearPlotsItem.setActionCommand(CLEAR_PLOTS);
clearPlotsItem.addActionListener(listener);
clearPlotsItem.setEnabled(true);
clearPlotsItem.setToolTipText("Clear the AIDA plots");
plotsMenu.add(clearPlotsItem);
+
+ serverItem = new JMenuItem("Start AIDA Server");
+ serverItem.setMnemonic(KeyEvent.VK_A);
+ serverItem.setActionCommand(Commands.START_AIDA_SERVER);
+ serverItem.setEnabled(true);
+ serverItem.setToolTipText("Start AIDA RMI server");
+ serverItem.addActionListener(listener);
+ plotsMenu.add(serverItem);
JMenu toolsMenu = new JMenu("Tools");
toolsMenu.setMnemonic(KeyEvent.VK_T);
@@ -165,54 +174,6 @@
defaultsItem.setEnabled(true);
defaultsItem.setToolTipText("Restore the window defaults");
windowMenu.add(defaultsItem);
-
- /*
-
- JMenu logMenu = new JMenu("Log");
- logMenu.setMnemonic(KeyEvent.VK_L);
- add(logMenu);
-
- logItem = new JMenuItem("Redirect to File ...");
- logItem.setMnemonic(KeyEvent.VK_F);
- logItem.setActionCommand(CHOOSE_LOG_FILE);
- //logItem.addActionListener(this);
- logItem.setEnabled(true);
- logItem.setToolTipText("Redirect std out and err to a file.");
- logMenu.add(logItem);
-
- terminalItem = new JMenuItem("Redirect to Terminal");
- terminalItem.setMnemonic(KeyEvent.VK_T);
- terminalItem.setActionCommand(LOG_TO_TERMINAL);
- //terminalItem.addActionListener(this);
- terminalItem.setEnabled(false);
- terminalItem.setToolTipText("Redirect std out and err back to the terminal.");
- logMenu.add(terminalItem);
-
- JMenuItem saveLogItem = new JMenuItem("Save Log Table to File ...");
- saveLogItem.setMnemonic(KeyEvent.VK_S);
- saveLogItem.setActionCommand(SAVE_LOG_TABLE);
- //saveLogItem.addActionListener(this);
- saveLogItem.setToolTipText("Save the log records to a tab delimited text file.");
- logMenu.add(saveLogItem);
-
- JMenuItem clearLogItem = new JMenuItem("Clear Log Table");
- //clearLogItem.addActionListener(this);
- clearLogItem.setMnemonic(KeyEvent.VK_C);
- clearLogItem.setActionCommand(CLEAR_LOG_TABLE);
- clearLogItem.setToolTipText("Clear the log table of all messages.");
- logMenu.add(clearLogItem);
-
- JMenu utilMenu = new JMenu("Util");
- plotsMenu.setMnemonic(KeyEvent.VK_U);
- add(utilMenu);
-
- JMenuItem screenshotItem = new JMenuItem("Take a Screenshot ...");
- screenshotItem.setMnemonic(KeyEvent.VK_N);
- screenshotItem.setActionCommand(SCREENSHOT);
- //screenshotItem.addActionListener(this);
- screenshotItem.setToolTipText("Save a screenshot to file");
- utilMenu.add(screenshotItem);
- */
}
@Override
@@ -236,4 +197,19 @@
}
}
+ void setServerConnected(boolean connected) {
+ if (connected) {
+ serverItem = new JMenuItem("Stop AIDA Server");
+ serverItem.setMnemonic(KeyEvent.VK_A);
+ serverItem.setActionCommand(Commands.STOP_AIDA_SERVER);
+ serverItem.setEnabled(true);
+ serverItem.setToolTipText("Stop the running AIDA RMI server");
+ } else {
+ serverItem = new JMenuItem("Start AIDA Server");
+ serverItem.setMnemonic(KeyEvent.VK_A);
+ serverItem.setActionCommand(Commands.START_AIDA_SERVER);
+ serverItem.setEnabled(true);
+ serverItem.setToolTipText("Start AIDA RMI server");
+ }
+ }
}
Modified: java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/MonitoringApplication.java
=============================================================================
--- java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/MonitoringApplication.java (original)
+++ java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/MonitoringApplication.java Sat Mar 7 16:05:59 2015
@@ -32,13 +32,13 @@
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
-import org.hps.conditions.database.DatabaseConditionsManager;
import org.hps.monitoring.application.DataSourceComboBox.DataSourceItem;
import org.hps.monitoring.application.LogTable.LogRecordModel;
import org.hps.monitoring.application.model.Configuration;
import org.hps.monitoring.application.model.ConfigurationModel;
import org.hps.monitoring.application.model.ConnectionStatusModel;
import org.hps.monitoring.application.model.RunModel;
+import org.hps.monitoring.application.util.AIDAServer;
import org.hps.monitoring.application.util.DialogUtil;
import org.hps.monitoring.application.util.ErrorHandler;
import org.hps.monitoring.application.util.EvioFileFilter;
@@ -94,6 +94,8 @@
// Encapsulation of ET connection and event processing.
EventProcessing processing;
+
+ AIDAServer server = new AIDAServer("hps-monitoring");
// Filters for opening files.
static final FileFilter lcioFilter = new FileNameExtensionFilter("LCIO files", "slcio");
@@ -229,7 +231,11 @@
saveLogTable();
} else if (Commands.CLEAR_LOG_TABLE.equals(cmd)) {
getLogRecordModel().clear();
- }
+ } else if (Commands.START_AIDA_SERVER.equals(cmd)) {
+ startAIDAServer();
+ } else if (Commands.STOP_AIDA_SERVER.equals(cmd)) {
+ stopAIDAServer();
+ }
}
/**
@@ -280,6 +286,10 @@
* @param configuration The new configuration.
*/
void loadConfiguration(Configuration configuration) {
+
+ // HACK: Clear data source combo box for new config.
+ frame.dataSourceComboBox.removeAllItems();
+
// Set the Configuration on the ConfigurationModel which will trigger all the PropertyChangelListeners.
configurationModel.setConfiguration(configuration);
if (configuration.getFile() != null)
@@ -640,4 +650,28 @@
void saveLogTable() {
saveTable(frame.logPanel.logTable);
}
+
+ /**
+ * Start the AIDA RMI server.
+ */
+ void startAIDAServer() {
+ boolean started = server.start();
+ frame.menu.setServerConnected(started);
+ if (started) {
+ logger.info("AIDA server started at " + server.getName());
+ DialogUtil.showInfoDialog(frame, "AIDA Server Started", "The AIDA server was started.");
+ } else {
+ DialogUtil.showErrorDialog(frame, "AIDA Server Error", "The AIDA server failed to start.");
+ }
+ }
+
+ /**
+ * Stop the AIDA server.
+ */
+ void stopAIDAServer() {
+ server.disconnect();
+ frame.menu.setServerConnected(false);
+ logger.info("AIDA server stopped");
+ DialogUtil.showInfoDialog(frame, "AIDA Server Stopped", "The AIDA server was stopped.");
+ }
}
Modified: java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/MonitoringApplicationFrame.java
=============================================================================
--- java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/MonitoringApplicationFrame.java (original)
+++ java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/MonitoringApplicationFrame.java Sat Mar 7 16:05:59 2015
@@ -30,6 +30,7 @@
SystemStatusTable systemStatusTable;
JPanel buttonsPanel;
TriggerDiagnosticsPanel triggerPanel;
+ MenuBar menu;
JSplitPane mainSplitPane;
JSplitPane rightSplitPane;
@@ -120,6 +121,7 @@
// Vertical split pane in left panel.
leftSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, runPanel, tableTabbedPane);
+ leftSplitPane.setResizeWeight(0.5);
leftPanel.add(leftSplitPane, BorderLayout.CENTER);
// Create the right panel.
@@ -146,7 +148,7 @@
bottomPanel.add(mainSplitPane, BorderLayout.CENTER);
// Create the menu bar.
- MenuBar menu = new MenuBar(application.configurationModel, application.connectionModel, application);
+ menu = new MenuBar(application.configurationModel, application.connectionModel, application);
setJMenuBar(menu);
dataSourceComboBox.addActionListener(menu);
Modified: java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/model/Configuration.java
=============================================================================
--- java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/model/Configuration.java (original)
+++ java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/model/Configuration.java Sat Mar 7 16:05:59 2015
@@ -75,7 +75,11 @@
* @return True if configuration has value for the key.
*/
boolean hasKey(String key) {
- return properties.getProperty(key) != null;
+ try {
+ return properties.containsKey(key);
+ } catch (java.lang.NullPointerException e) {
+ return false;
+ }
}
/**
@@ -164,7 +168,7 @@
* @param key The properties key.
* @return True if properties key is valid.
*/
- private boolean checkKey(String key) {
+ boolean checkKey(String key) {
return hasKey(key) && properties.getProperty(key) != null;
}
Modified: java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/model/ConfigurationModel.java
=============================================================================
--- java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/model/ConfigurationModel.java (original)
+++ java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/model/ConfigurationModel.java Sat Mar 7 16:05:59 2015
@@ -1,8 +1,6 @@
package org.hps.monitoring.application.model;
import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
import java.util.logging.Level;
import org.hps.record.enums.DataSourceType;
@@ -16,8 +14,6 @@
public final class ConfigurationModel extends AbstractModel {
Configuration configuration;
-
- List<ConfigurationListener> listeners = new ArrayList<ConfigurationListener>();
// Job setting properties.
public static final String DETECTOR_NAME_PROPERTY = "DetectorName";
@@ -69,22 +65,11 @@
fireModelChanged();
}
- public void addConfigurationListener(ConfigurationListener listener) {
- listeners.add(listener);
- }
-
public void setConfiguration(Configuration configuration) {
this.configuration = configuration;
fireModelChanged();
- fireConfigurationChanged();
- }
-
- void fireConfigurationChanged() {
- for (ConfigurationListener listener : listeners) {
- listener.configurationChanged(this);
- }
- }
-
+ }
+
public Configuration getConfiguration() {
return this.configuration;
}
@@ -423,7 +408,7 @@
}
public boolean hasValidProperty(String key) {
- return configuration.hasKey(key) && configuration.get(key) != null;
+ return configuration.checkKey(key);
}
@Override
Added: java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/AIDAServer.java
=============================================================================
--- java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/AIDAServer.java (added)
+++ java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/AIDAServer.java Sat Mar 7 16:05:59 2015
@@ -0,0 +1,72 @@
+package org.hps.monitoring.application.util;
+
+import hep.aida.dev.IDevTree;
+import hep.aida.ref.remote.RemoteServer;
+import hep.aida.ref.remote.rmi.RmiRemoteUtils;
+import hep.aida.ref.remote.rmi.server.RmiServerImpl;
+
+import java.net.InetAddress;
+import java.rmi.RemoteException;
+
+import org.lcsim.util.aida.AIDA;
+
+/**
+ * AIDA RMI server wrapper.
+ * @author Jeremy McCormick <[log in to unmask]>
+ */
+public class AIDAServer {
+
+ RmiServerImpl server;
+ String name;
+ boolean connected = false;
+
+ /**
+ * Class constructor.
+ * @param name The name of the AIDA server.
+ */
+ public AIDAServer(String name) {
+ this.name = name;
+ }
+
+ /**
+ * Start the remote AIDA server.
+ * @return True if server started successfully; false if an error occurred during initialization.
+ */
+ public boolean start() {
+ RemoteServer treeServer = new RemoteServer((IDevTree) AIDA.defaultInstance().tree());
+ try {
+ server = new RmiServerImpl(treeServer, "/" + name);
+ connected = true;
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ connected = false;
+ }
+ return connected;
+ }
+
+ /**
+ * Close the server down by disconnecting it.
+ */
+ public void disconnect() {
+ server.disconnect();
+ connected = false;
+ }
+
+ /**
+ * True if connected.
+ * @return True if connected to server.
+ */
+ public boolean connected() {
+ return connected;
+ }
+
+ public String getName() {
+ try {
+ return InetAddress.getLocalHost().getCanonicalHostName() + server.getBindName() + ":" + RmiRemoteUtils.port;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+}
|