Print

Print


Author: [log in to unmask]
Date: Thu Nov 13 11:52:01 2014
New Revision: 1507

Log:
Add conditions CLI command for registering a conditions set in the conditions table.

Added:
    java/trunk/conditions/src/main/java/org/hps/conditions/cli/AddCommand.java
Modified:
    java/trunk/conditions/src/main/java/org/hps/conditions/cli/CommandLineTool.java

Added: java/trunk/conditions/src/main/java/org/hps/conditions/cli/AddCommand.java
 =============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/cli/AddCommand.java	(added)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/cli/AddCommand.java	Thu Nov 13 11:52:01 2014
@@ -0,0 +1,95 @@
+package org.hps.conditions.cli;
+
+import java.util.Date;
+
+import org.hps.conditions.ConditionsObject.FieldValueMap;
+import org.hps.conditions.ConditionsObjectException;
+import org.hps.conditions.ConditionsRecord;
+import org.hps.conditions.DatabaseConditionsManager;
+import org.hps.conditions.TableConstants;
+
+/**
+ * This is a command for the conditions CLI that will add a conditions record,
+ * making a conditions set with a particular collection ID available by 
+ * run number via the {@link org.hps.conditions.DatabaseConditionsManager}.
+ * 
+ * @author Jeremy McCormick <[log in to unmask]>
+ */
+public class AddCommand extends AbstractCommand {
+    
+    AddCommand() {
+        super("add", "Add a conditions record");
+        options.addOption("r", true, "The starting run number");
+        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.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.getOption("c").setRequired(true);
+        options.addOption("m", true, "The notes");
+    }
+       
+    void execute(String[] arguments) {
+        super.execute(arguments);
+        
+        int runStart = Integer.parseInt(commandLine.getOptionValue("r"));
+        int runEnd = runStart;
+        if (commandLine.hasOption("e")) {
+            runEnd = Integer.parseInt(commandLine.getOptionValue("e"));
+        }
+        
+        String tableName = commandLine.getOptionValue("t");
+        String name = tableName;
+        if (commandLine.hasOption("k")) {
+            name = commandLine.getOptionValue("k");
+        }
+        
+        String createdBy = System.getProperty("user.name");
+        if (commandLine.hasOption("u")) {
+            createdBy = commandLine.getOptionValue("u");
+        }
+        
+        String tag = null;
+        if (commandLine.hasOption("T")) {
+            tag = commandLine.getOptionValue("T");
+        }
+        
+        String notes = null;
+        if (commandLine.hasOption("m")) {
+            notes = commandLine.getOptionValue("m");
+        }
+        
+        int collectionId = Integer.parseInt(commandLine.getOptionValue("c"));
+
+        ConditionsRecord conditionsRecord = new ConditionsRecord();
+        try {
+            conditionsRecord.setTableMetaData(DatabaseConditionsManager.getInstance().findTableMetaData(TableConstants.CONDITIONS_RECORD));
+        } catch (ConditionsObjectException e) {
+            throw new RuntimeException("Problem assigning meta data to record.", e);
+        }
+        FieldValueMap fieldValues = new FieldValueMap();
+        fieldValues.put("run_start", runStart);
+        fieldValues.put("run_end", runEnd);
+        fieldValues.put("table_name", tableName);
+        fieldValues.put("name", name);
+        fieldValues.put("collection_id", collectionId);
+        fieldValues.put("created_by", createdBy);
+        if (tag != null) {
+            fieldValues.put("tag", tag);
+        }
+        if (notes != null) {
+            fieldValues.put("notes", notes);
+        }
+        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);
+        }
+    }
+
+}

Modified: java/trunk/conditions/src/main/java/org/hps/conditions/cli/CommandLineTool.java
 =============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/cli/CommandLineTool.java	(original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/cli/CommandLineTool.java	Thu Nov 13 11:52:01 2014
@@ -16,9 +16,7 @@
 /**
  * <p>
  * This class is a command-line tool for performing commands on the conditions
- * database. It has sub-commands much like the cvs or svn clients. The only
- * current implemented command is 'load' to import text files, but more will be
- * added.
+ * database. It has sub-commands much like the cvs or svn clients. 
  * <p>
  * Command line options allow a custom connection properties file or XML
  * configuration to be supplied by the user which will override the default.
@@ -133,6 +131,7 @@
         cli.options.addOption(new Option("x", true, "Set the conditions database XML configuration file"));
         cli.registerCommand(new LoadCommand());
         cli.registerCommand(new PrintCommand());
+        cli.registerCommand(new AddCommand());
         return cli;
     }