Commit in java/trunk/conditions/src on MAIN
main/java/org/hps/conditions/DatabaseConditionsManager.java+6-5851 -> 852
                            /TableConstants.java+6-3851 -> 852
main/java/org/hps/conditions/config/ConditionsDatabaseConfiguration.java+34added 852
main/java/org/hps/conditions/svt/SvtConfiguration.java+42added 852
                                /SvtConfigurationLoader.java+66added 852
                                /SvtConverterRegistry.java+8-5851 -> 852
main/resources/org/hps/conditions/config/conditions_dev.xml+13851 -> 852
test/java/org/hps/conditions/svt/SvtConfigurationTest.java+40added 852
+215-13
4 added + 4 modified, total 8 files
Add ability to save and load SVT XML configurations to conditions database.

java/trunk/conditions/src/main/java/org/hps/conditions
DatabaseConditionsManager.java 851 -> 852
--- java/trunk/conditions/src/main/java/org/hps/conditions/DatabaseConditionsManager.java	2014-08-14 00:21:22 UTC (rev 851)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/DatabaseConditionsManager.java	2014-08-14 22:42:17 UTC (rev 852)
@@ -125,6 +125,10 @@
 
         return (DatabaseConditionsManager) manager;
     }
+    
+    public Connection getConnection() {
+        return this.connection;
+    }
 
     /**
      * This method catches changes to the detector name and run number. Somewhat
@@ -247,10 +251,7 @@
      * @param tableName The name of the table.
      * @return The next collection ID.
      */
-    // FIXME: If there are no collections that exist, this method should simply return the
-    // value '1'
-    // or it could throw an exception.
-    public int getNextCollectionId(String tableName) {
+    public int getNextCollectionID(String tableName) {
         TableMetaData tableData = findTableMetaData(tableName);
         if (tableData == null)
             throw new IllegalArgumentException("There is no meta data for table " + tableName);
@@ -528,7 +529,7 @@
     /**
      * Open the database connection.
      */
-    private void openConnection() {
+    public void openConnection() {
         if (connectionParameters == null)
             throw new RuntimeException("The connection parameters were not configured.");
         connection = connectionParameters.createConnection();

java/trunk/conditions/src/main/java/org/hps/conditions
TableConstants.java 851 -> 852
--- java/trunk/conditions/src/main/java/org/hps/conditions/TableConstants.java	2014-08-14 00:21:22 UTC (rev 851)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/TableConstants.java	2014-08-14 22:42:17 UTC (rev 852)
@@ -49,6 +49,9 @@
     /** Conditions key for SVT alignment data. */
     public static final String SVT_ALIGNMENTS = "svt_alignments";
 
+    /** Conditions key for SVT bad channels. */
+    public static final String SVT_BAD_CHANNELS = "svt_bad_channels";
+   
     /** Table with SVT channel data. */
     public static final String SVT_CHANNELS = "svt_channels";
 
@@ -57,10 +60,10 @@
 
     /** Conditions key for SVT calibration data. */
     public static final String SVT_CALIBRATIONS = "svt_calibrations";
+    
+    /** Conditions key for SVT configuration files. */
+    public static final String SVT_CONFIGURATIONS = "svt_configurations";
 
-    /** Conditions key for SVT bad channels. */
-    public static final String SVT_BAD_CHANNELS = "svt_bad_channels";
-
     /** Conditions key for SVT pulse parameters. */
     public static final String SVT_PULSE_PARAMETERS = "svt_pulse_parameters";
 

java/trunk/conditions/src/main/java/org/hps/conditions/config
ConditionsDatabaseConfiguration.java added at 852
--- java/trunk/conditions/src/main/java/org/hps/conditions/config/ConditionsDatabaseConfiguration.java	                        (rev 0)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/config/ConditionsDatabaseConfiguration.java	2014-08-14 22:42:17 UTC (rev 852)
@@ -0,0 +1,34 @@
+package org.hps.conditions.config;
+
+import org.hps.conditions.DatabaseConditionsManager;
+
+/**
+ * Convenience class for setting up access to the conditions.
+ * @author Jeremy McCormick <[log in to unmask]>
+ */
+public class ConditionsDatabaseConfiguration {
+    
+    private String xmlConfig;
+    private String connectionProp;
+    private DatabaseConditionsManager manager;
+
+    /**
+     * Constructor.
+     */
+    public ConditionsDatabaseConfiguration(
+            String xmlConfig, 
+            String connectionProp) {
+        this.xmlConfig = xmlConfig;
+        this.connectionProp = connectionProp;
+    }
+    
+    /**
+     * Setup the XML config and connection properties on the conditions manager.
+     */
+    public void setup() {
+        manager = new DatabaseConditionsManager();
+        manager.configure(xmlConfig);
+        manager.setConnectionResource(connectionProp);
+        manager.register();
+    }    
+}
\ No newline at end of file

java/trunk/conditions/src/main/java/org/hps/conditions/svt
SvtConfiguration.java added at 852
--- java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtConfiguration.java	                        (rev 0)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtConfiguration.java	2014-08-14 22:42:17 UTC (rev 852)
@@ -0,0 +1,42 @@
+package org.hps.conditions.svt;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.hps.conditions.AbstractConditionsObject;
+import org.hps.conditions.ConditionsObjectCollection;
+import org.jdom.Document;
+import org.jdom.JDOMException;
+import org.jdom.input.SAXBuilder;
+
+/**
+ * This is a simple class for getting an SVT XML configuration file.
+ */
+public class SvtConfiguration extends AbstractConditionsObject {
+            
+    public static class SvtConfigurationCollection extends ConditionsObjectCollection<SvtConfiguration> {
+    }
+
+    /**
+     * Get the filename associated with this configuration.
+     * @return The filename associated with the configuration.
+     */
+    public String getFileName() {
+        return getFieldValue("filename");
+    }
+        
+    /**
+     * Convert the raw database field value for the configuration into an XML document.
+     * @return The Document created from the raw data.
+     * @throws IOException 
+     * @throws JDOMException
+     */
+    public Document createDocument() throws IOException, JDOMException {
+        byte[] bytes = getFieldValue("content");
+        InputStream inputStream = new ByteArrayInputStream(bytes);
+        SAXBuilder builder = new SAXBuilder();
+        builder.setValidation(false);
+        return builder.build(inputStream);
+    }
+}

java/trunk/conditions/src/main/java/org/hps/conditions/svt
SvtConfigurationLoader.java added at 852
--- java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtConfigurationLoader.java	                        (rev 0)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtConfigurationLoader.java	2014-08-14 22:42:17 UTC (rev 852)
@@ -0,0 +1,66 @@
+package org.hps.conditions.svt;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+
+import org.hps.conditions.DatabaseConditionsManager;
+import org.hps.conditions.TableConstants;
+import org.hps.conditions.config.ConditionsDatabaseConfiguration;
+
+/**
+ * Load an SVT configuration XML file into the conditions database from a file.
+ */
+public class SvtConfigurationLoader {
+    
+    private static final String INSERT_SQL = 
+            "INSERT INTO svt_configurations(collection_id, filename, content) values(?, ?, ?)";
+    
+    public static void main(String[] args) {
+        if (args.length == 0)
+            throw new RuntimeException("ERROR: Path to XML configuration file is required!");
+        new SvtConfigurationLoader().insert(new File(args[0]));
+    }
+    
+    DatabaseConditionsManager manager;
+    
+    public SvtConfigurationLoader() {
+        // FIXME: Configuration hard-coded to conditions dev database.
+        new ConditionsDatabaseConfiguration(
+                "/org/hps/conditions/config/conditions_dev.xml",
+                "/org/hps/conditions/config/conditions_dev_local.properties").setup();
+        manager = DatabaseConditionsManager.getInstance();
+        manager.openConnection();
+    }
+    
+    /**
+     * Insert an SVT XML configuration file into the conditions database. 
+     * @param file The XML configuration file.
+     */
+    public void insert(File file) {        
+        PreparedStatement ps = null;         
+        Connection con = manager.getConnection();
+        try {
+            ps = con.prepareStatement(INSERT_SQL);
+            Integer collectionID = manager.getNextCollectionID(TableConstants.SVT_CONFIGURATIONS);
+            ps.setString(1, collectionID.toString());
+            ps.setString(2, file.getName());
+            ps.setBinaryStream(3, new FileInputStream(file));
+            ps.executeUpdate();
+        } catch (SQLException e) {
+            e.printStackTrace();
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                ps.close();
+            } catch (SQLException e) {
+                e.printStackTrace();
+            }
+            manager.closeConnection();
+        }
+    }    
+}
\ No newline at end of file

java/trunk/conditions/src/main/java/org/hps/conditions/svt
SvtConverterRegistry.java 851 -> 852
--- java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtConverterRegistry.java	2014-08-14 00:21:22 UTC (rev 851)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtConverterRegistry.java	2014-08-14 22:42:17 UTC (rev 852)
@@ -5,6 +5,7 @@
 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.SvtConfiguration.SvtConfigurationCollection;
 import org.hps.conditions.svt.SvtDaqMapping.SvtDaqMappingCollection;
 import org.hps.conditions.svt.SvtGain.SvtGainCollection;
 import org.hps.conditions.svt.SvtPulseParameters.SvtPulseParametersCollection;
@@ -27,10 +28,6 @@
         public Class getType() {
             return SvtBadChannelCollection.class;
         }
-
-        public boolean allowMultipleCollections() {
-            return true;
-        }
     }
 
     public static class SvtCalibrationConverter extends ConditionsObjectConverter<SvtCalibrationCollection> {
@@ -44,6 +41,12 @@
             return SvtChannelCollection.class;
         }
     }
+    
+    public static class SvtConfigurationConverter extends ConditionsObjectConverter<SvtConfigurationCollection> {
+        public Class getType() {
+            return SvtConfigurationCollection.class;
+        }
+    }
 
     public static class SvtDaqMappingConverter extends ConditionsObjectConverter<SvtDaqMappingCollection> {
         public Class getType() {
@@ -68,4 +71,4 @@
             return SvtTimeShiftCollection.class;
         }
     }
-}
+}
\ No newline at end of file

java/trunk/conditions/src/main/resources/org/hps/conditions/config
conditions_dev.xml 851 -> 852
--- java/trunk/conditions/src/main/resources/org/hps/conditions/config/conditions_dev.xml	2014-08-14 00:21:22 UTC (rev 851)
+++ java/trunk/conditions/src/main/resources/org/hps/conditions/config/conditions_dev.xml	2014-08-14 22:42:17 UTC (rev 852)
@@ -10,6 +10,7 @@
         <converter class="org.hps.conditions.svt.SvtConverterRegistry$SvtAlignmentConverter"/>
         <converter class="org.hps.conditions.svt.SvtConverterRegistry$SvtBadChannelConverter"/>
         <converter class="org.hps.conditions.svt.SvtConverterRegistry$SvtCalibrationConverter"/>
+        <converter class="org.hps.conditions.svt.SvtConverterRegistry$SvtConfigurationConverter"/>
         <converter class="org.hps.conditions.svt.SvtConverterRegistry$SvtChannelConverter"/>
         <converter class="org.hps.conditions.svt.SvtConverterRegistry$SvtDaqMappingConverter"/>
         <converter class="org.hps.conditions.svt.SvtConverterRegistry$SvtGainConverter"/>
@@ -76,6 +77,18 @@
                 <field name="channel" />
             </fields>
         </table>
+        
+        <table key="svt_configurations" name="svt_configurations">
+            <classes>
+                <object class="org.hps.conditions.svt.SvtConfiguration"/>
+                <collection class="org.hps.conditions.svt.SvtConfiguration$SvtConfigurationCollection"/>                
+            </classes>
+            <fields>
+                <field name="filename"/>
+                <field name="content"/>
+            </fields>
+        
+        </table>
     
         <table key="svt_gains" name="svt_gains">
             <classes>

java/trunk/conditions/src/test/java/org/hps/conditions/svt
SvtConfigurationTest.java added at 852
--- java/trunk/conditions/src/test/java/org/hps/conditions/svt/SvtConfigurationTest.java	                        (rev 0)
+++ java/trunk/conditions/src/test/java/org/hps/conditions/svt/SvtConfigurationTest.java	2014-08-14 22:42:17 UTC (rev 852)
@@ -0,0 +1,40 @@
+package org.hps.conditions.svt;
+
+import java.io.IOException;
+
+import junit.framework.TestCase;
+
+import org.hps.conditions.DatabaseConditionsManager;
+import org.hps.conditions.TableConstants;
+import org.hps.conditions.config.ConditionsDatabaseConfiguration;
+import org.hps.conditions.svt.SvtConfiguration.SvtConfigurationCollection;
+import org.jdom.Document;
+import org.jdom.JDOMException;
+
+public class SvtConfigurationTest extends TestCase {
+
+    DatabaseConditionsManager manager;
+    
+    public void setUp() {
+        new ConditionsDatabaseConfiguration(
+                "/org/hps/conditions/config/conditions_dev.xml", 
+                "/org/hps/conditions/config/conditions_dev_local.properties").setup();
+        manager = DatabaseConditionsManager.getInstance();
+        manager.openConnection();        
+    }
+    
+    public void testSvtConfiguration() {
+        SvtConfigurationCollection collection = manager.getCachedConditions(SvtConfigurationCollection.class, TableConstants.SVT_CONFIGURATIONS).getCachedData();
+        
+        for (SvtConfiguration config : collection) {
+            Document doc = null;
+            try {
+                doc = config.createDocument();
+            } catch (IOException | JDOMException e) {
+                throw new RuntimeException(e);
+            }
+            System.out.println(doc.toString());
+        }
+    }
+    
+}
SVNspam 0.1