Author: [log in to unmask]
Date: Wed Jan 28 11:05:12 2015
New Revision: 1997
Log:
Add support for setting max records. Includes other minor fixes and improvements. HPSJAVA-253
Modified:
java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/JobSettingsPanel.java
java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/MonitoringApplication.java
java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/RunPanel.java
java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/model/AbstractModel.java
java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/model/Configuration.java
java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/model/ConfigurationModel.java
java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/model/RunModel.java
java/trunk/monitoring-app/src/main/resources/org/hps/monitoring/config/default_config.prop
Modified: java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/JobSettingsPanel.java
=============================================================================
--- java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/JobSettingsPanel.java (original)
+++ java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/JobSettingsPanel.java Wed Jan 28 11:05:12 2015
@@ -31,7 +31,6 @@
import javax.swing.JFileChooser;
import javax.swing.JTextField;
import javax.swing.filechooser.FileFilter;
-import javax.swing.filechooser.FileNameExtensionFilter;
import org.hps.monitoring.enums.SteeringType;
import org.hps.monitoring.gui.model.ConfigurationModel;
@@ -56,6 +55,7 @@
private JComboBox<String> eventBuilderComboBox;
private JTextField userRunNumberField;
private JCheckBox freezeConditionsCheckBox;
+ private JTextField maxEventsField;
private JCheckBox disconnectOnErrorCheckBox;
private JCheckBox disconnectOnEndRunCheckBox;
private JTextField aidaSaveFileNameField;
@@ -128,6 +128,11 @@
freezeConditionsCheckBox = addCheckBox("Freeze detector conditions", false, true);
freezeConditionsCheckBox.addActionListener(this);
freezeConditionsCheckBox.setActionCommand(FREEZE_CONDITIONS_CHANGED);
+
+ maxEventsField = addField("Max Events", "-1", 10, false);
+ maxEventsField.addPropertyChangeListener("value", this);
+ maxEventsField.setEnabled(true);
+ maxEventsField.setEditable(true);
eventBuilderComboBox = addComboBox("LCSim Event Builder", this.findEventBuilderClassNames());
eventBuilderComboBox.setSize(24, eventBuilderComboBox.getPreferredSize().height);
@@ -319,7 +324,7 @@
} else if (DETECTOR_NAME_CHANGED.equals(e.getActionCommand())) {
configurationModel.setDetectorName((String) detectorNameComboBox.getSelectedItem());
} else if (FREEZE_CONDITIONS_CHANGED.equals(e.getActionCommand())) {
- if (configurationModel.hasPropertyValue(USER_RUN_NUMBER_PROPERTY) && configurationModel.getUserRunNumber() != null) {
+ if (configurationModel.hasPropertyKey(USER_RUN_NUMBER_PROPERTY) && configurationModel.getUserRunNumber() != null) {
configurationModel.setFreezeConditions(freezeConditionsCheckBox.isSelected());
} else {
throw new IllegalArgumentException("Conditions system may only be frozen if there is a valid user run number.");
@@ -371,6 +376,9 @@
throw new IllegalArgumentException("The value " + evt.getNewValue() + " is not a valid run number.");
}
}
+ } else if (source == maxEventsField) {
+ configurationModel.setMaxEvents(Long.parseLong(maxEventsField.getText()));
+ System.out.println("setMaxEvents - " + configurationModel.getMaxEvents());
}
}
@@ -429,6 +437,10 @@
if (value != null) {
freezeConditionsCheckBox.setSelected((Boolean) value);
}
+ } else if (evt.getPropertyName().equals(MAX_EVENTS_PROPERTY)) {
+ if (value != null) {
+ maxEventsField.setText(value.toString());
+ }
}
}
}
Modified: java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/MonitoringApplication.java
=============================================================================
--- java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/MonitoringApplication.java (original)
+++ java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/MonitoringApplication.java Wed Jan 28 11:05:12 2015
@@ -87,7 +87,6 @@
/**
* This class is the implementation of the GUI for the Monitoring Application.
*/
-// TODO: Move GUI/window functionality to a new class. (This one is too big!)
public final class MonitoringApplication extends ApplicationWindow implements ActionListener, SystemStatusListener, PropertyChangeListener {
// Top-level Swing components.
@@ -128,7 +127,7 @@
private static Logger logger;
private Handler logHandler;
private DefaultTableModel logTableModel;
- static final String[] logTableColumns = { "Date", "Message", "Level" };
+ static final String[] logTableColumns = { "Date", "Level", "Message" };
private JTable logTable;
private static Level DEFAULT_LOG_LEVEL = Level.INFO;
@@ -536,7 +535,7 @@
saveLayoutItem.setActionCommand(SAVE_LAYOUT);
saveLayoutItem.addActionListener(this);
saveLayoutItem.setToolTipText("Include current GUI layout when saving settings.");
- if (configurationModel.hasPropertyValue(ConfigurationModel.SAVE_LAYOUT_PROPERTY)) {
+ if (configurationModel.hasPropertyKey(ConfigurationModel.SAVE_LAYOUT_PROPERTY)) {
saveLayoutItem.setSelected(configurationModel.getSaveLayout());
}
saveLayoutItem.addPropertyChangeListener(this);
@@ -1135,7 +1134,7 @@
DatabaseConditionsManager conditionsManager = DatabaseConditionsManager.getInstance();
logger.config("setting user run number " + userRunNumber + " with detector " + detectorName);
conditionsManager.setDetector(configurationModel.getDetectorName(), userRunNumber);
- if (configurationModel.hasPropertyValue(ConfigurationModel.FREEZE_CONDITIONS_PROPERTY)) {
+ if (configurationModel.hasPropertyKey(ConfigurationModel.FREEZE_CONDITIONS_PROPERTY)) {
// Freeze the conditions system to ignore run numbers from the events.
logger.config("user configured to freeze conditions system from monitoring app");
conditionsManager.freeze();
@@ -1326,21 +1325,25 @@
CompositeLoopConfiguration loopConfig = new CompositeLoopConfiguration().setStopOnEndRun(configurationModel.getDisconnectOnEndRun()).setStopOnErrors(configurationModel.getDisconnectOnError()).setDataSourceType(configurationModel.getDataSourceType()).setProcessingStage(configurationModel.getProcessingStage()).setEtConnection(connection).setFilePath(configurationModel.getDataSourcePath()).setLCSimEventBuilder(eventBuilder).setDetectorName(configurationModel.getDetectorName());
+ long maxEvents = configurationModel.getMaxEvents();
+ System.out.println("setupCompositeLoop - max events " + maxEvents);
+ if (maxEvents > 0L) {
+ System.out.println("setupCompositeLoop - setting max events to " + maxEvents);
+ loopConfig.setMaxRecords(maxEvents);
+ }
+
// Add all Drivers from the pre-configured JobManager.
for (Driver driver : jobManager.getDriverExecList()) {
loopConfig.add(driver);
}
- // DEBUG: Turn these off while doing other stuff!!!!
// Using ET server?
if (usingEtServer()) {
// ET system monitor.
- // FIXME: Make whether this is run or not configurable through the JobPanel.
loopConfig.add(new EtSystemMonitor());
// ET system strip charts.
- // FIXME: Make whether this is run or not configurable through the JobPanel.
loopConfig.add(new EtSystemStripCharts());
}
@@ -1506,7 +1509,7 @@
// Interrupt the thread which should cause it to stop.
sessionWatchdogThread.interrupt();
try {
- // This should always work once the thread is interupted.
+ // This should always work once the thread is interrupted.
sessionWatchdogThread.join();
} catch (InterruptedException e) {
// This should never happen.
@@ -1539,8 +1542,7 @@
} catch (InterruptedException e) {
// This probably just means that the disconnect button was pushed, and this thread
- // should
- // no longer monitor the event processing.
+ // should no longer monitor the event processing.
e.printStackTrace();
}
}
@@ -1604,7 +1606,7 @@
}
private void updateLayoutConfiguration() {
- if (configurationModel.hasPropertyValue(SAVE_LAYOUT_PROPERTY)) {
+ if (configurationModel.hasPropertyKey(SAVE_LAYOUT_PROPERTY)) {
// Should the GUI config be saved?
if (configurationModel.getSaveLayout()) {
// Push the current GUI settings into the configuration.
@@ -1698,10 +1700,10 @@
}
/**
- * This is a thread to validate the current input file. This must be done on a seperate thread,
+ * This is a thread to validate the current input file. This must be done on a separate thread,
* because EVIO files may take a long time to be completely read in using the EvioReader. Also,
* since the request for file validation comes on the EDT thread, the task must be put onto a
- * seperate thread so that actionPerformed() may exit and not block the EDT from updating the
+ * different thread so that actionPerformed() may exit and not block the EDT from updating the
* GUI.
*/
class FileValidationThread extends Thread {
Modified: java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/RunPanel.java
=============================================================================
--- java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/RunPanel.java (original)
+++ java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/RunPanel.java Wed Jan 28 11:05:12 2015
@@ -29,7 +29,6 @@
* Dashboard for displaying information about the current run.
* @author Jeremy McCormick <[log in to unmask]>
*/
-// TODO: Add event sequence number from CompositeRecord.
class RunPanel extends JPanel implements PropertyChangeListener {
FieldPanel runNumberField = new FieldPanel("Run Number", "", 10, false);
@@ -46,7 +45,7 @@
RunModel model;
- NumberFormat formatter = new DecimalFormat("#0.00");
+ static final NumberFormat formatter = new DecimalFormat("#0.00");
RunPanel(RunModel model) {
this.model = model;
@@ -82,6 +81,45 @@
int eventNumber;
int runNumber = -1;
long jobStartMillis;
+ long lastTickMillis = 0;
+ static final long millis = 1000;
+
+ class RunTimerTask extends TimerTask {
+
+ public void run() {
+
+ double tickLengthSeconds = (System.currentTimeMillis() - lastTickMillis) / (double)millis;
+ int elapsedTime = (int) ((System.currentTimeMillis() - jobStartMillis) / (double)millis);
+ double megaBytesReceived = bytesReceived / 1000000;
+ totalEvents += eventsReceived;
+
+ /*
+ System.out.println("tickLengthSeconds = " + tickLengthSeconds);
+ System.out.println("elapsedTime = " + elapsedTime);
+ System.out.println("eventsReceived = " + eventsReceived);
+ System.out.println("dataRate = " + (megaBytesReceived / tickLengthSeconds));
+ System.out.println("eventNumber = " + eventNumber);
+ System.out.println("eventRate = " + (eventsReceived / tickLengthSeconds));
+ System.out.println("totalEvents = " + totalEvents);
+ System.out.println("megaBytesReceived = " + megaBytesReceived);
+ */
+
+ model.setElapsedTime(elapsedTime);
+ model.setEventsReceived(totalEvents);
+ model.setDataRate(megaBytesReceived / tickLengthSeconds);
+ model.addDataReceived(megaBytesReceived);
+ model.setEventNumber(eventNumber);
+ model.setEventRate(eventsReceived / tickLengthSeconds);
+
+ eventsReceived = 0;
+ bytesReceived = 0;
+ eventNumber = 0;
+
+ lastTickMillis = System.currentTimeMillis();
+
+ // System.out.println();
+ }
+ }
@Override
public void startJob() {
@@ -90,46 +128,31 @@
// Start the timer to update GUI components about once per second.
timer = new Timer("RunModelUpdaterTimer");
- TimerTask task = new TimerTask() {
- public void run() {
- final int elapsedTime = (int) ((System.currentTimeMillis() - jobStartMillis) / 1000);
- double megaBytesReceived = bytesReceived / 1000000;
- totalEvents += eventsReceived;
-
- model.setElapsedTime(elapsedTime);
- model.setEventsReceived(totalEvents);
- model.setDataRate(megaBytesReceived);
- model.addDataReceived(megaBytesReceived);
- model.setEventNumber(eventNumber);
- model.setEventRate(eventsReceived);
- eventsReceived = 0;
- bytesReceived = 0;
- eventNumber = 0;
- }
- };
- timer.scheduleAtFixedRate(task, 0, 1000);
+ lastTickMillis = System.currentTimeMillis();
+ timer.scheduleAtFixedRate(new RunTimerTask(), 0, 1000);
}
@Override
- public void process(CompositeRecord event) {
- ++eventsReceived;
+ public void process(CompositeRecord event) {
if (event.getEvioEvent() != null) {
EvioEvent evioEvent = event.getEvioEvent();
bytesReceived += evioEvent.getTotalBytes();
- eventNumber = evioEvent.getEventNumber();
if (EvioEventUtilities.isPreStartEvent(evioEvent)) {
// Get run start info from pre start event.
startRun(evioEvent);
} else if (EvioEventUtilities.isEndEvent(evioEvent)) {
// Get end run info from end event.
endRun(evioEvent);
- } else {
+ } else if (EvioEventUtilities.isPhysicsEvent(evioEvent)) {
// Check for run info in head bank.
checkHeadBank(evioEvent);
+ eventNumber = evioEvent.getEventNumber();
+ eventsReceived += 1;
}
} else if (event.getEtEvent() != null) {
bytesReceived += event.getEtEvent().getData().length;
eventNumber = event.getEtEvent().getId();
+ eventsReceived += 1;
} else if (event.getLcioEvent() != null) {
EventHeader lcioEvent = event.getLcioEvent();
eventNumber = lcioEvent.getEventNumber();
@@ -137,11 +160,13 @@
runNumber = lcioEvent.getRunNumber();
startRun(lcioEvent);
}
+ eventsReceived += 1;
}
}
/**
- * @param evioEvent
+ * Check for head bank and update the run info if necessary.
+ * @param evioEvent The EVIO event.
*/
private void checkHeadBank(EvioEvent evioEvent) {
BaseStructure headBank = EvioEventUtilities.getHeadBank(evioEvent);
@@ -150,7 +175,7 @@
if (headBankRun != runNumber) {
runNumber = headBankRun;
model.setRunNumber(headBankRun);
- model.setStartDate(new Date(headBank.getIntData()[3]));
+ model.setStartDate(new Date(headBank.getIntData()[3] * 1000));
}
}
}
@@ -176,22 +201,26 @@
if (data != null) {
int seconds = data[0];
runNumber = data[1];
- long startMillis = ((long) seconds) * 1000;
-
+
// Update the GUI.
model.setRunNumber(runNumber);
- model.setStartDate(new Date(startMillis));
+ model.setStartDate(new Date(seconds * 1000));
}
}
private void startRun(EventHeader lcioEvent) {
model.setRunNumber(lcioEvent.getRunNumber());
- model.setStartDate(new Date(lcioEvent.getTimeStamp() / 1000));
+ long seconds = lcioEvent.getTimeStamp() / 1000000000;
+ model.setStartDate(new Date((int)seconds));
}
@Override
public void endJob() {
timer.cancel();
+
+ // Push final values into GUI.
+ timer = new Timer("RunModelUpdaterEndJobTimer");
+ timer.schedule(new RunTimerTask(), 0);
}
}
Modified: java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/model/AbstractModel.java
=============================================================================
--- java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/model/AbstractModel.java (original)
+++ java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/model/AbstractModel.java Wed Jan 28 11:05:12 2015
@@ -3,8 +3,13 @@
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
+import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+
+import javassist.Modifier;
/**
* An abstract class which updates a set of listeners when there are property changes to a backing model.
@@ -90,4 +95,29 @@
}
}
}
+
+ /**
+ * This method will statically extract property names from a class, which in
+ * this package's conventions are statically declared, public strings that
+ * end with "_PROPERTY".
+ *
+ * @param type The class with the properties.
+ * @return The list of property names.
+ */
+ protected static String[] getPropertyNames(Class<? extends AbstractModel> type) {
+ List<String> fields = new ArrayList<String>();
+ for (Field field : type.getDeclaredFields()) {
+ int modifiers = field.getModifiers();
+ if (Modifier.isStatic(modifiers)
+ && Modifier.isPublic(modifiers)
+ && field.getName().endsWith("_PROPERTY")) {
+ try {
+ fields.add((String) field.get(null));
+ } catch (IllegalArgumentException | IllegalAccessException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+ return fields.toArray(new String[]{});
+ }
}
Modified: java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/model/Configuration.java
=============================================================================
--- java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/model/Configuration.java (original)
+++ java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/model/Configuration.java Wed Jan 28 11:05:12 2015
@@ -129,6 +129,20 @@
return null;
}
}
+
+ /**
+ * Get a key value as a Long.
+ * @param key The key to lookup.
+ * @param key The value or null if does not exist.
+ * @return
+ */
+ Long getLong(String key) {
+ if (checkKey(key)) {
+ return Long.parseLong(properties.getProperty(key));
+ } else {
+ return null;
+ }
+ }
/**
* Write this configuration to a file and set that file as the current one.
Modified: java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/model/ConfigurationModel.java
=============================================================================
--- java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/model/ConfigurationModel.java (original)
+++ java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/model/ConfigurationModel.java Wed Jan 28 11:05:12 2015
@@ -1,7 +1,10 @@
package org.hps.monitoring.gui.model;
import java.io.File;
+import java.lang.reflect.Field;
import java.util.logging.Level;
+
+import javassist.Modifier;
import org.hps.monitoring.enums.SteeringType;
import org.hps.record.enums.DataSourceType;
@@ -12,9 +15,8 @@
* A model of the global configuration parameters that can be used to automatically update the GUI
* from a configuration or push changes from GUI components into the current configuration.
*/
-// TODO: Should set methods check if new value is equal to old and then ignore if so?
// FIXME: When the set methods are called, e.g. from GUI updates, this triggers
-// a property change event that pushes the values back to the GUI again.
+// a property change event that pushes the values back to the GUI again.
// FIXME: Should check if property exists in set methods before retrieving old value for all set methods.
public final class ConfigurationModel extends AbstractModel {
@@ -32,6 +34,7 @@
public static final String LOG_FILE_NAME_PROPERTY = "LogFileName";
public static final String LOG_LEVEL_PROPERTY = "LogLevel";
public static final String LOG_TO_FILE_PROPERTY = "LogToFile";
+ public static final String MAX_EVENTS_PROPERTY = "MaxEvents";
public static final String MONITORING_APPLICATION_LAYOUT_PROPERTY = "MonitoringApplicationLayout";
public static final String PLOT_FRAME_LAYOUT_PROPERTY = "PlotFrameLayout";
public static final String SAVE_LAYOUT_PROPERTY = "SaveLayout";
@@ -59,56 +62,9 @@
public static final String WAIT_MODE_PROPERTY = "WaitMode";
public static final String WAIT_TIME_PROPERTY = "WaitTime";
public static final String PRESCALE_PROPERTY = "Prescale";
-
- // These key values are primarily used to figure out what properties need to be persisted when
- // writing to a text file.
- // FIXME: This could probably be replaced with introspection on this class of "_PROPERTY" variables.
- static final String[] CONFIG_PROPERTIES = new String[] {
-
- // Job settings
- AIDA_AUTO_SAVE_PROPERTY,
- AIDA_FILE_NAME_PROPERTY,
- DETECTOR_NAME_PROPERTY,
- DETECTOR_ALIAS_PROPERTY,
- DISCONNECT_ON_ERROR_PROPERTY,
- DISCONNECT_ON_END_RUN_PROPERTY,
- EVENT_BUILDER_PROPERTY,
- FREEZE_CONDITIONS_PROPERTY,
- LOG_FILE_NAME_PROPERTY,
- LOG_LEVEL_PROPERTY,
- LOG_TO_FILE_PROPERTY,
- STEERING_FILE_PROPERTY,
- STEERING_RESOURCE_PROPERTY,
- STEERING_TYPE_PROPERTY,
- USER_RUN_NUMBER_PROPERTY,
-
- // Data source
- DATA_SOURCE_TYPE_PROPERTY,
- DATA_SOURCE_PATH_PROPERTY,
- PROCESSING_STAGE_PROPERTY,
-
- // ET parameters
- ET_NAME_PROPERTY,
- HOST_PROPERTY,
- PORT_PROPERTY,
- BLOCKING_PROPERTY,
- VERBOSE_PROPERTY,
- STATION_NAME_PROPERTY,
- CHUNK_SIZE_PROPERTY,
- QUEUE_SIZE_PROPERTY,
- STATION_POSITION_PROPERTY,
- WAIT_MODE_PROPERTY,
- WAIT_TIME_PROPERTY,
- PRESCALE_PROPERTY,
-
- // GUI layout
- SAVE_LAYOUT_PROPERTY,
- MONITORING_APPLICATION_LAYOUT_PROPERTY,
- PLOT_FRAME_LAYOUT_PROPERTY,
- SYSTEM_STATUS_FRAME_LAYOUT_PROPERTY };
-
- String detectorName;
-
+
+ static final String[] CONFIG_PROPERTIES = AbstractModel.getPropertyNames(ConfigurationModel.class);
+
public ConfigurationModel() {
this.config = new Configuration();
}
@@ -185,7 +141,7 @@
public void setDetectorAlias(String detectorAlias) {
String oldValue = null;
- if (hasPropertyValue(DETECTOR_ALIAS_PROPERTY)) {
+ if (hasPropertyKey(DETECTOR_ALIAS_PROPERTY)) {
oldValue = getDetectorAlias();
}
config.set(DETECTOR_ALIAS_PROPERTY, detectorAlias);
@@ -208,7 +164,7 @@
}
public void setLogToFile(boolean logToFile) {
- boolean oldValue = getLogToFile();
+ Boolean oldValue = getLogToFile();
config.set(LOG_TO_FILE_PROPERTY, logToFile);
firePropertyChange(LOG_TO_FILE_PROPERTY, oldValue, getLogToFile());
}
@@ -228,7 +184,7 @@
}
public void setAidaAutoSave(boolean aidaAutoSave) {
- boolean oldValue = getAidaAutoSave();
+ Boolean oldValue = getAidaAutoSave();
config.set(AIDA_AUTO_SAVE_PROPERTY, aidaAutoSave);
firePropertyChange(AIDA_AUTO_SAVE_PROPERTY, oldValue, aidaAutoSave);
}
@@ -248,7 +204,7 @@
}
public void setDisconnectOnError(boolean disconnectOnError) {
- boolean oldValue = getDisconnectOnError();
+ Boolean oldValue = getDisconnectOnError();
config.set(DISCONNECT_ON_ERROR_PROPERTY, disconnectOnError);
firePropertyChange(DISCONNECT_ON_ERROR_PROPERTY, oldValue, getDisconnectOnError());
}
@@ -258,7 +214,7 @@
}
public void setDisconnectOnEndRun(boolean disconnectOnEndRun) {
- boolean oldValue = getDisconnectOnEndRun();
+ Boolean oldValue = getDisconnectOnEndRun();
config.set(DISCONNECT_ON_END_RUN_PROPERTY, disconnectOnEndRun);
firePropertyChange(DISCONNECT_ON_END_RUN_PROPERTY, oldValue, getDisconnectOnEndRun());
}
@@ -320,7 +276,7 @@
}
public void setPort(int port) {
- int oldValue = getPort();
+ Integer oldValue = getPort();
config.set(PORT_PROPERTY, port);
firePropertyChange(PORT_PROPERTY, oldValue, getPort());
}
@@ -330,7 +286,7 @@
}
public void setBlocking(boolean blocking) {
- boolean oldValue = getBlocking();
+ Boolean oldValue = getBlocking();
config.set(BLOCKING_PROPERTY, blocking);
firePropertyChange(BLOCKING_PROPERTY, oldValue, getBlocking());
}
@@ -340,7 +296,7 @@
}
public void setVerbose(boolean verbose) {
- boolean oldValue = getVerbose();
+ Boolean oldValue = getVerbose();
config.set(VERBOSE_PROPERTY, verbose);
firePropertyChange(VERBOSE_PROPERTY, oldValue, getVerbose());
}
@@ -360,7 +316,7 @@
}
public void setChunkSize(int chunkSize) {
- int oldValue = getChunkSize();
+ Integer oldValue = getChunkSize();
config.set(CHUNK_SIZE_PROPERTY, chunkSize);
firePropertyChange(CHUNK_SIZE_PROPERTY, oldValue, getChunkSize());
}
@@ -370,7 +326,7 @@
}
public void setQueueSize(int queueSize) {
- int oldValue = getQueueSize();
+ Integer oldValue = getQueueSize();
config.set(QUEUE_SIZE_PROPERTY, queueSize);
firePropertyChange(QUEUE_SIZE_PROPERTY, oldValue, getQueueSize());
}
@@ -380,7 +336,7 @@
}
public void setStationPosition(int stationPosition) {
- int oldValue = getStationPosition();
+ Integer oldValue = getStationPosition();
config.set(STATION_POSITION_PROPERTY, stationPosition);
firePropertyChange(STATION_POSITION_PROPERTY, oldValue, getStationPosition());
}
@@ -400,7 +356,7 @@
}
public void setWaitTime(int waitTime) {
- int oldValue = getWaitTime();
+ Integer oldValue = getWaitTime();
config.set(WAIT_TIME_PROPERTY, waitTime);
firePropertyChange(WAIT_TIME_PROPERTY, oldValue, getWaitTime());
}
@@ -410,14 +366,14 @@
}
public void setPrescale(int prescale) {
- int oldValue = getPrescale();
+ Integer oldValue = getPrescale();
config.set(PRESCALE_PROPERTY, prescale);
firePropertyChange(PRESCALE_PROPERTY, oldValue, getPrescale());
}
public void setUserRunNumber(Integer userRunNumber) {
Integer oldValue = null;
- if (hasPropertyValue(USER_RUN_NUMBER_PROPERTY)) {
+ if (hasPropertyKey(USER_RUN_NUMBER_PROPERTY)) {
oldValue = getUserRunNumber();
}
config.set(USER_RUN_NUMBER_PROPERTY, userRunNumber);
@@ -430,7 +386,7 @@
public void setFreezeConditions(boolean freezeConditions) {
Boolean oldValue = null;
- if (hasPropertyValue(FREEZE_CONDITIONS_PROPERTY)) {
+ if (hasPropertyKey(FREEZE_CONDITIONS_PROPERTY)) {
oldValue = getFreezeConditions();
}
config.set(FREEZE_CONDITIONS_PROPERTY, freezeConditions);
@@ -446,7 +402,7 @@
}
public void setSaveLayout(boolean saveLayout) {
- boolean oldValue = getSaveLayout();
+ Boolean oldValue = getSaveLayout();
config.set(SAVE_LAYOUT_PROPERTY, saveLayout);
firePropertyChange(SAVE_LAYOUT_PROPERTY, oldValue, getSaveLayout());
}
@@ -479,6 +435,17 @@
String oldValue = getPlotFrameLayout();
config.set(PLOT_FRAME_LAYOUT_PROPERTY, layout);
firePropertyChange(PLOT_FRAME_LAYOUT_PROPERTY, oldValue, getPlotFrameLayout());
+ }
+
+ public void setMaxEvents(long maxEvents) {
+ //System.out.println("ConfigurationModel.setMaxEvents - " + maxEvents);
+ Long oldValue = getMaxEvents();
+ config.set(MAX_EVENTS_PROPERTY, maxEvents);
+ firePropertyChange(MAX_EVENTS_PROPERTY, oldValue, getMaxEvents());
+ }
+
+ public Long getMaxEvents() {
+ return config.getLong(MAX_EVENTS_PROPERTY);
}
public void remove(String property) {
@@ -489,7 +456,7 @@
}
}
- public boolean hasPropertyValue(String key) {
+ public boolean hasPropertyKey(String key) {
return config.hasKey(key);
}
Modified: java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/model/RunModel.java
=============================================================================
--- java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/model/RunModel.java (original)
+++ java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/model/RunModel.java Wed Jan 28 11:05:12 2015
@@ -19,19 +19,8 @@
public final static String DATA_RATE_PROPERTY = "DataRate"; // data rate in megabytes per second
public final static String EVENT_RATE_PROPERTY = "EventRate"; // event rate per second
- static final String[] properties = new String[] {
- RUN_NUMBER_PROPERTY,
- START_DATE_PROPERTY,
- END_DATE_PROPERTY,
- RUN_LENGTH_PROPERTY,
- TOTAL_EVENTS_PROPERTY,
- ELAPSED_TIME_PROPERTY,
- DATA_RECEIVED_PROPERTY,
- EVENT_NUMBER_PROPERTY,
- DATA_RATE_PROPERTY,
- EVENT_RATE_PROPERTY
- };
-
+ static final String[] RUN_PROPERTIES = AbstractModel.getPropertyNames(RunModel.class);
+
Integer runNumber;
Date startDate;
Date endDate;
@@ -45,11 +34,11 @@
Double eventRate;
public String[] getPropertyNames() {
- return properties;
+ return RUN_PROPERTIES;
}
public void setRunNumber(int runNumber) {
- int oldValue = this.runNumber;
+ Integer oldValue = this.runNumber;
this.runNumber = runNumber;
this.firePropertyChange(RUN_NUMBER_PROPERTY, oldValue, this.runNumber);
}
@@ -67,7 +56,7 @@
}
public void setRunLength(int runLength) {
- int oldValue = this.runLength;
+ Integer oldValue = this.runLength;
this.runLength = runLength;
this.firePropertyChange(RUN_LENGTH_PROPERTY, oldValue, this.runLength);
}
@@ -81,29 +70,25 @@
}
public void setTotalEvents(int totalEvents) {
- int oldValue = this.totalEvents;
+ Integer oldValue = this.totalEvents;
this.totalEvents = totalEvents;
this.firePropertyChange(TOTAL_EVENTS_PROPERTY, oldValue, this.totalEvents);
}
public void setEventsReceived(int eventsReceived) {
- int oldValue = this.eventsReceived;
+ Integer oldValue = this.eventsReceived;
this.eventsReceived = eventsReceived;
this.firePropertyChange(EVENTS_RECEIVED_PROPERTY, oldValue, this.eventsReceived);
}
- public void incrementEventsReceived() {
- this.setEventsReceived(eventsReceived + 1);
- }
-
public void setElapsedTime(int elapsedTime) {
- int oldValue = this.elapsedTime;
+ Integer oldValue = this.elapsedTime;
this.elapsedTime = elapsedTime;
this.firePropertyChange(ELAPSED_TIME_PROPERTY, oldValue, this.elapsedTime);
}
public void setDataReceived(double dataReceived) {
- double oldValue = this.dataReceived;
+ Double oldValue = this.dataReceived;
this.dataReceived = dataReceived;
this.firePropertyChange(DATA_RECEIVED_PROPERTY, oldValue, this.dataReceived);
}
@@ -113,19 +98,19 @@
}
public void setEventNumber(int eventNumber) {
- int oldValue = this.eventNumber;
+ Integer oldValue = this.eventNumber;
this.eventNumber = eventNumber;
this.firePropertyChange(EVENT_NUMBER_PROPERTY, oldValue, this.eventNumber);
}
public void setDataRate(double dataRate) {
- double oldValue = this.dataRate;
+ Double oldValue = this.dataRate;
this.dataRate = dataRate;
this.firePropertyChange(DATA_RATE_PROPERTY, oldValue, this.dataRate);
}
public void setEventRate(double eventRate) {
- double oldValue = this.eventRate;
+ Double oldValue = this.eventRate;
this.eventRate = eventRate;
this.firePropertyChange(EVENT_RATE_PROPERTY, oldValue, this.eventRate);
}
Modified: java/trunk/monitoring-app/src/main/resources/org/hps/monitoring/config/default_config.prop
=============================================================================
--- java/trunk/monitoring-app/src/main/resources/org/hps/monitoring/config/default_config.prop (original)
+++ java/trunk/monitoring-app/src/main/resources/org/hps/monitoring/config/default_config.prop Wed Jan 28 11:05:12 2015
@@ -11,6 +11,7 @@
#LogFileName=
LogLevel=ALL
LogToFile=false
+MaxEvents=-1
#SteeringFile=
SteeringResource=org/hps/steering/monitoring/DummyMonitoring.lcsim
SteeringType=RESOURCE
@@ -33,4 +34,6 @@
StationName=MY_STATION
Verbose=false
WaitMode=TIMED
-WaitTime=1000000000
+WaitTime=1000000000
+
+SaveLayout=false;
|