Author: [log in to unmask]
Date: Fri Jan 23 11:47:15 2015
New Revision: 1979
Log:
Add support for detector alias so compact.xml can be changed on the fly if needed. HPSJAVA-284
Modified:
java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/Commands.java
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/model/ConfigurationModel.java
Modified: java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/Commands.java
=============================================================================
--- java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/Commands.java (original)
+++ java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/Commands.java Fri Jan 23 11:47:15 2015
@@ -9,6 +9,7 @@
static final String AIDA_AUTO_SAVE = "aidaAutoSave";
static final String AIDA_AUTO_SAVE_CHANGED = "aidaAutoSaveChanged";
static final String BLOCKING_CHANGED = "blockingChanged";
+ static final String CHOOSE_COMPACT_FILE = "chooseCompactFile";
static final String CHOOSE_LOG_FILE = "chooseLogFile";
static final String CHOOSE_FILE_SOURCE = "chooseFileSource";
static final String CHOOSE_STEERING_FILE = "chooseSteeringFile";
@@ -16,6 +17,7 @@
static final String CLEAR_LOG_TABLE = "clearLogTable";
static final String DATA_SOURCE_TYPE_CHANGED = "dataSourceTypeChanged";
static final String DETECTOR_NAME_CHANGED = "detectorNameChanged";
+ static final String DETECTOR_ALIAS_CHANGED = "detectorAliasChanged";
static final String DISCONNECT = "disconnect";
static final String DISCONNECT_ON_ERROR_CHANGED = "disconnectOnErrorChanged";
static final String DISCONNECT_ON_END_RUN_CHANGED = "disconnectOnEndRunChanged";
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 Fri Jan 23 11:47:15 2015
@@ -30,6 +30,8 @@
import javax.swing.JComboBox;
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;
@@ -50,6 +52,7 @@
private JTextField steeringFileField;
private JComboBox<?> steeringTypeComboBox;
private JComboBox<String> detectorNameComboBox;
+ private JTextField detectorAliasField;
private JComboBox<String> eventBuilderComboBox;
private JTextField userRunNumberField;
private JCheckBox freezeConditionsCheckBox;
@@ -106,6 +109,15 @@
detectorNameComboBox = addComboBox("Detector Name", this.findDetectorNames());
detectorNameComboBox.setActionCommand(DETECTOR_NAME_CHANGED);
detectorNameComboBox.addActionListener(this);
+
+ detectorAliasField = addField("Detector Resources Directory", "", 35, true);
+ detectorAliasField.setActionCommand(DETECTOR_ALIAS_CHANGED);
+ detectorAliasField.addPropertyChangeListener("value", this);
+ detectorAliasField.addActionListener(this);
+
+ JButton compactXmlButton = addButton("Select Compact Xml File");
+ compactXmlButton.setActionCommand(Commands.CHOOSE_COMPACT_FILE);
+ compactXmlButton.addActionListener(this);
userRunNumberField = addField("User Run Number", "", 10, false);
userRunNumberField.addPropertyChangeListener("value", this);
@@ -226,6 +238,46 @@
}
}
}
+
+ /**
+ * This filter will accept only files called compact.xml which
+ * should be an LCSim detector description file.
+ */
+ static class CompactFileFilter extends FileFilter {
+
+ public CompactFileFilter() {
+ }
+
+ @Override
+ public boolean accept(File pathname) {
+ if (pathname.getName().equals("compact.xml")) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ @Override
+ public String getDescription() {
+ return "Compact XML files";
+ }
+ }
+
+
+ /**
+ * Choose a compact XML file to override the one embedded in the jar as a resource.
+ */
+ void chooseCompactFile() {
+ JFileChooser fc = new JFileChooser();
+ fc.setDialogTitle("Choose a Compact XML File");
+ fc.setCurrentDirectory(new File("."));
+ fc.setFileFilter(new CompactFileFilter());
+ int r = fc.showDialog(this, "Select ...");
+ if (r == JFileChooser.APPROVE_OPTION) {
+ File file = fc.getSelectedFile();
+ configurationModel.setDetectorAlias(file.getParent());
+ }
+ }
/**
* Parse the lcsim steering file to see if it appears to be valid.
@@ -246,6 +298,8 @@
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals(Commands.CHOOSE_STEERING_FILE)) {
this.chooseSteeringFile();
+ } else if (e.getActionCommand().equals(Commands.CHOOSE_COMPACT_FILE)) {
+ chooseCompactFile();
} else if (DISCONNECT_ON_ERROR_CHANGED.equals(e.getActionCommand())) {
configurationModel.setDisconnectOnError(disconnectOnErrorCheckBox.isSelected());
} else if (DISCONNECT_ON_END_RUN_CHANGED.equals(e.getActionCommand())) {
@@ -270,6 +324,8 @@
} else {
throw new IllegalArgumentException("Conditions system may only be frozen if there is a valid user run number.");
}
+ } else if (DETECTOR_ALIAS_CHANGED.equals(e.getActionCommand())) {
+ configurationModel.setDetectorName(detectorAliasField.getText());
}
}
@@ -334,6 +390,8 @@
if (evt.getPropertyName().equals(DETECTOR_NAME_PROPERTY)) {
detectorNameComboBox.setSelectedItem((String) value);
+ } else if (evt.getPropertyName().equals(DETECTOR_ALIAS_PROPERTY)) {
+ detectorAliasField.setText((String) value);
} else if (evt.getPropertyName().equals(AIDA_AUTO_SAVE_PROPERTY)) {
aidaAutoSaveCheckbox.setSelected((Boolean) value);
} else if (evt.getPropertyName().equals(AIDA_FILE_NAME_PROPERTY)) {
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 Fri Jan 23 11:47:15 2015
@@ -99,6 +99,7 @@
import org.jlab.coda.jevio.EvioException;
import org.jlab.coda.jevio.EvioReader;
import org.lcsim.conditions.ConditionsManager;
+import org.lcsim.conditions.ConditionsReader;
import org.lcsim.lcio.LCIOReader;
import org.lcsim.util.Driver;
import org.lcsim.util.aida.AIDA;
@@ -1114,6 +1115,12 @@
try {
// Create and the job manager. The conditions manager is instantiated from this call but not configured.
jobManager = new JobManager();
+
+ if (configurationModel.hasPropertyValue(ConfigurationModel.DETECTOR_ALIAS_PROPERTY) && configurationModel.getDetectorAlias() != null) {
+ // Set a detector alias.
+ ConditionsReader.addAlias(configurationModel.getDetectorName(), "file://" + configurationModel.getDetectorAlias());
+ logger.config("using detector alias " + configurationModel.getDetectorAlias());
+ }
// Setup the event builder to translate from EVIO to LCIO.
// This must happen before Driver setup so the builder's listeners are activated first!
@@ -1166,7 +1173,7 @@
jobManager.setup(is);
is.close();
}
-
+
/**
* Create the event builder for converting EVIO events to LCSim.
*/
@@ -1189,7 +1196,7 @@
log(Level.CONFIG, "Successfully initialized event builder <" + eventBuilderClassName + ">");
}
-
+
/**
* Create a connection to an ET system using current parameters from the GUI. If successful, the
* application's ConnectionStatus is changed to CONNECTED.
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 Fri Jan 23 11:47:15 2015
@@ -26,6 +26,7 @@
public static final String AIDA_AUTO_SAVE_PROPERTY = "AidaAutoSave";
public static final String AIDA_FILE_NAME_PROPERTY = "AidaFileName";
public static final String DETECTOR_NAME_PROPERTY = "DetectorName";
+ public static final String DETECTOR_ALIAS_PROPERTY = "DetectorAlias";
public static final String DISCONNECT_ON_ERROR_PROPERTY = "DisconnectOnError";
public static final String DISCONNECT_ON_END_RUN_PROPERTY = "DisconnectOnEndRun";
public static final String EVENT_BUILDER_PROPERTY = "EventBuilderClassName";
@@ -63,12 +64,14 @@
// 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,
@@ -177,6 +180,20 @@
config.set(DETECTOR_NAME_PROPERTY, detectorName);
firePropertyChange(DETECTOR_NAME_PROPERTY, oldValue, getDetectorName());
}
+
+ public String getDetectorAlias() {
+ return config.get(DETECTOR_ALIAS_PROPERTY);
+ }
+
+ public void setDetectorAlias(String detectorAlias) {
+ String oldValue = null;
+ if (hasPropertyValue(DETECTOR_ALIAS_PROPERTY)) {
+ oldValue = getDetectorAlias();
+ }
+ config.set(DETECTOR_ALIAS_PROPERTY, detectorAlias);
+ firePropertyChange(DETECTOR_ALIAS_PROPERTY, oldValue, getDetectorAlias());
+ }
+
public String getEventBuilderClassName() {
return config.get(EVENT_BUILDER_PROPERTY);
|