Commit in java/trunk/conditions/src/main/java/org/hps/conditions on MAIN
ConditionsObjectConverter.java+7-48601 -> 602
ConditionsObjectUtil.java+57added 602
+64-48
1 added + 1 modified, total 2 files
Move some ConditionsObject code to util class.

java/trunk/conditions/src/main/java/org/hps/conditions
ConditionsObjectConverter.java 601 -> 602
--- java/trunk/conditions/src/main/java/org/hps/conditions/ConditionsObjectConverter.java	2014-05-19 19:55:42 UTC (rev 601)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/ConditionsObjectConverter.java	2014-05-19 19:58:17 UTC (rev 602)
@@ -1,10 +1,8 @@
 package org.hps.conditions;
 
 import java.sql.ResultSet;
-import java.sql.ResultSetMetaData;
 import java.sql.SQLException;
 
-import org.hps.conditions.ConditionsObject.FieldValueMap;
 import org.hps.conditions.ConditionsRecord.ConditionsRecordCollection;
 import org.lcsim.conditions.ConditionsConverter;
 import org.lcsim.conditions.ConditionsManager;
@@ -23,6 +21,8 @@
  * @param <T> The type of the returned data which should be a class extending
  *            {@link ConditionsObjectCollection}.
  */
+// FIXME: This class should only allow one collection to be returned and not mix the database records together.
+// TODO: This class can probably be removed in favor of using the ConditionsSeriesConverter in all cases.
 public abstract class ConditionsObjectConverter<T> implements ConditionsConverter<T> {
 
     public ConditionsObjectConverter() {
@@ -41,7 +41,7 @@
         // System.out.println("finding conditions for key " + name + " ...");
 
         // Get the DatabaseConditionsManager which is required for using this converter.
-        DatabaseConditionsManager databaseConditionsManager = getDatabaseConditionsManager(conditionsManager);
+        DatabaseConditionsManager databaseConditionsManager = DatabaseConditionsManager.castFrom(conditionsManager);
 
         // Get the table meta data from the key given by the caller.
         TableMetaData tableMetaData = databaseConditionsManager.findTableMetaData(name);
@@ -49,13 +49,8 @@
             throw new RuntimeException("Table meta data for " + name + " was not found.");
 
         // Create a collection to return.
-        ConditionsObjectCollection collection;
-        try {
-            collection = tableMetaData.getCollectionClass().newInstance();
-        } catch (InstantiationException | IllegalAccessException e) {
-            throw new RuntimeException(e);
-        }
-
+        ConditionsObjectCollection collection = ConditionsObjectUtil.createCollection(tableMetaData);
+        
         // Get the ConditionsRecord with the meta-data, which will use the current run
         // number from the manager.
         ConditionsRecordCollection conditionsRecords = databaseConditionsManager.findConditionsRecords(name);
@@ -101,7 +96,7 @@
                 // Loop over rows.
                 while (resultSet.next()) {
                     // Create new ConditionsObject.
-                    ConditionsObject newObject = createConditionsObject(resultSet, tableMetaData);
+                    ConditionsObject newObject = ConditionsObjectUtil.createConditionsObject(resultSet, tableMetaData);
 
                     // Add new object to collection, which will also assign it a
                     // collection ID if applicable.
@@ -115,43 +110,7 @@
         // Return new collection.
         return (T) collection;
     }
-
-    protected ConditionsObject createConditionsObject(ResultSet resultSet, TableMetaData tableMetaData) throws SQLException {
-        ResultSetMetaData metaData = resultSet.getMetaData();
-        int rowId = resultSet.getInt(1);
-        int ncols = metaData.getColumnCount();
-        FieldValueMap fieldValues = new FieldValueMap();
-        for (int i = 2; i <= ncols; i++) {
-            fieldValues.put(metaData.getColumnName(i), resultSet.getObject(i));
-        }
-        ConditionsObject newObject = null;
-        try {
-            newObject = tableMetaData.getObjectClass().newInstance();
-        } catch (InstantiationException | IllegalAccessException e) {
-            throw new RuntimeException(e);
-        }
-        try {
-            newObject.setRowId(rowId);
-        } catch (ConditionsObjectException e) {
-            throw new RuntimeException(e);
-        }
-        try {
-            newObject.setTableMetaData(tableMetaData);
-        } catch (ConditionsObjectException e) {
-            throw new RuntimeException(e);
-        }
-        newObject.setFieldValues(fieldValues);
-        return newObject;
-    }
-
-    protected DatabaseConditionsManager getDatabaseConditionsManager(ConditionsManager conditionsManager) {
-        if (conditionsManager instanceof DatabaseConditionsManager) {
-            return (DatabaseConditionsManager) conditionsManager;
-        } else {
-            throw new RuntimeException("This converter requires a ConditionsManager of type DatabaseConditionsManager.");
-        }
-    }
-
+   
     public boolean allowMultipleCollections() {
         return false;
     }

java/trunk/conditions/src/main/java/org/hps/conditions
ConditionsObjectUtil.java added at 602
--- java/trunk/conditions/src/main/java/org/hps/conditions/ConditionsObjectUtil.java	                        (rev 0)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/ConditionsObjectUtil.java	2014-05-19 19:58:17 UTC (rev 602)
@@ -0,0 +1,57 @@
+package org.hps.conditions;
+
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+
+import org.hps.conditions.ConditionsObject.FieldValueMap;
+
+/**
+ * Some static utility methods for <tt>ConditionsObject</tt> and related classes.
+ * 
+ * @author Jeremy McCormick <[log in to unmask]>
+ */
+final class ConditionsObjectUtil {
+    
+    private ConditionsObjectUtil() {
+    }
+
+    static final ConditionsObject createConditionsObject(ResultSet resultSet, TableMetaData tableMetaData) throws SQLException {
+        ResultSetMetaData metaData = resultSet.getMetaData();
+        int rowId = resultSet.getInt(1);
+        int ncols = metaData.getColumnCount();
+        FieldValueMap fieldValues = new FieldValueMap();
+        for (int i = 2; i <= ncols; i++) {
+            fieldValues.put(metaData.getColumnName(i), resultSet.getObject(i));
+        }
+        ConditionsObject newObject = null;
+        try {
+            newObject = tableMetaData.getObjectClass().newInstance();
+        } catch (InstantiationException | IllegalAccessException e) {
+            throw new RuntimeException(e);
+        }
+        try {
+            newObject.setRowId(rowId);
+        } catch (ConditionsObjectException e) {
+            throw new RuntimeException(e);
+        }
+        try {
+            newObject.setTableMetaData(tableMetaData);
+        } catch (ConditionsObjectException e) {
+            throw new RuntimeException(e);
+        }
+        newObject.setFieldValues(fieldValues);
+        return newObject;
+    }    
+    
+    static final ConditionsObjectCollection createCollection(TableMetaData tableMetaData) {
+        ConditionsObjectCollection collection;
+        try {
+            collection = tableMetaData.getCollectionClass().newInstance();
+        } catch (InstantiationException | IllegalAccessException e) {
+            throw new RuntimeException(e);
+        }
+        return collection;
+    }
+    
+}
\ No newline at end of file
SVNspam 0.1