Print

Print


Author: [log in to unmask]
Date: Mon Nov 10 18:56:56 2014
New Revision: 1493

Log:
First implementation of print command for CLI.

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

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	Mon Nov 10 18:56:56 2014
@@ -80,6 +80,7 @@
             command.execute(commandArguments);
         } catch (Exception e) {
             e.printStackTrace();
+            System.exit(1);
         } finally {
             conditionsManager.closeConnection();
         }
@@ -96,11 +97,7 @@
             if (verbose)
                 System.out.println("using connection properties file " + connectionPropertiesFile.getPath());
             conditionsManager.setConnectionProperties(connectionPropertiesFile);
-        } else {
-            if (verbose)
-                System.out.println("using connection resource " + CONNECTION_PROPERTIES_RESOURCE);
-            conditionsManager.setConnectionResource(CONNECTION_PROPERTIES_RESOURCE);
-        }
+        } 
         if (commandLine.hasOption("x")) {
             File xmlConfigFile = new File(commandLine.getOptionValue("x"));
             conditionsManager.configure(xmlConfigFile);
@@ -111,7 +108,6 @@
                 System.out.println("using XML config resource " + XML_CONFIG_RESOURCE);
             conditionsManager.configure(XML_CONFIG_RESOURCE);
         }
-        conditionsManager.register();
         conditionsManager.openConnection();
     }
 
@@ -142,6 +138,7 @@
         cli.options.addOption(new Option("p", true, "Set the connection properties file"));
         cli.options.addOption(new Option("x", true, "Set the conditions database XML configuration file"));
         cli.registerCommand(new LoadCommand());
+        cli.registerCommand(new PrintCommand());
         return cli;
     }
 

Added: java/trunk/conditions/src/main/java/org/hps/conditions/cli/PrintCommand.java
 =============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/cli/PrintCommand.java	(added)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/cli/PrintCommand.java	Mon Nov 10 18:56:56 2014
@@ -0,0 +1,112 @@
+package org.hps.conditions.cli;
+
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.PrintStream;
+
+import org.apache.commons.cli.Option;
+import org.hps.conditions.ConditionsObject;
+import org.hps.conditions.ConditionsObjectCollection;
+import org.hps.conditions.ConditionsRecord;
+import org.hps.conditions.ConditionsRecord.ConditionsRecordCollection;
+import org.hps.conditions.ConditionsSeries;
+import org.hps.conditions.DatabaseConditionsManager;
+import org.hps.conditions.TableMetaData;
+import org.lcsim.conditions.ConditionsManager.ConditionsNotFoundException;
+
+/**
+ * This sub-command of the conditions CLI prints conditions table data to
+ * the console file or optionally writes it to an output file.
+ * 
+ * @author Jeremy McCormick <[log in to unmask]>
+ */
+public class PrintCommand extends AbstractCommand {
+
+    private static int DEFAULT_RUN_NUMBER = 0;
+    private static String DEFAULT_DETECTOR_NAME = "HPS-Proposal2014-v8-6pt6";
+    
+    PrintCommand() {
+        super("print", "Print the table data for a conditions set");
+        this.options.addOption(new Option("t", true, "Set the conditions set key"));
+        this.options.addOption(new Option("r", true, "Set the run number"));
+        this.options.addOption(new Option("d", true, "Set the detector name"));
+        this.options.addOption(new Option("f", true, "Write output to a file"));
+    }
+    
+    void execute(String[] arguments) {
+        super.execute(arguments);
+        
+        DatabaseConditionsManager conditionsManager = DatabaseConditionsManager.getInstance();
+        
+        String conditionsKey = null;
+        if (this.commandLine.hasOption("t")) {
+            conditionsKey = this.commandLine.getOptionValue("t");
+        } else {
+            this.printUsage();
+            System.exit(1);
+        }
+        
+        String detectorName = DEFAULT_DETECTOR_NAME;
+        if (this.commandLine.hasOption("d")) {
+            detectorName = this.commandLine.getOptionValue("d");
+        }
+        
+        int runNumber = DEFAULT_RUN_NUMBER;
+        if (this.commandLine.hasOption("r")) {
+            runNumber = Integer.parseInt(this.commandLine.getOptionValue("r"));
+        }
+        
+        File outputFile = null;
+        if (this.commandLine.hasOption("f")) {
+            outputFile = new File(commandLine.getOptionValue("f"));
+            if (outputFile.exists()) {
+                System.err.println("Specified output file already exists.");
+                System.exit(1);
+            }
+        }
+        
+        try {
+            conditionsManager.setDetector(detectorName, runNumber);
+        } catch (ConditionsNotFoundException e) {
+            throw new RuntimeException(e);
+        }
+                
+        ConditionsRecordCollection conditionsRecords = conditionsManager.findConditionsRecords(conditionsKey);
+        for (ConditionsRecord conditionsRecord : conditionsRecords) {
+            System.out.println(conditionsRecord.toString());
+        }
+                
+        ConditionsSeries series = conditionsManager.getConditionsSeries(conditionsKey);
+ 
+        PrintStream ps = System.out;
+        if (outputFile != null) {
+            try {
+                ps = new PrintStream(new BufferedOutputStream(new FileOutputStream(outputFile, false)));
+            } catch (FileNotFoundException e) {
+                throw new RuntimeException(e);
+            }
+        }
+        
+        TableMetaData tableMetaData = conditionsManager.findTableMetaData(conditionsKey);
+        ps.print("id");
+        ps.print(' ');
+        String[] fieldNames = tableMetaData.getFieldNames();
+        for (String columnName : fieldNames) {
+            ps.print(columnName);
+            ps.print(' ');
+        }
+        ps.println();
+        
+        for (ConditionsObjectCollection collection : series.getCollections()) {
+            for (Object object : collection.getObjects()) {
+                //ConditionsObject conditionsObject = (ConditionsObject) object;
+                ps.print(object.toString());
+                ps.println();
+            }
+        }
+        ps.flush();
+        ps.close();
+    }
+}