Author: [log in to unmask]
Date: Mon Nov 10 00:01:21 2014
New Revision: 1462
Log:
Attempt to cleanup the conditions module mess.
Removed:
java/trunk/conditions/src/main/java/org/hps/conditions/config/
java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtConfigurationLoader.java
java/trunk/conditions/src/main/resources/HPS-ECalCommissioning/
java/trunk/conditions/src/main/resources/org/hps/conditions/config/conditions_database_testrun_2012_connection.properties
java/trunk/conditions/src/main/resources/org/hps/conditions/config/conditions_dev.properties
java/trunk/conditions/src/main/resources/org/hps/conditions/config/conditions_dev_local.properties
java/trunk/conditions/src/main/resources/org/hps/conditions/config/jlab_hpsuser.properties
java/trunk/conditions/src/test/java/org/hps/conditions/ConditionsDevTest.java
java/trunk/conditions/src/test/java/org/hps/conditions/ConditionsSeriesConverterTest.java
java/trunk/conditions/src/test/java/org/hps/conditions/ConditionsTestRunTest.java
java/trunk/conditions/src/test/java/org/hps/conditions/DatabaseConditionsManagerTest.java
java/trunk/conditions/src/test/java/org/hps/conditions/ecal/EcalDaqTest.java
java/trunk/conditions/src/test/java/org/hps/conditions/ecal/EcalGainCompareTest.java
java/trunk/conditions/src/test/java/org/hps/conditions/ecal/EcalLedTest.java
java/trunk/conditions/src/test/java/org/hps/conditions/ecal/PhysicalToGainTest.java
java/trunk/conditions/src/test/java/org/hps/conditions/ecal/TestRunEcalConditionsConverterTest.java
java/trunk/conditions/src/test/java/org/hps/conditions/svt/SvtConditionsConverterTest.java
java/trunk/conditions/src/test/java/org/hps/conditions/svt/SvtGainInsertTest.java
Modified:
java/trunk/conditions/src/main/java/org/hps/conditions/ConditionsDriver.java
java/trunk/conditions/src/main/java/org/hps/conditions/ConditionsObjectConverter.java
java/trunk/conditions/src/main/java/org/hps/conditions/ConditionsRecordConverter.java
java/trunk/conditions/src/main/java/org/hps/conditions/ConditionsSeriesConverter.java
java/trunk/conditions/src/main/java/org/hps/conditions/ConnectionParameters.java
java/trunk/conditions/src/main/java/org/hps/conditions/DatabaseConditionsManager.java
java/trunk/conditions/src/main/java/org/hps/conditions/TestRunConditionsDriver.java
java/trunk/conditions/src/test/java/org/hps/conditions/ConditionsObjectTest.java
java/trunk/conditions/src/test/java/org/hps/conditions/ecal/EcalConditionsConverterTest.java
java/trunk/conditions/src/test/java/org/hps/conditions/ecal/EcalDetectorSetupTest.java
java/trunk/conditions/src/test/java/org/hps/conditions/svt/SvtConfigurationTest.java
java/trunk/conditions/src/test/java/org/hps/conditions/svt/SvtDaqMappingTest.java
java/trunk/conditions/src/test/java/org/hps/conditions/svt/SvtDetectorSetupTest.java
java/trunk/conditions/src/test/java/org/hps/conditions/svt/TestRunSvtConditionsConverterTest.java
java/trunk/conditions/src/test/java/org/hps/conditions/svt/TestRunSvtDaqMappingTest.java
java/trunk/conditions/src/test/java/org/hps/conditions/svt/TestRunSvtDetectorSetupTest.java
Modified: java/trunk/conditions/src/main/java/org/hps/conditions/ConditionsDriver.java
=============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/ConditionsDriver.java (original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/ConditionsDriver.java Mon Nov 10 00:01:21 2014
@@ -1,8 +1,6 @@
package org.hps.conditions;
import static org.hps.conditions.TableConstants.SVT_CONDITIONS;
-
-import java.io.File;
import org.hps.conditions.svt.SvtConditions;
import org.hps.conditions.svt.SvtDetectorSetup;
@@ -18,37 +16,15 @@
*/
public class ConditionsDriver extends AbstractConditionsDriver {
- // Default conditions system XML config, which is for the Test Run 2012 database.
- static final String DB_CONFIG = "/org/hps/conditions/config/conditions_dev.xml";
-
- // Default database connection parameters, which points to the SLAC development database.
- static final String DB_CONNECTION = "/org/hps/conditions/config/conditions_dev.properties";
-
- File connectionFile;
-
public ConditionsDriver() {
if (ConditionsManager.defaultInstance() instanceof DatabaseConditionsManager) {
getLogger().config("ConditionsDriver found existing DatabaseConditionsManager.");
manager = (DatabaseConditionsManager) ConditionsManager.defaultInstance();
} else {
manager = new DatabaseConditionsManager();
- manager.setConnectionResource(DB_CONNECTION);
- manager.configure(DB_CONFIG);
- manager.register();
}
}
-
- public void setConnectionFile(String connectionFile) {
- getLogger().config("set connectionFile to " + connectionFile);
- this.connectionFile = new File(connectionFile);
- manager.setConnectionProperties(this.connectionFile);
- }
-
- public void setConnectionResource(String connectionResource) {
- getLogger().config("set connection resource to " + connectionResource);
- manager.setConnectionResource(connectionResource);
- }
-
+
/**
* Load the {@link SvtConditions} set onto <code>HpsSiSensor</code>.
* @param detector The detector to update.
Modified: java/trunk/conditions/src/main/java/org/hps/conditions/ConditionsObjectConverter.java
=============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/ConditionsObjectConverter.java (original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/ConditionsObjectConverter.java Mon Nov 10 00:01:21 2014
@@ -62,8 +62,7 @@
// There were multiple records returned.
if (!allowMultipleCollections())
// If there are multiple records returned but this is not allowed by the
- // converter,
- // then this is a fatal error.
+ // converter, then this is a fatal error.
throw new RuntimeException("Multiple conditions records returned but this is not allowed.");
} else {
// There was a single conditions record so the collection information can be
Modified: java/trunk/conditions/src/main/java/org/hps/conditions/ConditionsRecordConverter.java
=============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/ConditionsRecordConverter.java (original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/ConditionsRecordConverter.java Mon Nov 10 00:01:21 2014
@@ -11,7 +11,7 @@
* @author Jeremy McCormick <[log in to unmask]>
* @version $Id: ConditionsRecordConverter.java,v 1.5 2013/10/15 23:24:47 jeremy Exp $
*/
-public final class ConditionsRecordConverter extends ConditionsObjectConverter<ConditionsRecordCollection> {
+class ConditionsRecordConverter extends ConditionsObjectConverter<ConditionsRecordCollection> {
/**
* Get the ConditionsRecords for a run based on current configuration of the
Modified: java/trunk/conditions/src/main/java/org/hps/conditions/ConditionsSeriesConverter.java
=============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/ConditionsSeriesConverter.java (original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/ConditionsSeriesConverter.java Mon Nov 10 00:01:21 2014
@@ -20,7 +20,7 @@
*
* @author Jeremy McCormick <[log in to unmask]>
*/
-public class ConditionsSeriesConverter {
+class ConditionsSeriesConverter {
DatabaseConditionsManager conditionsManager = null;
Modified: java/trunk/conditions/src/main/java/org/hps/conditions/ConnectionParameters.java
=============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/ConnectionParameters.java (original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/ConnectionParameters.java Mon Nov 10 00:01:21 2014
@@ -17,14 +17,20 @@
* @author Jeremy McCormick <[log in to unmask]>
* @version $Id: ConnectionParameters.java,v 1.8 2013/10/04 01:54:16 jeremy Exp $
*/
-public final class ConnectionParameters {
+public class ConnectionParameters {
- private String user;
- private String password;
- private int port;
- private String hostname;
- private String database;
+ protected String user;
+ protected String password;
+ protected int port;
+ protected String hostname;
+ protected String database;
+ /**
+ * Protected constructor for sub-classes.
+ */
+ protected ConnectionParameters() {
+ }
+
/**
* Fully qualified constructor.
* @param user The user name.
@@ -41,11 +47,11 @@
this.port = port;
}
- /**
+ /**
* Get Properties object for this connection.
* @return The Properties for this connection.
*/
- public Properties getConnectionProperties() {
+ public Properties getConnectionProperties() {
Properties p = new Properties();
p.put("user", user);
p.put("password", password);
Modified: java/trunk/conditions/src/main/java/org/hps/conditions/DatabaseConditionsManager.java
=============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/DatabaseConditionsManager.java (original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/DatabaseConditionsManager.java Mon Nov 10 00:01:21 2014
@@ -5,6 +5,8 @@
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -51,23 +53,13 @@
protected List<TableMetaData> tableMetaData;
protected List<ConditionsConverter> converters;
protected File connectionPropertiesFile;
- //protected ConditionsReader baseReader;
protected static Logger logger = null;
- protected ConnectionParameters connectionParameters;
+ protected ConnectionParameters connectionParameters = new DefaultConnectionParameters();
protected Connection connection;
- protected boolean wasConfigured = false;
protected boolean isConnected = false;
protected ConditionsSeriesConverter conditionsSeriesConverter = new ConditionsSeriesConverter(this);
-
- /**
- * Class constructor.
- */
- public DatabaseConditionsManager() {
- registerConditionsConverter(new DetectorConditionsConverter());
- //baseReader = new BaseClasspathConditionsReader();
- setupConnectionFromSystemProperty();
- }
-
+ protected static final String DEFAULT_CONFIG = "/org/hps/conditions/config/conditions_dev.xml";
+
/**
* Simple log formatter for this class.
*/
@@ -79,7 +71,7 @@
return sb.toString();
}
}
-
+
/**
* Setup the logger for this class, with initial level of ALL.
*/
@@ -93,6 +85,38 @@
logger.addHandler(handler);
logger.config("logger initialized with level " + handler.getLevel());
}
+
+ /**
+ * Default connection parameters.
+ */
+ static class DefaultConnectionParameters extends ConnectionParameters {
+ DefaultConnectionParameters() {
+ this.port = 3306;
+ try {
+ if (InetAddress.getLocalHost().getHostName().contains("jlab.org")) {
+ this.hostname = "jmysql.jlab.org";
+ this.database = "hps_conditions";
+ } else {
+ this.hostname = "ppa-jeremym-l.slac.stanford.edu";
+ this.database = "hps_conditions_dev";
+ }
+ } catch (UnknownHostException e) {
+ throw new RuntimeException(e);
+ }
+ this.user = "hpsuser";
+ this.password = "darkphoton";
+ }
+ }
+
+ /**
+ * Class constructor.
+ */
+ public DatabaseConditionsManager() {
+ registerConditionsConverter(new DetectorConditionsConverter());
+ setupConnectionFromSystemProperty();
+ configure(DEFAULT_CONFIG);
+ register();
+ }
/**
* Register this conditions manager as the global default.
@@ -110,11 +134,10 @@
// Perform default setup if necessary.
if (!ConditionsManager.isSetup()) {
- DatabaseConditionsManager manager = new DatabaseConditionsManager();
- manager.register();
- }
-
- // Get the instance of the manager from the conditions system and
+ new DatabaseConditionsManager();
+ }
+
+ // Get the instance of the manager from the conditions system and check
// that the type is valid.
ConditionsManager manager = ConditionsManager.defaultInstance();
if (!(manager instanceof DatabaseConditionsManager)) {
@@ -127,15 +150,98 @@
public Connection getConnection() {
return this.connection;
}
-
- /**
- * This method catches changes to the detector name and run number. Somewhat
- * unintuitively, this method is actually called every time an lcsim event is created,
- * so it has internal logic to figure out if the conditions system actually needs to
- * be updated.
+
+ /**
+ * Open the database connection.
+ */
+ public void openConnection() {
+ if (connectionParameters == null) {
+ throw new RuntimeException("The connection parameters are null.");
+ }
+ logger.config("opening connection to " + connectionParameters.getConnectionString());
+ logger.config("host " + connectionParameters.getHostname());
+ logger.config("port " + connectionParameters.getPort());
+ logger.config("user " + connectionParameters.getUser());
+ logger.config("password " + connectionParameters.getPassword());
+ logger.config("database " + connectionParameters.getDatabase());
+ connection = connectionParameters.createConnection();
+ logger.config("created connection " + connectionParameters.getConnectionString());
+ isConnected = true;
+ }
+
+ /**
+ * Close the database connection.
+ */
+ public void closeConnection() {
+ logger.config("closing connection");
+ if (connection != null) {
+ try {
+ if (!connection.isClosed()) {
+ connection.close();
+ logger.config("connection closed");
+ } else {
+ logger.config("connection already closed");
+ }
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ connection = null;
+ connectionParameters = null;
+ isConnected = false;
+ }
+
+ @Override
+ public void finalize() {
+ if (isConnected())
+ closeConnection();
+ }
+
+ /**
+ * Get multiple <code>ConditionsObjectCollection</code> objects that may have overlapping time validity information.
+ * @param conditionsKey The conditions key.
+ * @return The <code>ConditionsSeries</code> containing the matching <code>ConditionsObjectCollection</code>.
+ */
+ public <CollectionType extends ConditionsObjectCollection> ConditionsSeries<CollectionType> getConditionsSeries(String conditionsKey) {
+ return conditionsSeriesConverter.createSeries(conditionsKey);
+ }
+
+ /**
+ * Get a given collection of the given type from the conditions database.
+ * @param type Class type
+ * @return A collection of objects of the given type from the conditions database
+ */
+ public <CollectionType extends ConditionsObjectCollection> CollectionType getCollection(Class<CollectionType> type){
+ TableMetaData metaData = this.findTableMetaData(type);
+ if(metaData == null) {
+ throw new RuntimeException("Table name data for condition of type " + type.getSimpleName() + " was not found.");
+ }
+ String tableName = metaData.getTableName();
+ CollectionType conditionsCollection = this.getCachedConditions(type, tableName).getCachedData();
+ return conditionsCollection;
+ }
+
+ /**
+ * Simple utility method to cast the generic <code>ConditionsManager</code> to this class.
+ * @param conditionsManager The <code>ConditionsManager</code>.
+ * @return The <code>DatabaseConditionsManager</code> object.
+ */
+ public static DatabaseConditionsManager castFrom(ConditionsManager conditionsManager) {
+ if (conditionsManager instanceof DatabaseConditionsManager) {
+ return (DatabaseConditionsManager) conditionsManager;
+ } else {
+ throw new RuntimeException("The conditionsManager points to an object of the wrong type: " + conditionsManager.getClass().getCanonicalName());
+ }
+ }
+
+ /**
+ * This method catches changes to the detector name and run number.
+ * It is actually called every time an lcsim event is created, so it has internal logic
+ * to figure out if the conditions system actually needs to be updated.
*/
@Override
public void setDetector(String detectorName, int runNumber) throws ConditionsNotFoundException {
+
// Detector update.
if (getDetector() == null || !getDetector().equals(detectorName)) {
logger.config("setting new detector " + detectorName);
@@ -150,7 +256,6 @@
// Let the super class do whatever it think it needs to do.
super.setDetector(detectorName, runNumber);
- //super.setConditionsReader(this.baseReader, detectorName);
}
/**
@@ -158,10 +263,6 @@
* @param detectorName the name of the detector
*/
void setup(String detectorName) {
- //if (baseReader instanceof BaseClasspathConditionsReader) {
- // ((BaseClasspathConditionsReader) baseReader).setResourcePath(detectorName);
- // logger.config("set resource path " + detectorName + " on conditions reader");
- //}
if (!isConnected())
openConnection();
else
@@ -234,18 +335,6 @@
logger.config("setting connection resource " + resource);
connectionParameters = ConnectionParameters.fromResource(resource);
}
-
- /**
- * Set externally the base ConditionsReader that will be used to find non-database
- * conditions such as the compact.xml file for the detector.
- * @param reader The base ConditionsReader.
- */
- // FIXME: This doesn't work because the super class has some convoluted logic that always overrides
- // whatever is set manually as the conditions reader.
- //public void setBaseConditionsReader(ConditionsReader baseReader) {
- // logger.config("setting conditions reader to " + baseReader.getClass().getCanonicalName());
- // this.baseReader = baseReader;
- //}
/**
* Get the next collection ID for a database conditions table.
@@ -418,14 +507,6 @@
}
/**
- * Return if the manager was configured e.g. from an XML configuration file.
- * @return true if manager was configured
- */
- public boolean wasConfigured() {
- return wasConfigured;
- }
-
- /**
* Get the current run number.
* @return the current run number
*/
@@ -491,9 +572,6 @@
// Load the converter classes.
loadConverters(config);
-
- // Set configured state to true.
- wasConfigured = true;
}
/**
@@ -501,7 +579,7 @@
* @param in The InputStream.
* @return The XML document.
*/
- private Document createDocument(InputStream in) {
+ private static Document createDocument(InputStream in) {
// Create an XML document from an InputStream.
SAXBuilder builder = new SAXBuilder();
Document config = null;
@@ -519,12 +597,14 @@
*/
private void loadConverters(Document config) {
- // Load the list of converters from the "converters" section of the config
- // document.
- (this.new ConditionsConverterLoader()).load(config.getRootElement().getChild("converters"));
+ if (this.converters != null) {
+ this.converters.clear();
+ }
+
+ // Load the list of converters from the "converters" section of the config document.
+ loadConditionsConverters(config.getRootElement().getChild("converters"));
// Register the list of converters with this manager.
- // FIXME: Should this happen here or when setup is called on the manager?
for (ConditionsConverter converter : converters) {
registerConditionsConverter(converter);
logger.config("registered converter " + converter.getClass().getSimpleName());
@@ -536,168 +616,85 @@
* @param config The XML document.
*/
private void loadTableMetaData(Document config) {
+
+ if (this.tableMetaData != null) {
+ this.tableMetaData.clear();
+ }
+
// Load table meta data from the "tables" section of the config document.
- (this.new TableMetaDataLoader()).load(config.getRootElement().getChild("tables"));
+ loadTableMetaData(config.getRootElement().getChild("tables"));
}
/**
* Setup the database connection from a file specified by Java system property setting.
* This is possible overridden by subsequent API calls to {@link #setConnectionProperties(File)} or
- * {@link #setConnectionResource(String)}, as it is setup in this class's constructor.
+ * {@link #setConnectionResource(String)}, as it is called in the class's constructor.
*/
private void setupConnectionFromSystemProperty() {
String systemPropertiesConnectionPath = (String)System.getProperties().get(connectionProperty);
if (systemPropertiesConnectionPath != null) {
File f = new File(systemPropertiesConnectionPath);
if (!f.exists())
- throw new RuntimeException("Connection properties specified from system property does not exist!");
+ throw new RuntimeException("Connection properties specified from system property does not exist.");
this.setConnectionProperties(f);
}
}
-
- /**
- * Open the database connection.
- */
- public void openConnection() {
- if (connectionParameters == null)
- throw new RuntimeException("The connection parameters were not configured.");
- connection = connectionParameters.createConnection();
- logger.config("created connection " + connectionParameters.getConnectionString());
- isConnected = true;
- }
-
- /**
- * Close the database connection.
- */
- public void closeConnection() {
- logger.config("closing connection");
- if (connection != null) {
- try {
- if (!connection.isClosed()) {
- connection.close();
- logger.config("connection closed");
- } else {
- logger.config("connection already closed");
- }
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- }
- connection = null;
- connectionParameters = null;
- }
-
- @Override
- public void finalize() {
- if (isConnected())
- closeConnection();
- }
-
- /**
- * Get multiple <code>ConditionsObjectCollection</code> objects that may have overlapping time validity information.
- * @param conditionsKey The conditions key.
- * @return The <code>ConditionsSeries</code> containing the matching <code>ConditionsObjectCollection</code>.
- */
- public <CollectionType extends ConditionsObjectCollection> ConditionsSeries<CollectionType> getConditionsSeries(String conditionsKey) {
- return conditionsSeriesConverter.createSeries(conditionsKey);
- }
/**
- * Get a given collection of the given type from the conditions database.
- *
- * @param type Class type
- * @return A collection of objects of the given type from the conditions database
+ * This method expects an XML element containing child "table" elements.
+ * @param element
*/
- public <CollectionType extends ConditionsObjectCollection> CollectionType getCollection(Class<CollectionType> type){
-
- // Get the table name from the database configuration
- TableMetaData metaData = this.findTableMetaData(type);
- if(metaData == null)
- throw new RuntimeException("Table name data for condition of type " + type.getSimpleName() + " was not found.");
- String tableName = metaData.getTableName();
-
- // FIXME: This should be changed to catch a conditions record not found exception instead of
- // a runtime exception.
- CollectionType conditionsCollection = this.getCachedConditions(type, tableName).getCachedData();
- return conditionsCollection;
+ @SuppressWarnings("unchecked")
+ void loadTableMetaData(Element element) {
+
+ tableMetaData = new ArrayList<TableMetaData>();
+
+ for (Iterator<?> iterator = element.getChildren("table").iterator(); iterator.hasNext();) {
+ Element tableElement = (Element) iterator.next();
+ String tableName = tableElement.getAttributeValue("name");
+ String key = tableElement.getAttributeValue("key");
+
+ Element classesElement = tableElement.getChild("classes");
+ Element classElement = classesElement.getChild("object");
+ Element collectionElement = classesElement.getChild("collection");
+
+ String className = classElement.getAttributeValue("class");
+ String collectionName = collectionElement.getAttributeValue("class");
+
+ Class<? extends ConditionsObject> objectClass;
+ Class<?> rawObjectClass;
+ try {
+ rawObjectClass = Class.forName(className);
+ if (!ConditionsObject.class.isAssignableFrom(rawObjectClass)) {
+ throw new RuntimeException("The class " + rawObjectClass.getSimpleName() + " does not extend ConditionsObject.");
+ }
+ objectClass = (Class<? extends ConditionsObject>) rawObjectClass;
+ } catch (ClassNotFoundException e) {
+ throw new RuntimeException(e);
+ }
+
+ Class<? extends ConditionsObjectCollection<?>> collectionClass;
+ Class<?> rawCollectionClass;
+ try {
+ rawCollectionClass = Class.forName(collectionName);
+ if (!ConditionsObjectCollection.class.isAssignableFrom(rawCollectionClass))
+ throw new RuntimeException("The class " + rawCollectionClass.getSimpleName() + " does not extend ConditionsObjectCollection.");
+ collectionClass = (Class<? extends ConditionsObjectCollection<?>>) rawCollectionClass;
+ } catch (ClassNotFoundException e) {
+ throw new RuntimeException(e);
+ }
+
+ TableMetaData tableData = new TableMetaData(key, tableName, objectClass, collectionClass);
+ Element fieldsElement = tableElement.getChild("fields");
+ for (Iterator<?> fieldsIterator = fieldsElement.getChildren("field").iterator(); fieldsIterator.hasNext();) {
+ Element fieldElement = (Element) fieldsIterator.next();
+ String fieldName = fieldElement.getAttributeValue("name");
+ tableData.addField(fieldName);
+ }
+
+ tableMetaData.add(tableData);
+ }
}
-
- /**
- * Simple utility method to cast the generic <code>ConditionsManager</code> to this class.
- * @param conditionsManager The <code>ConditionsManager</code>.
- * @return The <code>DatabaseConditionsManager</code> object.
- */
- public static DatabaseConditionsManager castFrom(ConditionsManager conditionsManager) {
- if (conditionsManager instanceof DatabaseConditionsManager) {
- return (DatabaseConditionsManager) conditionsManager;
- } else {
- throw new RuntimeException("The conditionsManager points to an object of the wrong type: " + conditionsManager.getClass().getCanonicalName());
- }
- }
-
- /**
- * This class loads an XML configuration of conditions table meta data.
- *
- * @author Jeremy McCormick <[log in to unmask]>
- */
- class TableMetaDataLoader {
-
- /**
- * This method expects an XML element containing child "table" elements.
- * @param element
- */
- @SuppressWarnings("unchecked")
- void load(Element element) {
-
- tableMetaData = new ArrayList<TableMetaData>();
-
- for (Iterator<?> iterator = element.getChildren("table").iterator(); iterator.hasNext();) {
- Element tableElement = (Element) iterator.next();
- String tableName = tableElement.getAttributeValue("name");
- String key = tableElement.getAttributeValue("key");
-
- Element classesElement = tableElement.getChild("classes");
- Element classElement = classesElement.getChild("object");
- Element collectionElement = classesElement.getChild("collection");
-
- String className = classElement.getAttributeValue("class");
- String collectionName = collectionElement.getAttributeValue("class");
-
- Class<? extends ConditionsObject> objectClass;
- Class<?> rawObjectClass;
- try {
- rawObjectClass = Class.forName(className);
- if (!ConditionsObject.class.isAssignableFrom(rawObjectClass)) {
- throw new RuntimeException("The class " + rawObjectClass.getSimpleName() + " does not extend ConditionsObject.");
- }
- objectClass = (Class<? extends ConditionsObject>) rawObjectClass;
- } catch (ClassNotFoundException e) {
- throw new RuntimeException(e);
- }
-
- Class<? extends ConditionsObjectCollection<?>> collectionClass;
- Class<?> rawCollectionClass;
- try {
- rawCollectionClass = Class.forName(collectionName);
- if (!ConditionsObjectCollection.class.isAssignableFrom(rawCollectionClass))
- throw new RuntimeException("The class " + rawCollectionClass.getSimpleName() + " does not extend ConditionsObjectCollection.");
- collectionClass = (Class<? extends ConditionsObjectCollection<?>>) rawCollectionClass;
- } catch (ClassNotFoundException e) {
- throw new RuntimeException(e);
- }
-
- TableMetaData tableData = new TableMetaData(key, tableName, objectClass, collectionClass);
- Element fieldsElement = tableElement.getChild("fields");
- for (Iterator<?> fieldsIterator = fieldsElement.getChildren("field").iterator(); fieldsIterator.hasNext();) {
- Element fieldElement = (Element) fieldsIterator.next();
- String fieldName = fieldElement.getAttributeValue("name");
- tableData.addField(fieldName);
- }
-
- tableMetaData.add(tableData);
- }
- }
- }
/**
* This class reads in an XML configuration specifying a list of converter classes,
@@ -705,28 +702,24 @@
*
* @author Jeremy McCormick <[log in to unmask]>
*/
- class ConditionsConverterLoader {
-
- void load(Element element) {
- converters = new ArrayList<ConditionsConverter>();
- for (Iterator iterator = element.getChildren("converter").iterator(); iterator.hasNext();) {
- Element converterElement = (Element) iterator.next();
- try {
- Class converterClass = Class.forName(converterElement.getAttributeValue("class"));
- if (ConditionsConverter.class.isAssignableFrom(converterClass)) {
- try {
- converters.add((ConditionsConverter) converterClass.newInstance());
- } catch (InstantiationException | IllegalAccessException e) {
- throw new RuntimeException(e);
- }
- } else {
- throw new RuntimeException("The converter class " + converterClass.getSimpleName() + " does not extend the correct base type.");
- }
- } catch (ClassNotFoundException e) {
- throw new RuntimeException(e);
- }
- }
- }
- }
-
+ private void loadConditionsConverters(Element element) {
+ converters = new ArrayList<ConditionsConverter>();
+ for (Iterator iterator = element.getChildren("converter").iterator(); iterator.hasNext();) {
+ Element converterElement = (Element) iterator.next();
+ try {
+ Class converterClass = Class.forName(converterElement.getAttributeValue("class"));
+ if (ConditionsConverter.class.isAssignableFrom(converterClass)) {
+ try {
+ converters.add((ConditionsConverter) converterClass.newInstance());
+ } catch (InstantiationException | IllegalAccessException e) {
+ throw new RuntimeException(e);
+ }
+ } else {
+ throw new RuntimeException("The converter class " + converterClass.getSimpleName() + " does not extend the correct base type.");
+ }
+ } catch (ClassNotFoundException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
}
Modified: java/trunk/conditions/src/main/java/org/hps/conditions/TestRunConditionsDriver.java
=============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/TestRunConditionsDriver.java (original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/TestRunConditionsDriver.java Mon Nov 10 00:01:21 2014
@@ -18,21 +18,15 @@
*/
public class TestRunConditionsDriver extends AbstractConditionsDriver {
- // Default conditions system XML config, which is for the Test Run 2012 database.
- static final String TEST_RUN_CONFIG = "/org/hps/conditions/config/conditions_database_testrun_2012.xml";
-
- // Default database connection parameters, which points to the SLAC development database.
- static final String TEST_RUN_CONNECTION = "/org/hps/conditions/config/conditions_dev.properties";
-
// Default constructor used to setup the database connection
- public TestRunConditionsDriver(){
+ public TestRunConditionsDriver() {
if (ConditionsManager.defaultInstance() instanceof DatabaseConditionsManager) {
- System.out.println(this.getName()+": Found existing DatabaseConditionsManager");
- manager = (DatabaseConditionsManager) ConditionsManager.defaultInstance();
+ //System.out.println(this.getName()+": Found existing DatabaseConditionsManager");
+ //manager = (DatabaseConditionsManager) ConditionsManager.defaultInstance();
+ throw new RuntimeException("ConditionsManager was already setup.");
} else {
manager = new DatabaseConditionsManager();
- manager.setConnectionResource(TEST_RUN_CONNECTION);
- manager.configure(TEST_RUN_CONFIG);
+ manager.configure("/org/hps/conditions/config/conditions_database_testrun_2012.xml");
manager.register();
}
}
Modified: java/trunk/conditions/src/test/java/org/hps/conditions/ConditionsObjectTest.java
=============================================================================
--- java/trunk/conditions/src/test/java/org/hps/conditions/ConditionsObjectTest.java (original)
+++ java/trunk/conditions/src/test/java/org/hps/conditions/ConditionsObjectTest.java Mon Nov 10 00:01:21 2014
@@ -2,7 +2,6 @@
import junit.framework.TestCase;
-import org.hps.conditions.config.TestRunReadOnlyConfiguration;
import org.hps.conditions.svt.SvtGain;
import org.hps.conditions.svt.SvtGain.SvtGainCollection;
@@ -11,19 +10,12 @@
* {@link org.hps.conditions.svt.SvtGain} type.
*
* @author Jeremy McCormick <[log in to unmask]>
- *
*/
-// TODO: Add test of collection operations similar to the one for individual objects.
public class ConditionsObjectTest extends TestCase {
- DatabaseConditionsManager conditionsManager;
-
- public void setUp() {
- new TestRunReadOnlyConfiguration(true);
- conditionsManager = DatabaseConditionsManager.getInstance();
- }
-
public void testBasicOperations() throws ConditionsObjectException {
+
+ DatabaseConditionsManager conditionsManager = DatabaseConditionsManager.getInstance();
// Create a new collection, setting its table meta data and collection ID.
TableMetaData tableMetaData = conditionsManager.findTableMetaData(TableConstants.SVT_GAINS);
Modified: java/trunk/conditions/src/test/java/org/hps/conditions/ecal/EcalConditionsConverterTest.java
=============================================================================
--- java/trunk/conditions/src/test/java/org/hps/conditions/ecal/EcalConditionsConverterTest.java (original)
+++ java/trunk/conditions/src/test/java/org/hps/conditions/ecal/EcalConditionsConverterTest.java Mon Nov 10 00:01:21 2014
@@ -3,7 +3,7 @@
import junit.framework.TestCase;
import org.hps.conditions.DatabaseConditionsManager;
-import org.hps.conditions.config.DevReadOnlyConfiguration;
+import org.lcsim.conditions.ConditionsManager.ConditionsNotFoundException;
/**
* Tests that a {@link EcalConditions} objects loads without errors.
@@ -14,8 +14,12 @@
DatabaseConditionsManager conditionsManager;
public void setUp() {
- new DevReadOnlyConfiguration().setup().load("HPS-Proposal2014-v7-2pt2", 0);
conditionsManager = DatabaseConditionsManager.getInstance();
+ try {
+ conditionsManager.setDetector("HPS-Proposal2014-v7-2pt2", 0);
+ } catch (ConditionsNotFoundException e) {
+ throw new RuntimeException(e);
+ }
}
public void test() {
Modified: java/trunk/conditions/src/test/java/org/hps/conditions/ecal/EcalDetectorSetupTest.java
=============================================================================
--- java/trunk/conditions/src/test/java/org/hps/conditions/ecal/EcalDetectorSetupTest.java (original)
+++ java/trunk/conditions/src/test/java/org/hps/conditions/ecal/EcalDetectorSetupTest.java Mon Nov 10 00:01:21 2014
@@ -5,13 +5,13 @@
import junit.framework.TestCase;
import org.hps.conditions.DatabaseConditionsManager;
-import org.hps.conditions.config.TestRunReadOnlyConfiguration;
import org.lcsim.detector.converter.compact.EcalCrystal;
import org.lcsim.geometry.Detector;
/**
- * This test loads ECal conditions data onto the detector and checks some of the results
+ * This test loads ECal conditions data onto a Test Run detector and checks some of the results
* for basic validity.
+ *
* @author Jeremy McCormick <[log in to unmask]>
*/
public class EcalDetectorSetupTest extends TestCase {
@@ -33,19 +33,17 @@
// The total number of crystals that should be processed.
private static final int CRYSTAL_COUNT = 442;
- public void setUp() {
- new TestRunReadOnlyConfiguration(true);
- }
-
/**
* Load SVT conditions data onto the detector and perform basic checks afterwards.
*/
- public void testLoad() {
+ public void testLoad() throws Exception {
DatabaseConditionsManager conditionsManager = DatabaseConditionsManager.getInstance();
+ conditionsManager.configure("/org/hps/conditions/config/conditions_database_testrun_2012.xml");
+ conditionsManager.setDetector("HPS-TestRun-v5", 1351);
// Get the detector.
- Detector detector = conditionsManager.getCachedConditions(Detector.class, "compact.xml").getCachedData();
+ Detector detector = conditionsManager.getDetectorObject();
// Get conditions.
EcalConditions conditions = conditionsManager.getCachedConditions(EcalConditions.class, "ecal_conditions").getCachedData();
Modified: java/trunk/conditions/src/test/java/org/hps/conditions/svt/SvtConfigurationTest.java
=============================================================================
--- java/trunk/conditions/src/test/java/org/hps/conditions/svt/SvtConfigurationTest.java (original)
+++ java/trunk/conditions/src/test/java/org/hps/conditions/svt/SvtConfigurationTest.java Mon Nov 10 00:01:21 2014
@@ -6,7 +6,6 @@
import org.hps.conditions.DatabaseConditionsManager;
import org.hps.conditions.TableConstants;
-import org.hps.conditions.config.ResourceConfiguration;
import org.hps.conditions.svt.SvtConfiguration.SvtConfigurationCollection;
import org.jdom.Document;
import org.jdom.JDOMException;
@@ -15,15 +14,8 @@
DatabaseConditionsManager manager;
- public void setUp() {
- new ResourceConfiguration(
- "/org/hps/conditions/config/conditions_dev.xml",
- "/org/hps/conditions/config/conditions_dev_local.properties").setup();
- manager = DatabaseConditionsManager.getInstance();
- manager.openConnection();
- }
-
public void testSvtConfiguration() {
+ DatabaseConditionsManager manager = DatabaseConditionsManager.getInstance();
SvtConfigurationCollection collection = manager.getCachedConditions(SvtConfigurationCollection.class, TableConstants.SVT_CONFIGURATIONS).getCachedData();
for (SvtConfiguration config : collection) {
Modified: java/trunk/conditions/src/test/java/org/hps/conditions/svt/SvtDaqMappingTest.java
=============================================================================
--- java/trunk/conditions/src/test/java/org/hps/conditions/svt/SvtDaqMappingTest.java (original)
+++ java/trunk/conditions/src/test/java/org/hps/conditions/svt/SvtDaqMappingTest.java Mon Nov 10 00:01:21 2014
@@ -4,21 +4,15 @@
import org.hps.conditions.DatabaseConditionsManager;
import org.hps.conditions.TableMetaData;
-import org.hps.conditions.config.DevReadOnlyConfiguration;
import org.hps.conditions.svt.SvtDaqMapping.SvtDaqMappingCollection;
-
/**
* This test checks if the SVT DAQ map was loaded with reasonable values and
* is being read correctly from the conditions database.
*
* @author Omar Moreno <[log in to unmask]>
- * @version $Id$
*/
public class SvtDaqMappingTest extends TestCase {
-
- TableMetaData metaData = null;
- DatabaseConditionsManager conditionsManager = null;
//--- Constants ---//
//-----------------//
@@ -31,18 +25,13 @@
//-----------------//
- DevReadOnlyConfiguration dbConfig = new DevReadOnlyConfiguration();
-
- public void setUp(){
- new DevReadOnlyConfiguration().setup().load("HPS-Proposal2014-v7-2pt2", 0);
- conditionsManager = DatabaseConditionsManager.getInstance();
+
+ public void test() throws Exception {
+ DatabaseConditionsManager conditionsManager = new DatabaseConditionsManager();
+ conditionsManager.setDetector("HPS-Proposal2014-v7-2pt2", 0);
- }
-
- public void test(){
-
- metaData = conditionsManager.findTableMetaData(SvtDaqMappingCollection.class);
+ TableMetaData metaData = conditionsManager.findTableMetaData(SvtDaqMappingCollection.class);
SvtDaqMappingCollection daqMappingCollection
= conditionsManager.getConditionsData(SvtDaqMappingCollection.class, metaData.getTableName());
@@ -65,9 +54,7 @@
}
- private void printDebug(String debugMessage){
+ private void printDebug(String debugMessage) {
System.out.println(this.getClass().getSimpleName() + ":: " + debugMessage);
- }
-
-
+ }
}
Modified: java/trunk/conditions/src/test/java/org/hps/conditions/svt/SvtDetectorSetupTest.java
=============================================================================
--- java/trunk/conditions/src/test/java/org/hps/conditions/svt/SvtDetectorSetupTest.java (original)
+++ java/trunk/conditions/src/test/java/org/hps/conditions/svt/SvtDetectorSetupTest.java Mon Nov 10 00:01:21 2014
@@ -5,7 +5,6 @@
import junit.framework.TestCase;
import org.hps.conditions.DatabaseConditionsManager;
-import org.hps.conditions.config.DevReadOnlyConfiguration;
import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.geometry.Detector;
@@ -35,16 +34,13 @@
// SVT Subdetector name
public static final String SVT_SUBDETECTOR_NAME = "Tracker";
- public void setUp(){
- new DevReadOnlyConfiguration().setup().load("HPS-Proposal2014-v7-2pt2", 0);
- }
-
/**
* Load SVT conditions data onto the detector and perform basic checks afterwards.
*/
- public void test() {
+ public void test() throws Exception {
DatabaseConditionsManager conditionsManager = DatabaseConditionsManager.getInstance();
+ conditionsManager.setDetector("HPS-Proposal2014-v7-2pt2", 0);
// Get the detector.
Detector detector = conditionsManager.getCachedConditions(Detector.class, "compact.xml").getCachedData();
Modified: java/trunk/conditions/src/test/java/org/hps/conditions/svt/TestRunSvtConditionsConverterTest.java
=============================================================================
--- java/trunk/conditions/src/test/java/org/hps/conditions/svt/TestRunSvtConditionsConverterTest.java (original)
+++ java/trunk/conditions/src/test/java/org/hps/conditions/svt/TestRunSvtConditionsConverterTest.java Mon Nov 10 00:01:21 2014
@@ -3,18 +3,14 @@
import junit.framework.TestCase;
import org.hps.conditions.DatabaseConditionsManager;
-import org.hps.conditions.config.TestRunReadOnlyConfiguration;
public class TestRunSvtConditionsConverterTest extends TestCase {
-
- DatabaseConditionsManager conditionsManager;
-
- public void setUp(){
- new TestRunReadOnlyConfiguration().setup().load("HPS-TestRun-v5", 1351);
- conditionsManager = DatabaseConditionsManager.getInstance();
- }
-
- public void test(){
+
+ public void test() throws Exception {
+ DatabaseConditionsManager conditionsManager = DatabaseConditionsManager.getInstance();
+ conditionsManager.configure("/org/hps/conditions/config/conditions_database_testrun_2012.xml");
+ conditionsManager.setDetector("HPS-TestRun-v5", 1351);
+
TestRunSvtConditions svtConditions = conditionsManager.getCachedConditions(TestRunSvtConditions.class, "svt_conditions").getCachedData();
assertNotNull(svtConditions);
System.out.println("[ " + this.getClass().getSimpleName() + "]: Printing test run SVT conditions.");
Modified: java/trunk/conditions/src/test/java/org/hps/conditions/svt/TestRunSvtDaqMappingTest.java
=============================================================================
--- java/trunk/conditions/src/test/java/org/hps/conditions/svt/TestRunSvtDaqMappingTest.java (original)
+++ java/trunk/conditions/src/test/java/org/hps/conditions/svt/TestRunSvtDaqMappingTest.java Mon Nov 10 00:01:21 2014
@@ -4,7 +4,6 @@
import org.hps.conditions.DatabaseConditionsManager;
import org.hps.conditions.TableMetaData;
-import org.hps.conditions.config.TestRunReadOnlyConfiguration;
import org.hps.conditions.svt.TestRunSvtDaqMapping.TestRunSvtDaqMappingCollection;
/**
@@ -16,7 +15,6 @@
public class TestRunSvtDaqMappingTest extends TestCase {
TableMetaData metaData = null;
- DatabaseConditionsManager conditionsManager = null;
//--- Constants ---//
//-----------------//
@@ -32,20 +30,16 @@
// Min and max layer number values
public static final int MIN_LAYER_NUMBER = 1;
public static final int MAX_LAYER_NUMBER = 10;
-
-
-
- public void setUp(){
- new TestRunReadOnlyConfiguration().setup().load("HPS-TestRun-v5", 1351);
- conditionsManager = DatabaseConditionsManager.getInstance();
- }
-
- public void test(){
+ public void test() throws Exception {
+
+ DatabaseConditionsManager conditionsManager = DatabaseConditionsManager.getInstance();
+ conditionsManager.configure("/org/hps/conditions/config/conditions_database_testrun_2012.xml");
+ conditionsManager.setDetector("HPS-TestRun-v5", 1351);
+
metaData = conditionsManager.findTableMetaData(TestRunSvtDaqMappingCollection.class);
- TestRunSvtDaqMappingCollection daqMappingCollection
- = conditionsManager.getConditionsData(TestRunSvtDaqMappingCollection.class, metaData.getTableName());
-
+ TestRunSvtDaqMappingCollection daqMappingCollection =
+ conditionsManager.getConditionsData(TestRunSvtDaqMappingCollection.class, metaData.getTableName());
int totalSensors = 0;
this.printDebug("");
@@ -75,7 +69,7 @@
assertTrue(totalSensors == TOTAL_NUMBER_OF_SENSORS);
}
- private void printDebug(String debugMessage){
+ private void printDebug(String debugMessage) {
System.out.println("[ " + this.getClass().getSimpleName() + " ]: " + debugMessage);
}
}
Modified: java/trunk/conditions/src/test/java/org/hps/conditions/svt/TestRunSvtDetectorSetupTest.java
=============================================================================
--- java/trunk/conditions/src/test/java/org/hps/conditions/svt/TestRunSvtDetectorSetupTest.java (original)
+++ java/trunk/conditions/src/test/java/org/hps/conditions/svt/TestRunSvtDetectorSetupTest.java Mon Nov 10 00:01:21 2014
@@ -4,11 +4,9 @@
import junit.framework.TestCase;
+import org.hps.conditions.DatabaseConditionsManager;
import org.lcsim.detector.tracker.silicon.HpsTestRunSiSensor;
import org.lcsim.geometry.Detector;
-
-import org.hps.conditions.DatabaseConditionsManager;
-import org.hps.conditions.config.TestRunReadOnlyConfiguration;
/**
* This test loads {@link TestRunSvtConditions} data onto the detector and then checks that all
@@ -32,17 +30,15 @@
public static final int MAX_CHANNEL_NUMBER = 639;
// SVT Subdetector name
public static final String SVT_SUBDETECTOR_NAME = "Tracker";
-
- public void setUp(){
- new TestRunReadOnlyConfiguration().setup().load("HPS-TestRun-v5", 1351);
- }
-
+
/**
* Load SVT conditions data onto the detector and perform basic checks afterwards.
*/
- public void test() {
+ public void test() throws Exception {
DatabaseConditionsManager conditionsManager = DatabaseConditionsManager.getInstance();
+ conditionsManager.configure("/org/hps/conditions/config/conditions_database_testrun_2012.xml");
+ conditionsManager.setDetector("HPS-TestRun-v5", 1351);
// Get the detector.
Detector detector = conditionsManager.getCachedConditions(Detector.class, "compact.xml").getCachedData();
|