Print

Print


Author: [log in to unmask]
Date: Thu Mar  5 21:04:22 2015
New Revision: 2291

Log:
Remove unnecessary conditions API method.  Minor reorganization of DatabaseConditionsManager code.

Modified:
    java/trunk/conditions/src/main/java/org/hps/conditions/beam/ImportBeamConditionsEngRun.java
    java/trunk/conditions/src/main/java/org/hps/conditions/database/DatabaseConditionsManager.java
    java/trunk/conditions/src/test/java/org/hps/conditions/EngRunConditionsTest.java
    java/trunk/conditions/src/test/java/org/hps/conditions/beam/BeamConditionsTest.java
    java/trunk/conditions/src/test/java/org/hps/conditions/ecal/EcalHardwareConditionsTest.java

Modified: java/trunk/conditions/src/main/java/org/hps/conditions/beam/ImportBeamConditionsEngRun.java
 =============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/beam/ImportBeamConditionsEngRun.java	(original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/beam/ImportBeamConditionsEngRun.java	Thu Mar  5 21:04:22 2015
@@ -81,7 +81,6 @@
         
         DatabaseConditionsManager manager = new DatabaseConditionsManager();
         manager.setLogLevel(Level.ALL);
-        manager.openConnection();
         
         for (Entry<Integer, BeamConditions> entry : beamMap.entrySet()) {
             int run = entry.getKey();

Modified: java/trunk/conditions/src/main/java/org/hps/conditions/database/DatabaseConditionsManager.java
 =============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/database/DatabaseConditionsManager.java	(original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/database/DatabaseConditionsManager.java	Thu Mar  5 21:04:22 2015
@@ -59,7 +59,7 @@
  * @author Jeremy McCormick <[log in to unmask]>
  */
 @SuppressWarnings("rawtypes")
-public class DatabaseConditionsManager extends ConditionsManagerImplementation {
+public final class DatabaseConditionsManager extends ConditionsManagerImplementation {
 
     // Initialize logger.
     protected static Logger logger = LogUtil.create(DatabaseConditionsManager.class.getName(), new DefaultLogFormatter(), Level.INFO);
@@ -243,7 +243,8 @@
      */
     public 
     <ObjectType extends ConditionsObject, CollectionType extends ConditionsObjectCollection<ObjectType>> 
-    ConditionsSeries<ObjectType, CollectionType> getConditionsSeries(Class<CollectionType> collectionType, String tableName) {
+    ConditionsSeries<ObjectType, CollectionType> 
+    getConditionsSeries(Class<CollectionType> collectionType, String tableName) {
         
         TableMetaData metaData = tableRegistry.get(tableName);
         if (metaData == null) {
@@ -257,18 +258,7 @@
         ConditionsSeriesConverter<ObjectType, CollectionType> converter = new ConditionsSeriesConverter(objectType, collectionType);
         return converter.createSeries(tableName);
     }
-            
-    /**
-     * Get conditions data by class and name.
-     * @param type The class of the conditions.
-     * @param name The name of the conditions set.
-     * @return The conditions or null if does not exist.
-     */
-    public <T> T getConditionsData(Class<T> type, String name) {
-        logger.fine("getting conditions " + name + " of type " + type.getSimpleName());
-        return getCachedConditions(type, name).getCachedData();
-    }
-
+                
     /**
      * This method handles changes to the detector name and run number.
      * It is called every time an LCSim event is created, and so it has 
@@ -309,101 +299,6 @@
      */
     public boolean isTestRun() {
         return isTestRun;
-    }
-    
-    /**
-     * Perform all necessary initialization, including setup of the XML
-     * configuration and loading of conditions onto the Detector.
-     */
-    protected void initialize(String detectorName, int runNumber) throws ConditionsNotFoundException {
-        
-        logger.config("initializing with detector " + detectorName + " and run " + runNumber);
-        
-        // Is not configured yet?
-        if (!isConfigured) {
-            if (isTestRun(runNumber)) {
-                // This looks like the Test Run so use the custom configuration for it.
-                setXmlConfig(DatabaseConditionsManager.TEST_RUN_CONFIG);
-            } else if (runNumber > TEST_RUN_MAX_RUN) {
-                // Run numbers greater than max of Test Run assumed to be Eng Run (for now!).
-                setXmlConfig(DatabaseConditionsManager.ENGRUN_CONFIG);
-            } else if (runNumber == 0) {
-                // Use the default configuration because the run number is basically meaningless.
-                setXmlConfig(DatabaseConditionsManager.DEFAULT_CONFIG);
-            }
-        }
-
-        // Register the converters for this initialization.
-        logger.fine("registering converters");
-        registerConverters();
-    
-        // Enable or disable the setup of the SVT detector.
-        logger.fine("enabling SVT setup: " + setupSvtDetector);
-        svtSetup.setEnabled(setupSvtDetector);
-
-        // Open the database connection.
-        openConnection();
-        
-        // Call the super class's setDetector method to construct the detector object and activate conditions listeners.
-        logger.fine("activating default conditions manager");
-        super.setDetector(detectorName, runNumber);
-                        
-        // Should all conditions sets be cached?
-        if (cacheAllConditions) {
-            // Cache the conditions sets of all registered converters.
-            logger.fine("caching all conditions sets ...");
-            cacheConditionsSets();
-        }
-                
-        if (closeConnectionAfterInitialize) {
-            logger.fine("closing connection after initialization");
-            // Close the connection. 
-            closeConnection();
-        }
-        
-        // Should the conditions system be frozen now?
-        if (freezeAfterInitialize) {
-            // Freeze the conditions system so subsequent updates will be ignored.
-            freeze();
-            logger.config("system was frozen after initialization");
-        }
-        
-        isInitialized = true;
-        
-        logger.info("conditions system initialized successfully");
-        
-        // Flush logger after initialization.
-        logger.getHandlers()[0].flush();
-    }
-
-    /**
-     * Register the conditions converters with the manager.
-     */
-    private void registerConverters() {
-        if (svtConverter != null) {
-            // Remove old SVT converter.
-            removeConditionsConverter(svtConverter);
-        }
-        
-        if (ecalConverter != null) {
-            // Remove old ECAL converter.
-            registerConditionsConverter(ecalConverter);
-        }
-        
-        // Is configured for TestRun?
-        if (isTestRun()) {
-            // Load Test Run specific converters.
-            svtConverter = new TestRunSvtConditionsConverter();
-            ecalConverter = new TestRunEcalConditionsConverter();
-            logger.config("registering Test Run conditions converters");
-        } else {
-            // Load the default converters.
-            svtConverter = new SvtConditionsConverter();
-            ecalConverter = new EcalConditionsConverter();
-            logger.config("registering default conditions converters");
-        }
-        registerConditionsConverter(svtConverter);
-        registerConditionsConverter(ecalConverter);
     }
     
     /**
@@ -589,31 +484,7 @@
         logger.fine("found " + foundConditionsRecords.size() + " conditions records matching tag " + tag);
         return foundConditionsRecords;
     }
-    
-    /**
-     * True if the conditions record matches the current tag.
-     * @param record The conditions record.
-     * @return True if conditions record matches the currently used tag.
-     */
-    boolean matchesTag(ConditionsRecord record) {
-        if (this.tag == null) {
-            // If there is no tag set then all records pass.
-            return true;
-        }
-        String recordTag = record.getTag();
-        if (recordTag == null) {
-            // If there is a tag set but the record has no tag, it is rejected.
-            return false;
-        }
-        if (tag.equals(recordTag)) {
-            // If the tags match, the record is accepted.
-            return true;
-        } else {
-            // Tags do not match so record is rejected.
-            return false;
-        }
-    }
-    
+           
     /**
      * True if there is a conditions record with the given name.
      * @param name The conditions name.
@@ -627,7 +498,7 @@
      * Get a list of all the ConditionsRecord objects.
      * @return The list of all the ConditionsRecord objects.
      */
-    // FIXME: This should use a cache created in initialize rather than do a find every time.
+    // FIXME: This should use a cache that is created during initialization, rather than look these up every time.
     public ConditionsRecordCollection getConditionsRecords() {
         logger.finer("getting conditions records ...");
         ConditionsRecordCollection conditionsRecords = new ConditionsRecordCollection();
@@ -690,31 +561,7 @@
     public boolean isFrozen() {
         return isFrozen;
     }
-    
-    /**
-     * Set the name of the ECAL sub-detector.
-     * @param ecalName The name of the ECAL.
-     */
-    protected void setEcalName(String ecalName) {
-        if (ecalName == null) {
-            throw new IllegalArgumentException("The ecalName is null");
-        }
-        this.ecalName = ecalName;
-        logger.info("ECAL name set to " + ecalName);
-    }
-    
-    /**
-     * Set the name of the SVT sub-detector.
-     * @param svtName The name of the SVT.
-     */
-    protected void setSvtName(String svtName) {
-        if (svtName == null) {
-            throw new IllegalArgumentException("The svtName is null");
-        }
-        this.svtName = svtName;
-        logger.info("SVT name set to " + ecalName);
-    }
-    
+            
     /**
      * Set a tag used to filter ConditionsRecords.
      * @param tag The tag value used to filter ConditionsRecords.
@@ -730,7 +577,8 @@
      * @throws SQLException If there is a database error.
      * @throws ConditionsObjectException If there is a problem with the ConditionsObjects.
      */
-    public <ObjectType extends ConditionsObject> void insertCollection(ConditionsObjectCollection<ObjectType> collection) throws SQLException, ConditionsObjectException {
+    public <ObjectType extends ConditionsObject> 
+    void insertCollection(ConditionsObjectCollection<ObjectType> collection) throws SQLException, ConditionsObjectException {
                 
         if (collection == null) {
             throw new IllegalArgumentException("The collection is null.");
@@ -814,8 +662,6 @@
      * @return The Logger for this class.
      */
     public static Logger getLogger() {
-        //System.out.println("DatabaseConditionsManager.getLogger called from");
-        //new RuntimeException().printStackTrace();
         return logger;
     }
     
@@ -858,7 +704,150 @@
      * Private methods below here. *
      *******************************
      */
-                          
+    
+    /**
+     * Perform all necessary initialization, including setup of the XML
+     * configuration and loading of conditions onto the Detector.
+     */
+    private void initialize(String detectorName, int runNumber) throws ConditionsNotFoundException {
+        
+        logger.config("initializing with detector " + detectorName + " and run " + runNumber);
+        
+        // Is not configured yet?
+        if (!isConfigured) {
+            if (isTestRun(runNumber)) {
+                // This looks like the Test Run so use the custom configuration for it.
+                setXmlConfig(DatabaseConditionsManager.TEST_RUN_CONFIG);
+            } else if (runNumber > TEST_RUN_MAX_RUN) {
+                // Run numbers greater than max of Test Run assumed to be Eng Run (for now!).
+                setXmlConfig(DatabaseConditionsManager.ENGRUN_CONFIG);
+            } else if (runNumber == 0) {
+                // Use the default configuration because the run number is basically meaningless.
+                setXmlConfig(DatabaseConditionsManager.DEFAULT_CONFIG);
+            }
+        }
+
+        // Register the converters for this initialization.
+        logger.fine("registering converters");
+        registerConverters();
+    
+        // Enable or disable the setup of the SVT detector.
+        logger.fine("enabling SVT setup: " + setupSvtDetector);
+        svtSetup.setEnabled(setupSvtDetector);
+
+        // Open the database connection.
+        openConnection();
+        
+        // Call the super class's setDetector method to construct the detector object and activate conditions listeners.
+        logger.fine("activating default conditions manager");
+        super.setDetector(detectorName, runNumber);
+                        
+        // Should all conditions sets be cached?
+        if (cacheAllConditions) {
+            // Cache the conditions sets of all registered converters.
+            logger.fine("caching all conditions sets ...");
+            cacheConditionsSets();
+        }
+                
+        if (closeConnectionAfterInitialize) {
+            logger.fine("closing connection after initialization");
+            // Close the connection. 
+            closeConnection();
+        }
+        
+        // Should the conditions system be frozen now?
+        if (freezeAfterInitialize) {
+            // Freeze the conditions system so subsequent updates will be ignored.
+            freeze();
+            logger.config("system was frozen after initialization");
+        }
+        
+        isInitialized = true;
+        
+        logger.info("conditions system initialized successfully");
+        
+        // Flush logger after initialization.
+        logger.getHandlers()[0].flush();
+    }
+
+    /**
+     * Register the conditions converters with the manager.
+     */
+    private void registerConverters() {
+        if (svtConverter != null) {
+            // Remove old SVT converter.
+            removeConditionsConverter(svtConverter);
+        }
+        
+        if (ecalConverter != null) {
+            // Remove old ECAL converter.
+            registerConditionsConverter(ecalConverter);
+        }
+        
+        // Is configured for TestRun?
+        if (isTestRun()) {
+            // Load Test Run specific converters.
+            svtConverter = new TestRunSvtConditionsConverter();
+            ecalConverter = new TestRunEcalConditionsConverter();
+            logger.config("registering Test Run conditions converters");
+        } else {
+            // Load the default converters.
+            svtConverter = new SvtConditionsConverter();
+            ecalConverter = new EcalConditionsConverter();
+            logger.config("registering default conditions converters");
+        }
+        registerConditionsConverter(svtConverter);
+        registerConditionsConverter(ecalConverter);
+    }
+    
+    /**
+     * Set the name of the ECAL sub-detector.
+     * @param ecalName The name of the ECAL.
+     */
+    private void setEcalName(String ecalName) {
+        if (ecalName == null) {
+            throw new IllegalArgumentException("The ecalName is null");
+        }
+        this.ecalName = ecalName;
+        logger.info("ECAL name set to " + ecalName);
+    }
+    
+    /**
+     * Set the name of the SVT sub-detector.
+     * @param svtName The name of the SVT.
+     */
+    private void setSvtName(String svtName) {
+        if (svtName == null) {
+            throw new IllegalArgumentException("The svtName is null");
+        }
+        this.svtName = svtName;
+        logger.info("SVT name set to " + ecalName);
+    }
+    
+    /**
+     * True if the conditions record matches the current tag.
+     * @param record The conditions record.
+     * @return True if conditions record matches the currently used tag.
+     */
+    private boolean matchesTag(ConditionsRecord record) {
+        if (this.tag == null) {
+            // If there is no tag set then all records pass.
+            return true;
+        }
+        String recordTag = record.getTag();
+        if (recordTag == null) {
+            // If there is a tag set but the record has no tag, it is rejected.
+            return false;
+        }
+        if (tag.equals(recordTag)) {
+            // If the tags match, the record is accepted.
+            return true;
+        } else {
+            // Tags do not match so record is rejected.
+            return false;
+        }
+    }
+                              
     /**
      * Cache conditions sets for all known tables.
      */
@@ -919,7 +908,6 @@
      * Load configuration information from an XML document.
      * @param document The XML document.
      */
-    // TODO: Add detectorName and runNumber settings.
     private void loadConfiguration(Document document) {
         
         Element node = document.getRootElement().getChild("configuration");

Modified: java/trunk/conditions/src/test/java/org/hps/conditions/EngRunConditionsTest.java
 =============================================================================
--- java/trunk/conditions/src/test/java/org/hps/conditions/EngRunConditionsTest.java	(original)
+++ java/trunk/conditions/src/test/java/org/hps/conditions/EngRunConditionsTest.java	Thu Mar  5 21:04:22 2015
@@ -107,7 +107,7 @@
             //assertEquals("Wrong LEDs collection ID.", 2, timeShifts.getConditionsRecord().getCollectionId());
             //checkRunNumbers(timeShifts);
             
-            ecalConditions = conditionsManager.getConditionsData(EcalConditions.class, "ecal_conditions");
+            ecalConditions = conditionsManager.getCachedConditions(EcalConditions.class, "ecal_conditions").getCachedData();
             Set<EcalChannelConstants> channelConstants = new LinkedHashSet<EcalChannelConstants>();
             for (EcalChannel channel : ecalConditions.getChannelCollection().sortedByChannelId()) {
                 channelConstants.add(ecalConditions.getChannelConstants(channel));

Modified: java/trunk/conditions/src/test/java/org/hps/conditions/beam/BeamConditionsTest.java
 =============================================================================
--- java/trunk/conditions/src/test/java/org/hps/conditions/beam/BeamConditionsTest.java	(original)
+++ java/trunk/conditions/src/test/java/org/hps/conditions/beam/BeamConditionsTest.java	Thu Mar  5 21:04:22 2015
@@ -56,7 +56,7 @@
                 throw new RuntimeException(e);
             }
             BeamConditionsCollection beamCollection = 
-                    manager.getConditionsData(BeamConditionsCollection.class, "beam");
+                    manager.getCachedConditions(BeamConditionsCollection.class, "beam").getCachedData();
             BeamConditions beam = beamCollection.get(0);
             System.out.print(run + " ");
             System.out.print(beam.getRowId() + " ");

Modified: java/trunk/conditions/src/test/java/org/hps/conditions/ecal/EcalHardwareConditionsTest.java
 =============================================================================
--- java/trunk/conditions/src/test/java/org/hps/conditions/ecal/EcalHardwareConditionsTest.java	(original)
+++ java/trunk/conditions/src/test/java/org/hps/conditions/ecal/EcalHardwareConditionsTest.java	Thu Mar  5 21:04:22 2015
@@ -31,14 +31,14 @@
         manager.setLogLevel(Level.ALL);
         
         // Read hardware calibrations.
-        EcalCalibrationCollection calibrations = manager.getConditionsData(EcalCalibrationCollection.class, CALIBRATIONS_TABLE);
+        EcalCalibrationCollection calibrations = manager.getCachedConditions(EcalCalibrationCollection.class, CALIBRATIONS_TABLE).getCachedData();
         assertEquals("Wrong name in conditions record.", CALIBRATIONS_TABLE, calibrations.getConditionsRecord().getTableName());
         assertEquals("Wrong table name in conditions record.", CALIBRATIONS_TABLE, calibrations.getConditionsRecord().getTableName());
         assertEquals("Wrong number of records.", RECORD_COUNT, calibrations.size());
         System.out.println("successfully read " + calibrations.size() + " gain records from " + CALIBRATIONS_TABLE);
         
         // Read hardware gains.
-        EcalGainCollection gains = manager.getConditionsData(EcalGainCollection.class, GAINS_TABLE);
+        EcalGainCollection gains = manager.getCachedConditions(EcalGainCollection.class, GAINS_TABLE).getCachedData();
         assertEquals("Wrong name in conditions record.", GAINS_TABLE, gains.getConditionsRecord().getTableName());
         assertEquals("Wrong table name in conditions record.", GAINS_TABLE, gains.getConditionsRecord().getTableName());
         assertEquals("Wrong number of records.", RECORD_COUNT, gains.size());