4 added + 4 modified, total 8 files
java/trunk/conditions/src/main/java/org/hps/conditions
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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