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(); + } +}