Print

Print


Author: [log in to unmask]
Date: Sat Mar  7 17:21:17 2015
New Revision: 2364

Log:
Merge r2359 through r2363 into prod branch.

Modified:
    java/branches/prod/   (props changed)
    java/branches/prod/conditions/src/main/java/org/hps/conditions/cli/AddCommand.java
    java/branches/prod/conditions/src/main/java/org/hps/conditions/cli/LoadCommand.java
    java/branches/prod/conditions/src/main/java/org/hps/conditions/database/DatabaseConditionsManager.java
    java/branches/prod/integration-tests/   (props changed)
    java/branches/prod/integration-tests/src/test/resources/org/hps/steering/test/MockDataReconTest.lcsim

Modified: java/branches/prod/conditions/src/main/java/org/hps/conditions/cli/AddCommand.java
 =============================================================================
--- java/branches/prod/conditions/src/main/java/org/hps/conditions/cli/AddCommand.java	(original)
+++ java/branches/prod/conditions/src/main/java/org/hps/conditions/cli/AddCommand.java	Sat Mar  7 17:21:17 2015
@@ -6,6 +6,7 @@
 import org.hps.conditions.api.ConditionsObjectException;
 import org.hps.conditions.api.ConditionsRecord;
 import org.hps.conditions.api.FieldValueMap;
+import org.hps.conditions.database.DatabaseConditionsManager;
 
 /**
  * This is a command for the conditions CLI that will add a conditions record,
@@ -19,52 +20,114 @@
     PrintStream ps = System.out;
     
     AddCommand() {
-        super("add", "Add a conditions record");
-        options.addOption("r", true, "The starting run number");
+        super("add", "Add a conditions record to associate a collection to a run range");
+        options.addOption("r", true, "The starting run number (required)");
         options.getOption("r").setRequired(true);
-        options.addOption("e", true, "The ending run number");
-        options.addOption("k", true, "The conditions key");
-        options.addOption("t", true, "The table name");
+        options.addOption("e", true, "The ending run number (default is starting run number)");
+        options.addOption("t", true, "The table name (required)");
         options.getOption("t").setRequired(true);
-        options.addOption("T", true, "A tag value");
-        options.addOption("u", true, "Your user name");
-        options.addOption("c", true, "The collection ID");
+        options.addOption("c", true, "The collection ID (required)");
         options.getOption("c").setRequired(true);
-        options.addOption("m", true, "The notes");
+        options.addOption("T", true, "A tag value (optional)");
+        options.addOption("u", true, "Your user name (optional)");
+        options.addOption("m", true, "The notes about this conditions set (optional)");
     }
        
     void execute(String[] arguments) {
         super.execute(arguments);
-                
-        int runStart = Integer.parseInt(commandLine.getOptionValue("r"));
+        
+        // This command has 3 required options.
+        if (commandLine.getOptions().length == 0) {
+            this.printUsage();
+            System.exit(1);
+        }
+
+        // Run start (required).
+        int runStart;        
+        if (commandLine.hasOption("r")) {
+            runStart = Integer.parseInt(commandLine.getOptionValue("r"));
+        } else {
+            throw new RuntimeException("Missing required -r option with run number.");
+        }
+        
+        // Run end.
         int runEnd = runStart;
         if (commandLine.hasOption("e")) {
             runEnd = Integer.parseInt(commandLine.getOptionValue("e"));
         }
-        
-        String tableName = commandLine.getOptionValue("t");
+
+        // Name of table (required).
+        String tableName;
+        if (commandLine.hasOption("t")) {
+            tableName = commandLine.getOptionValue("t");
+        } else {
+            throw new RuntimeException("Missing required -t argument with table name");
+        }        
         String name = tableName;
-        if (commandLine.hasOption("k")) {
-            name = commandLine.getOptionValue("k");
+
+        // Collection ID (required).
+        int collectionId;
+        if (commandLine.hasOption("c")) {
+            collectionId = Integer.parseInt(commandLine.getOptionValue("c"));
+        } else {
+            throw new RuntimeException("Missing required -c argument with collection ID");
         }
         
+        // User name.
         String createdBy = System.getProperty("user.name");
         if (commandLine.hasOption("u")) {
             createdBy = commandLine.getOptionValue("u");
         }
         
+        // Tag to assign (optional).
         String tag = null;
         if (commandLine.hasOption("T")) {
             tag = commandLine.getOptionValue("T");
         }
         
+        // Notes (optional).
         String notes = null;
         if (commandLine.hasOption("m")) {
             notes = commandLine.getOptionValue("m");
         }
         
-        int collectionId = Integer.parseInt(commandLine.getOptionValue("c"));
+        // Create the conditions record to insert.
+        ConditionsRecord conditionsRecord = createConditionsRecord(
+                runStart, 
+                runEnd, 
+                tableName, 
+                name, 
+                collectionId, 
+                createdBy, 
+                tag, 
+                notes);       
+        try {
+            boolean createdConnection = false;
+            DatabaseConditionsManager manager = DatabaseConditionsManager.getInstance();
+            if (!DatabaseConditionsManager.getInstance().isConnected()) {
+                createdConnection = manager.openConnection();
+            }
+            conditionsRecord.insert();
+            manager.closeConnection(createdConnection);
+        } catch (ConditionsObjectException e) {
+            throw new RuntimeException("An error occurred while adding a conditions record.", e);
+        }
+        ps.println("successfully added conditions record ...");
+        ps.println(conditionsRecord);
+    }
 
+    /**
+     * @param runStart
+     * @param runEnd
+     * @param tableName
+     * @param name
+     * @param collectionId
+     * @param createdBy
+     * @param tag
+     * @param notes
+     * @return
+     */
+    private ConditionsRecord createConditionsRecord(int runStart, int runEnd, String tableName, String name, int collectionId, String createdBy, String tag, String notes) {
         ConditionsRecord conditionsRecord = new ConditionsRecord();
         FieldValueMap fieldValues = new FieldValueMap();
         fieldValues.put("run_start", runStart);
@@ -81,13 +144,6 @@
         }
         conditionsRecord.setFieldValues(fieldValues);
         fieldValues.put("created", new Date());
-        try {
-            conditionsRecord.insert();
-        } catch (ConditionsObjectException e) {
-            throw new RuntimeException("An error occurred while adding a conditions record.", e);
-        }
-        ps.println("successfully added conditions record ...");
-        ps.println(conditionsRecord);
+        return conditionsRecord;
     }
-
-}
+}

Modified: java/branches/prod/conditions/src/main/java/org/hps/conditions/cli/LoadCommand.java
 =============================================================================
--- java/branches/prod/conditions/src/main/java/org/hps/conditions/cli/LoadCommand.java	(original)
+++ java/branches/prod/conditions/src/main/java/org/hps/conditions/cli/LoadCommand.java	Sat Mar  7 17:21:17 2015
@@ -42,7 +42,7 @@
     @Override
     public void execute(String[] arguments) {
         super.execute(arguments);
-        
+               
         String fileName = commandLine.getOptionValue("f");
         if (fileName == null) {
             throw new IllegalArgumentException("Missing file argument.");
@@ -58,6 +58,11 @@
 
         DatabaseConditionsManager conditionsManager = DatabaseConditionsManager.getInstance();
 
+        boolean openedConnection = false;
+        if (!conditionsManager.isConnected()) {
+            openedConnection = conditionsManager.openConnection();
+        }
+        
         int collectionID;
         if (commandLine.getOptionValue("c") != null) {
             collectionID = Integer.parseInt(commandLine.getOptionValue("c"));
@@ -78,6 +83,7 @@
         // FIXME: This call should go through an object API like ConditionsObjectCollection.insert rather than the manager directly.
         List<Integer> IDs = conditionsManager.updateQuery(insertSql);
         System.out.println("Inserted " + IDs.size() + " new rows into table " + tableName + " with collection_id " + collectionID);
+        conditionsManager.closeConnection(openedConnection);
     }
 
     void parseFile(String fileName, List<String> columnNames, List<List<String>> rows) {

Modified: java/branches/prod/conditions/src/main/java/org/hps/conditions/database/DatabaseConditionsManager.java
 =============================================================================
--- java/branches/prod/conditions/src/main/java/org/hps/conditions/database/DatabaseConditionsManager.java	(original)
+++ java/branches/prod/conditions/src/main/java/org/hps/conditions/database/DatabaseConditionsManager.java	Sat Mar  7 17:21:17 2015
@@ -369,9 +369,6 @@
      */
     public int getNextCollectionID(String tableName) {
         boolean openedConnection = openConnection();
-        TableMetaData tableData = tableRegistry.findByTableName(tableName);
-        if (tableData == null)
-            throw new IllegalArgumentException("There is no meta data for table " + tableName);
         ResultSet resultSet = selectQuery("SELECT MAX(collection_id)+1 FROM " + tableName);
         int collectionId = 1;
         try {

Modified: java/branches/prod/integration-tests/src/test/resources/org/hps/steering/test/MockDataReconTest.lcsim
 =============================================================================
--- java/branches/prod/integration-tests/src/test/resources/org/hps/steering/test/MockDataReconTest.lcsim	(original)
+++ java/branches/prod/integration-tests/src/test/resources/org/hps/steering/test/MockDataReconTest.lcsim	Sat Mar  7 17:21:17 2015
@@ -10,8 +10,6 @@
     </control>
     <execute>
         <driver name="EventMarkerDriver"/>
-        <driver name="ConditionsDriver" />
-        <driver name="SvtSensorSetup" />
         <driver name="RawTrackerHitSensorSetup"/>
         <driver name="RawTrackerHitFitterDriver" />
         <driver name="TrackerHitDriver"/>
@@ -26,10 +24,8 @@
         <driver name="CleanupDriver"/>
     </execute>    
     <drivers>    
-        <driver name="ConditionsDriver" type="org.hps.conditions.ConditionsDriver" />
-        <driver name="SvtSensorSetup" type="org.hps.recon.tracking.SvtSensorSetup" />   
         <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
-            <eventInterval>10</eventInterval>
+            <eventInterval>1</eventInterval>
         </driver>        
         <driver name="RawTrackerHitSensorSetup" type="org.lcsim.recon.tracking.digitization.sisim.config.RawTrackerHitSensorSetup"/>
         <driver name="RawTrackerHitFitterDriver" type="org.hps.recon.tracking.RawTrackerHitFitterDriver">
@@ -55,7 +51,6 @@
             <isMC>false</isMC>
             <gblFileName></gblFileName>
         </driver>
-
         <driver name="EcalRawConverter" type="org.hps.recon.ecal.EcalRawConverterDriver">
             <ecalCollectionName>EcalCalHits</ecalCollectionName>
             <use2014Gain>true</use2014Gain>