Commit in hps-java/src/main/java/org/lcsim/hps/monitoring on MAIN | |||
ConnectionPanel.java | +40 | -40 | 1.5 -> 1.6 |
MonitoringApplication.java | +46 | -11 | 1.1 -> 1.2 |
MonitoringExample.java | +117 | -111 | 1.1 -> 1.2 |
SensorOccupancyPlotsDriver.java | +1 | 1.5 -> 1.6 | |
+204 | -162 |
more work on monitoring system
diff -u -r1.5 -r1.6 --- ConnectionPanel.java 27 Mar 2012 03:18:21 -0000 1.5 +++ ConnectionPanel.java 27 Mar 2012 04:13:37 -0000 1.6 @@ -24,9 +24,6 @@
// TODO Add status field of (connected|disconnected|connecting|timed out) class ConnectionPanel extends JPanel implements ActionListener {
- - //private JPanel fieldsPanel; - //private JPanel buttonsPanel;
private JTextField etNameField; private JTextField hostField;
@@ -43,22 +40,15 @@
private ConnectionParameters connectionParameters;
- private boolean connectPressed = false;
+ private boolean connectRequested = false; + private boolean disconnectRequested = false;
ConnectionPanel() {
-
+
// Starting GUI values will be assigned from default connection parameters. connectionParameters = new ConnectionParameters();
- setLayout(new GridBagLayout()); - - // Panel for labels and values. - //GridBagConstraints c = new GridBagConstraints(); - //c.gridx = 0; - //c.gridy = 0; - //JPanel fieldsPanel = new JPanel(); - //fieldsPanel.setLayout(new GridBagLayout()); - //add(fieldsPanel, c);
+ setLayout(new GridBagLayout());
// // Define the fields.
@@ -260,7 +250,7 @@
setConnectionParameters(new ConnectionParameters()); }
- public ConnectionParameters getConnectionParameters() {
+ ConnectionParameters getConnectionParameters() {
connectionParameters = new ConnectionParameters(); connectionParameters.etName = etNameField.getText(); connectionParameters.host = hostField.getText();
@@ -308,9 +298,9 @@
public void actionPerformed(ActionEvent e) { if ("connect".equals(e.getActionCommand())) {
- connect();
+ setConnectRequested();
} else if ("disconnect".equals(e.getActionCommand())) {
- disconnect();
+ setDisconnectRequested();
} else if ("saveConnection".equals(e.getActionCommand())) { save(); } else if ("loadConnection".equals(e.getActionCommand())) {
@@ -320,24 +310,38 @@
} }
- private void connect() { - connectPressed = true; - /* - connectButton.setEnabled(false); - disconnectButton.setEnabled(true); - loadButton.setEnabled(false); - resetButton.setEnabled(false); - */ - } - - private void disconnect() { - connectPressed = false; - /* - connectButton.setEnabled(true); - disconnectButton.setEnabled(false); - loadButton.setEnabled(true); - resetButton.setEnabled(true); - */
+ private void setConnectRequested() { + connectRequested = true; + disconnectRequested = false; + enableConnectionPanel(false); + } + + private void setDisconnectRequested() { + disconnectRequested = true; + connectRequested = false; + } + + void enableConnectionPanel(boolean e) { + etNameField.setEnabled(e); + hostField.setEnabled(e); + portField.setEnabled(e); + blockingField.setEnabled(e); + verboseField.setEnabled(e); + statNameField.setEnabled(e); + chunkField.setEnabled(e); + qSizeField.setEnabled(e); + positionField.setEnabled(e); + ppositionField.setEnabled(e); + waitComboBox.setEnabled(e); + waitTimeField.setEnabled(e); + } + + boolean connectRequested() { + return this.connectRequested; + } + + boolean disconnectRequested() { + return this.disconnectRequested;
} private void save() {
@@ -361,11 +365,7 @@
private void reset() { setConnectionParameters(new ConnectionParameters()); }
- - public boolean connectPressed() { - return this.connectPressed; - } -
+
private void writePropertiesFile(File file) { Properties prop = new Properties(); prop.setProperty("host", hostField.getText());
diff -u -r1.1 -r1.2 --- MonitoringApplication.java 27 Mar 2012 03:18:21 -0000 1.1 +++ MonitoringApplication.java 27 Mar 2012 04:13:37 -0000 1.2 @@ -19,6 +19,7 @@
import org.lcsim.util.Driver; import org.lcsim.util.aida.AIDA;
+//TODO Add connection status field = disconnected | connected | connecting
public class MonitoringApplication extends JPanel implements ActionListener { private JTabbedPane tabs;
@@ -29,6 +30,16 @@
private JMenuBar menuBar;
+ JMenuItem connectItem; + JMenuItem disconnectItem; + JMenuItem resetConnectionItem; + JMenuItem connectionLoadItem; + JMenuItem connectionSaveItem; + JMenuItem exitItem; + JMenuItem resetEventsItem; + JMenuItem savePlotsItem; + JMenuItem resetDriversItem; +
final String connectCmd = "connect"; final String disconnectCmd = "disconnect"; final String saveConnectionCmd = "saveConnection";
@@ -54,37 +65,37 @@
JMenu connectionMenu = new JMenu("Connection"); menuBar.add(connectionMenu);
- JMenuItem connectItem = new JMenuItem("Connect");
+ connectItem = new JMenuItem("Connect");
connectItem.setMnemonic(KeyEvent.VK_C); connectItem.setActionCommand(connectCmd); connectItem.addActionListener(this); connectionMenu.add(connectItem);
- JMenuItem disconnectItem = new JMenuItem("Disconnect");
+ disconnectItem = new JMenuItem("Disconnect");
disconnectItem.setMnemonic(KeyEvent.VK_D); disconnectItem.setActionCommand(disconnectCmd); disconnectItem.addActionListener(this); connectionMenu.add(disconnectItem);
- JMenuItem resetConnectionItem = new JMenuItem("Reset Connection Settings");
+ resetConnectionItem = new JMenuItem("Reset Connection Settings");
resetConnectionItem.setMnemonic(KeyEvent.VK_R); resetConnectionItem.setActionCommand(resetConnectionSettingsCmd); resetConnectionItem.addActionListener(this); connectionMenu.add(resetConnectionItem);
- JMenuItem connectionLoadItem = new JMenuItem("Load Connection...");
+ connectionLoadItem = new JMenuItem("Load Connection...");
connectionLoadItem.setMnemonic(KeyEvent.VK_L); connectionLoadItem.setActionCommand(loadConnectionCmd); connectionLoadItem.addActionListener(this); connectionMenu.add(connectionLoadItem);
- JMenuItem connectionSaveItem = new JMenuItem("Save Connection...");
+ connectionSaveItem = new JMenuItem("Save Connection...");
connectionSaveItem.setMnemonic(KeyEvent.VK_S); connectionSaveItem.setActionCommand(saveConnectionCmd); connectionSaveItem.addActionListener(this); connectionMenu.add(connectionSaveItem);
- JMenuItem exitItem = new JMenuItem("Exit");
+ exitItem = new JMenuItem("Exit");
exitItem.setMnemonic(KeyEvent.VK_X); exitItem.setActionCommand(exitCmd); exitItem.addActionListener(this);
@@ -93,7 +104,7 @@
JMenu eventMenu = new JMenu("Event"); menuBar.add(eventMenu);
- JMenuItem resetEventsItem = new JMenuItem("Reset Event Monitor");
+ resetEventsItem = new JMenuItem("Reset Event Monitor");
resetEventsItem.setMnemonic(KeyEvent.VK_E); resetEventsItem.setActionCommand(resetEventsCmd); resetEventsItem.addActionListener(this);
@@ -102,13 +113,13 @@
JMenu jobMenu = new JMenu("Job"); menuBar.add(jobMenu);
- JMenuItem savePlotsItem = new JMenuItem("Save Plots to AIDA File...");
+ savePlotsItem = new JMenuItem("Save Plots to AIDA File...");
savePlotsItem.setMnemonic(KeyEvent.VK_P); savePlotsItem.setActionCommand("savePlots"); savePlotsItem.addActionListener(this); jobMenu.add(savePlotsItem);
- JMenuItem resetDriversItem = new JMenuItem("Reset LCSim Drivers");
+ resetDriversItem = new JMenuItem("Reset LCSim Drivers");
resetDriversItem.setMnemonic(KeyEvent.VK_D); resetDriversItem.setActionCommand("resetDrivers"); resetDriversItem.addActionListener(this);
@@ -135,7 +146,7 @@
this.mgr = mgr; }
- synchronized private void savePlots() {
+ synchronized void savePlots() {
JFileChooser fc = new JFileChooser(); int r = fc.showSaveDialog(this); if (r == JFileChooser.APPROVE_OPTION) {
@@ -148,7 +159,7 @@
} }
- synchronized private void resetDrivers() {
+ synchronized void resetDrivers() {
for (Driver driver : mgr.getDriverExecList()) { if (driver instanceof Resettable) { ((Resettable) driver).reset();
@@ -183,6 +194,30 @@
private void exit() { System.exit(0); }
+ + void disconnect() { + // Enable or disable appropriate menu items. + connectItem.setEnabled(true); + disconnectItem.setEnabled(false); + resetConnectionItem.setEnabled(true); + connectionLoadItem.setEnabled(true); + savePlotsItem.setEnabled(false); + + // Reset the LCSim Drivers, which should destroy Plotters. + resetDrivers(); + + // Reenable the ConnectionPanel. + connectionPanel.enableConnectionPanel(true); + } + + void connect() { + // Enable or disable appropriate menu items. + connectItem.setEnabled(false); + disconnectItem.setEnabled(true); + resetConnectionItem.setEnabled(false); + connectionLoadItem.setEnabled(false); + savePlotsItem.setEnabled(true); + }
ConnectionPanel getConnectionPanel() { return connectionPanel;
diff -u -r1.1 -r1.2 --- MonitoringExample.java 27 Mar 2012 03:18:21 -0000 1.1 +++ MonitoringExample.java 27 Mar 2012 04:13:37 -0000 1.2 @@ -21,14 +21,9 @@
import org.lcsim.util.DriverAdapter; /**
- * This class is an example of an event consumer for an ET system. - * - * Based on Carl Timmer's apps.Consumer class from jevio 4.0 release. - *
+ * This is an example monitoring application using the classes from the org.lcsim.hps.monitoring package.
* @author Jeremy McCormick */
-// TODO Move the code that wraps Driver and event loop into the JobControlManager. -// TODO Add connection status field = disconnected | connected | connecting
public class MonitoringExample { private static final String defaultDetectorName = "HPS-Test-JLAB-v4pt0";
@@ -59,109 +54,120 @@
jobPanel.setDetectorName(defaultDetectorName); jobPanel.setSteeringFile(defaultSteeringFile);
- // Wait for connection via GUI. - ConnectionPanel connectionPanel = gui.getConnectionPanel(); - while (!connectionPanel.connectPressed()) { - try { Thread.sleep(1000); } catch (InterruptedException e) {}; - } - ConnectionParameters cn = connectionPanel.getConnectionParameters(); - - // Try block is mostly for EtExceptions and friends. - try { - - // Setup connection to ET system. - EtConnection et = EtConnection.makeEtConnection(cn); - EtSystem sys = et.getEtSystem(); - EtAttachment att = et.getEtAttachment(); - - // Job manager to run LCSim. - String steeringFile = jobPanel.getSteeringFile(); - jobMgr = new JobControlManager(); - jobMgr.checkInputFiles(false); - InputStream is = this.getClass().getResourceAsStream(steeringFile); - jobMgr.setup(is); - - // Set ref to JobControlManager in GUI so resetting works. - gui.setJobControlManager(jobMgr); - - // Make a DriverAdapter for wrapping event loop. - DriverAdapter driverAdapter = jobMgr.getDriverAdapter(); - - // Call wrapper to startOfData() on DriverAdapter. - driverAdapter.configure(null); - - // Make the builder for creating LCSim events from EVIO data. - String detectorName = jobPanel.getDetectorName(); - LCSimEventBuilder eventBuilder = new LCSimEventBuilder(detectorName); - eventBuilder.setDebug(false); - - // Start job timer. - EventPanel eventPanel = gui.getEventPanel(); - eventPanel.updateJobStartTime(); - - // array of events - EtEvent[] mevs = null; - - // EtEvent loop. - while (true) { - try { - // Choose wait or sleep mode depending on connection settings. - if (cn.waitMode == WaitMode.WAIT) { - mevs = sys.getEvents(att, Mode.TIMED, Modify.NOTHING, cn.waitTime, cn.chunk); - } else { - mevs = sys.getEvents(att, Mode.SLEEP, Modify.NOTHING, 0, cn.chunk); - } - - // Loop over retrieved EtEvents. - for (EtEvent mev : mevs) { - - // Update GUI's event count. - eventPanel.updateEventCount(); - - // Get EvioEvent and check for errors. - ByteBuffer buf = mev.getDataBuffer(); - EvioReader reader = new EvioReader(buf); - EvioEvent evioEvent = null; - try { - evioEvent = reader.parseNextEvent(); - } catch (java.nio.BufferUnderflowException e) { - // Error will be caught by subsequent check on null event. - } - if (evioEvent == null) { - eventPanel.updateBadEventCount(); - continue; - } - - // Create LCSim event from EVIO data. - EventHeader lcsimEvent = eventBuilder.makeLCSimEvent(evioEvent); - - // Make a new event for DriverAdapter. - RecordSuppliedEvent loopEvent = new RecordSuppliedEvent(new Object(), lcsimEvent); - - // Call process methods via Driver Adapter. - driverAdapter.recordSupplied(loopEvent); - - // Update the average event rate. - eventPanel.updateAverageEventRate(); - - // Update elapsed time. - eventPanel.updateElapsedTime(); - } - - // Put events back into the ET system. - sys.putEvents(att, mevs); - - } catch (EtTimeoutException e) { - System.out.println("ET Consumer timed out."); - driverAdapter.finish(null); - System.out.println("Press ENTER to exit ..."); - System.console().readLine(); - System.exit(0); - } - } - } catch (Exception ex) { - System.out.println("Error using ET system as consumer."); - ex.printStackTrace(); - } - }
+ // Get ConnectionPanel which can be used to connect/disconnect from ET system. + ConnectionPanel connectionPanel = gui.getConnectionPanel(); + + // GUI loop. Use 'Exit' command from GUI to quit. + while (true) { + + // Wait for connection to be requested via GUI. + while (!connectionPanel.connectRequested()) { + try { Thread.sleep(1000); } catch (InterruptedException e) {}; + } + ConnectionParameters cn = connectionPanel.getConnectionParameters(); + + // This makes sure applicable menu items are enabled/disabled. + gui.connect(); + + // Try block is mostly for EtExceptions and friends. + try { + + // Setup connection to ET system. + EtConnection et = EtConnection.makeEtConnection(cn); + EtSystem sys = et.getEtSystem(); + EtAttachment att = et.getEtAttachment(); + + // Job manager to run LCSim. + String steeringFile = jobPanel.getSteeringFile(); + jobMgr = new JobControlManager(); + jobMgr.checkInputFiles(false); + InputStream is = this.getClass().getResourceAsStream(steeringFile); + jobMgr.setup(is); + + // Set ref to JobControlManager in GUI so resetting works. + gui.setJobControlManager(jobMgr); + + // Make a DriverAdapter for wrapping event loop. + DriverAdapter driverAdapter = jobMgr.getDriverAdapter(); + + // Call wrapper to startOfData() on DriverAdapter. + driverAdapter.configure(null); + + // Make the builder for creating LCSim events from EVIO data. + String detectorName = jobPanel.getDetectorName(); + LCSimEventBuilder eventBuilder = new LCSimEventBuilder(detectorName); + eventBuilder.setDebug(false); + + // Start job timer. + EventPanel eventPanel = gui.getEventPanel(); + eventPanel.updateJobStartTime(); + + // array of events + EtEvent[] mevs = null; + + // EtEvent loop. + while (true) { + try { + // Choose wait or sleep mode depending on connection settings. + if (cn.waitMode == WaitMode.WAIT) { + mevs = sys.getEvents(att, Mode.TIMED, Modify.NOTHING, cn.waitTime, cn.chunk); + } else { + mevs = sys.getEvents(att, Mode.SLEEP, Modify.NOTHING, 0, cn.chunk); + } + + // Loop over retrieved EtEvents. + for (EtEvent mev : mevs) { + + // Update GUI's event count. + eventPanel.updateEventCount(); + + // Get EvioEvent and check for errors. + ByteBuffer buf = mev.getDataBuffer(); + EvioReader reader = new EvioReader(buf); + EvioEvent evioEvent = null; + try { + evioEvent = reader.parseNextEvent(); + } catch (java.nio.BufferUnderflowException e) { + // Error will be caught by subsequent check on null event. + } + if (evioEvent == null) { + eventPanel.updateBadEventCount(); + continue; + } + + // Create LCSim event from EVIO data. + EventHeader lcsimEvent = eventBuilder.makeLCSimEvent(evioEvent); + + // Supply record to Driver Adapter. + driverAdapter.recordSupplied(new RecordSuppliedEvent(new Object(), lcsimEvent)); + + // Update the average event rate. + eventPanel.updateAverageEventRate(); + + // Update elapsed time. + eventPanel.updateElapsedTime(); + } + + // Put events back into the ET system. + sys.putEvents(att, mevs); + + // Break out of event loop if GUI wants disconnect. + if (connectionPanel.disconnectRequested()) { + System.out.println("Disconnect requested. Breaking out of event loop."); + gui.disconnect(); + break; + } + + } catch (EtTimeoutException e) { + System.out.println("ET Consumer timed out."); + driverAdapter.finish(null); + break; + } + } + } catch (Exception ex) { + System.out.println("Error using ET system as consumer."); + ex.printStackTrace(); + } + } + }
}
\ No newline at end of file
diff -u -r1.5 -r1.6 --- SensorOccupancyPlotsDriver.java 27 Mar 2012 03:18:21 -0000 1.5 +++ SensorOccupancyPlotsDriver.java 27 Mar 2012 04:13:37 -0000 1.6 @@ -154,6 +154,7 @@
} public void reset() {
+ occuPlotter.hide();
eventCount = 0; resetOccupancyMap(); }
Use REPLY-ALL to reply to list
To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1