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();