Print

Print


Author: omoreno
Date: Mon Oct 27 11:20:27 2014
New Revision: 1309

Log:
Add a generic method that allows obtaining any type of conditions collection from the conditions database.  Remove the getter methods that were being used before. 

Modified:
    java/branches/hps_java_trunk_HPSJAVA-255/conditions/src/main/java/org/hps/conditions/svt/AbstractSvtConditionsConverter.java

Modified: java/branches/hps_java_trunk_HPSJAVA-255/conditions/src/main/java/org/hps/conditions/svt/AbstractSvtConditionsConverter.java
 =============================================================================
--- java/branches/hps_java_trunk_HPSJAVA-255/conditions/src/main/java/org/hps/conditions/svt/AbstractSvtConditionsConverter.java	(original)
+++ java/branches/hps_java_trunk_HPSJAVA-255/conditions/src/main/java/org/hps/conditions/svt/AbstractSvtConditionsConverter.java	Mon Oct 27 11:20:27 2014
@@ -1,12 +1,4 @@
 package org.hps.conditions.svt;
-
-import static org.hps.conditions.TableConstants.SVT_BAD_CHANNELS;
-import static org.hps.conditions.TableConstants.SVT_CALIBRATIONS;
-import static org.hps.conditions.TableConstants.SVT_CHANNELS;
-import static org.hps.conditions.TableConstants.SVT_DAQ_MAP;
-import static org.hps.conditions.TableConstants.SVT_GAINS;
-import static org.hps.conditions.TableConstants.SVT_PULSE_PARAMETERS;
-import static org.hps.conditions.TableConstants.SVT_TIME_SHIFTS;
 
 import org.lcsim.conditions.ConditionsConverter;
 import org.lcsim.conditions.ConditionsManager;
@@ -14,7 +6,6 @@
 import org.hps.conditions.TableMetaData;
 import org.hps.conditions.svt.SvtBadChannel.SvtBadChannelCollection;
 import org.hps.conditions.svt.SvtCalibration.SvtCalibrationCollection;
-import org.hps.conditions.svt.SvtChannel.SvtChannelCollection;
 import org.hps.conditions.svt.SvtGain.SvtGainCollection;
 import org.hps.conditions.svt.SvtShapeFitParameters.SvtShapeFitParametersCollection;
 import org.hps.conditions.svt.SvtT0Shift.SvtT0ShiftCollection;
@@ -26,13 +17,10 @@
  * 
  * @author Omar Moreno <[log in to unmask]>
  *
- * @param <T>  SVT conditions object type
+ * @param <T extends AbstractSvtConditions>  SVT conditions object type
  */
 public abstract class AbstractSvtConditionsConverter<T extends AbstractSvtConditions> implements ConditionsConverter<T> {
 	
-	private TableMetaData metaData = null; 
-	private String tableName = null; 
-
 	protected T conditions;
 	
     /**
@@ -43,146 +31,67 @@
 	public T getData(ConditionsManager manager, String name){
 	
     	DatabaseConditionsManager dbConditionsManager = (DatabaseConditionsManager) manager;
-    	
-        SvtChannelCollection channels = this.getSvtChannelMap(dbConditionsManager);
-
-        // Create the SVT conditions object to use to encapsulate SVT condition collections
-        conditions.setChannelMap(channels);
-        
-        SvtCalibrationCollection calibrations = this.getCalibrations(dbConditionsManager);
+    
+    	// Get the SVT calibrations (baseline, noise) from the conditions database
+        SvtCalibrationCollection calibrations = this.getCollection(SvtCalibrationCollection.class, dbConditionsManager);
         for (SvtCalibration calibration : calibrations.getObjects()) {
-            SvtChannel channel = conditions.getChannelMap().findChannel(calibration.getChannelID());
+            AbstractSvtChannel channel = conditions.getChannelMap().findChannel(calibration.getChannelID());
             conditions.getChannelConstants(channel).setCalibration(calibration);
         }
 
-        SvtShapeFitParametersCollection shapeFitParametersCollection = this.getShapeFitParameters(dbConditionsManager);
+        // Get the Channel pulse fit parameters from the conditions database
+        SvtShapeFitParametersCollection shapeFitParametersCollection 
+        	= this.getCollection(SvtShapeFitParametersCollection.class, dbConditionsManager);
         for (SvtShapeFitParameters shapeFitParameters : shapeFitParametersCollection.getObjects()) {
-            SvtChannel channel = conditions.getChannelMap().findChannel(shapeFitParameters.getChannelID());
+            AbstractSvtChannel channel = conditions.getChannelMap().findChannel(shapeFitParameters.getChannelID());
             conditions.getChannelConstants(channel).setShapeFitParameters(shapeFitParameters);
         }
-		
+	
+        // Get the bad channels from the conditions database.  If there aren't any bad channels, 
+        // notify the user and move on.
         try { 
-        	
-        	SvtBadChannelCollection badChannels = this.getBadChannels(dbConditionsManager);
+        	SvtBadChannelCollection badChannels = this.getCollection(SvtBadChannelCollection.class, dbConditionsManager);
         	for (SvtBadChannel badChannel : badChannels.getObjects()) {
-        		SvtChannel channel = conditions.getChannelMap().findChannel(badChannel.getChannelId());
+        		AbstractSvtChannel channel = conditions.getChannelMap().findChannel(badChannel.getChannelId());
         		conditions.getChannelConstants(channel).setBadChannel(true);
         	}
         } catch (RuntimeException e) { 
         	System.out.println("[ " + conditions.getClass().getSimpleName() + "]: A set of bad channels were not found!");
         }
 
-        SvtGainCollection channelGains = this.getChannelGains(dbConditionsManager);
+        // Get the gains and offsets from the conditions database
+        SvtGainCollection channelGains = this.getCollection(SvtGainCollection.class, dbConditionsManager);
         for (SvtGain channelGain : channelGains.getObjects()) {
             int channelId = channelGain.getChannelID();
-            SvtChannel channel = conditions.getChannelMap().findChannel(channelId);
+            AbstractSvtChannel channel = conditions.getChannelMap().findChannel(channelId);
             conditions.getChannelConstants(channel).setGain(channelGain);
         }
 
-        SvtT0ShiftCollection t0Shifts = this.getT0Shits(dbConditionsManager);
-        conditions.setTimeShifts(t0Shifts);
+        // Get the collection of T0 shifts from the conditions database
+        SvtT0ShiftCollection t0Shifts = this.getCollection(SvtT0ShiftCollection.class, dbConditionsManager);
+        conditions.setT0Shifts(t0Shifts);
 
         return conditions;
 	}
-	
-    protected SvtChannelCollection getSvtChannelMap(DatabaseConditionsManager dbConditionsManager){
-    	
-        // Get the table name containing the SVT channel map from the 
-    	// database configuration.  If it doesn't exist, use the default value.
-    	metaData = dbConditionsManager.findTableMetaData(SvtChannelCollection.class);
-    	if(metaData != null){
-    		tableName = metaData.getTableName();
-    	} else { 
-    		tableName = SVT_CHANNELS; 
-    	}
-    	// Get the SVT channel map from the conditions database
-    	SvtChannelCollection channels 
-    		= dbConditionsManager.getCachedConditions(SvtChannelCollection.class, tableName).getCachedData();
-    
-    	return channels;
-    }
-    
-    protected SvtCalibrationCollection getCalibrations(DatabaseConditionsManager dbConditionsManager){
-    	
-        // Get the table name containing the SVT calibrations (baseline, noise)
-        // from the database configuration.  If it doesn't exist, use the 
-        // default value.
-        metaData = dbConditionsManager.findTableMetaData(SvtCalibrationCollection.class);
-    	if(metaData != null){
-    		tableName = metaData.getTableName();
-    	} else { 
-    		tableName = SVT_CALIBRATIONS; 
-    	}
-    	// Get the calibrations from the conditions database
-        SvtCalibrationCollection calibrations = dbConditionsManager.getCachedConditions(SvtCalibrationCollection.class, tableName).getCachedData();
-    
-        return calibrations;
-    }
-    
-    protected SvtShapeFitParametersCollection getShapeFitParameters(DatabaseConditionsManager dbConditionsManager){
-    	// Get the table name containing the SVT pulse shape parameters from 
-    	// the database configuration.  If it doesn't exist, use the default value.
-    	metaData = dbConditionsManager.findTableMetaData(SvtShapeFitParametersCollection.class);
-    	if(metaData != null){
-    		tableName = metaData.getTableName();
-    	} else { 
-    		tableName = SVT_PULSE_PARAMETERS; 
-    	}
-    	// Add pulse parameters by channel.
-    	SvtShapeFitParametersCollection shapeFitParametersCollection = dbConditionsManager.getCachedConditions(SvtShapeFitParametersCollection.class, tableName).getCachedData();
-    
-    	return shapeFitParametersCollection;
-    }
-    
-    // FIXME: This should be changed to catch a conditions record not found exception instead of 
-  	// 		  a runtime exception.
-    protected SvtBadChannelCollection getBadChannels(DatabaseConditionsManager dbConditionsManager)
-    	throws RuntimeException {
-        // Get the table name containing the SVT bad channel map from the 
-        // database configuration.  If it doesn't exist, use the default value.
-        metaData = dbConditionsManager.findTableMetaData(SvtBadChannelCollection.class);
-    	if(metaData != null){
-    		tableName = metaData.getTableName();
-    	} else { 
-    		tableName = SVT_BAD_CHANNELS; 
-    	}
-    	
-        // Add bad channels.
-        SvtBadChannelCollection badChannels = dbConditionsManager.getCachedConditions(SvtBadChannelCollection.class, tableName).getCachedData();
-    
-        return badChannels;
-    }
-    
-    protected SvtGainCollection getChannelGains(DatabaseConditionsManager dbConditionsManager){
-    	
-        // Get the table name containing the SVT gains from the database
-        // configuration.  If it doesn't exist, use the default value.
-        metaData = dbConditionsManager.findTableMetaData(SvtGainCollection.class);
-    	if(metaData != null){
-    		tableName = metaData.getTableName();
-    	} else { 
-    		tableName = SVT_GAINS; 
-    	}
-        
-        // Add gains by channel.
-        SvtGainCollection gains = dbConditionsManager.getCachedConditions(SvtGainCollection.class, tableName).getCachedData();
-    
-        return gains;
-    }
-    
-    protected SvtT0ShiftCollection getT0Shits(DatabaseConditionsManager dbConditionsManager){
 
-    	// Get the table name containing the SVT t0 shifts. If it doesn't 
-        // exist, use the default value. 
-        metaData = dbConditionsManager.findTableMetaData(SvtT0ShiftCollection.class);
-    	if(metaData != null){
-    		tableName = metaData.getTableName();
-    	} else { 
-    		tableName = SVT_TIME_SHIFTS; 
-    	}	
-        // Set the t0 shifts by sensor.
-        SvtT0ShiftCollection t0Shifts = dbConditionsManager.getCachedConditions(SvtT0ShiftCollection.class, tableName).getCachedData();
-    
-        return t0Shifts;
-    }
-}
+	/**
+	 * Get a given collection of the given type from the conditions database.
+	 * 
+	 * @param type Class type
+	 * @param dbConditionsManager The database conditions manager
+	 * @return A collection of objects of the given type from the conditions database
+	 */
+	protected <U> U getCollection(Class<U> type, DatabaseConditionsManager dbConditionsManager){
+		
+		// Get the table name from the database configuration
+		TableMetaData metaData = dbConditionsManager.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.
+		U conditionsCollection = dbConditionsManager.getCachedConditions(type, tableName).getCachedData(); 
+		return conditionsCollection; 
+	}
+}