Author: [log in to unmask] Date: Fri Apr 17 14:45:28 2015 New Revision: 2741 Log: Change print outs to use logger. HPSJAVA-484 Modified: java/trunk/conditions/src/main/java/org/hps/conditions/cli/AddCommand.java java/trunk/conditions/src/main/java/org/hps/conditions/cli/CommandLineTool.java java/trunk/conditions/src/main/java/org/hps/conditions/cli/LoadCommand.java java/trunk/conditions/src/main/java/org/hps/conditions/cli/PrintCommand.java java/trunk/conditions/src/main/java/org/hps/conditions/cli/TagCommand.java Modified: java/trunk/conditions/src/main/java/org/hps/conditions/cli/AddCommand.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/cli/AddCommand.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/cli/AddCommand.java Fri Apr 17 14:45:28 2015 @@ -1,7 +1,8 @@ package org.hps.conditions.cli; -import java.io.PrintStream; import java.util.Date; +import java.util.logging.Level; +import java.util.logging.Logger; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.Option; @@ -10,6 +11,7 @@ import org.hps.conditions.api.ConditionsRecord; import org.hps.conditions.api.FieldValueMap; import org.hps.conditions.database.DatabaseConditionsManager; +import org.lcsim.util.log.LogUtil; /** * This is a command for the conditions CLI that will add a conditions record, making a conditions set with a particular @@ -20,9 +22,9 @@ public class AddCommand extends AbstractCommand { /** - * For printing out messages. + * Setup logger. */ - private final PrintStream ps = System.out; + private static final Logger LOGGER = LogUtil.create(AddCommand.class); /** * Define command line options. @@ -50,10 +52,46 @@ } /** + * Create a conditions record. + * + * @param runStart the run start + * @param runEnd the run end + * @param tableName the table name + * @param name the key name + * @param collectionId the collection ID + * @param createdBy the user name + * @param tag the conditions tag + * @param notes the text notes about the collection + * @return the new conditions record + */ + // FIXME: Too many method parameters (max 7 is recommended). + private ConditionsRecord createConditionsRecord(final int runStart, final int runEnd, final String tableName, + final String name, final int collectionId, final String createdBy, final String tag, final String notes) { + final ConditionsRecord conditionsRecord = new ConditionsRecord(); + final 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()); + return conditionsRecord; + } + + /** * Execute the command with the given arguments. * * @param arguments the command line arguments */ + @Override final void execute(final String[] arguments) { final CommandLine commandLine = parse(arguments); @@ -124,45 +162,10 @@ } conditionsRecord.insert(); manager.closeConnection(createdConnection); - } catch (ConditionsObjectException e) { + } catch (final ConditionsObjectException e) { + LOGGER.log(Level.SEVERE, "Error adding conditions record", e); throw new RuntimeException("An error occurred while adding a conditions record.", e); } - ps.println("successfully added conditions record ..."); - ps.println(conditionsRecord); - } - - /** - * Create a conditions record. - * - * @param runStart the run start - * @param runEnd the run end - * @param tableName the table name - * @param name the key name - * @param collectionId the collection ID - * @param createdBy the user name - * @param tag the conditions tag - * @param notes the text notes about the collection - * @return the new conditions record - */ - // FIXME: Too many method parameters (max 7 is recommended). - private ConditionsRecord createConditionsRecord(final int runStart, final int runEnd, final String tableName, - final String name, final int collectionId, final String createdBy, final String tag, final String notes) { - final ConditionsRecord conditionsRecord = new ConditionsRecord(); - final 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()); - return conditionsRecord; + LOGGER.info("successfully added conditions record ..." + '\n' + conditionsRecord); } } 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 Fri Apr 17 14:45:28 2015 @@ -14,7 +14,6 @@ import org.apache.commons.cli.PosixParser; import org.hps.conditions.database.DatabaseConditionsManager; import org.lcsim.conditions.ConditionsManager.ConditionsNotFoundException; -import org.lcsim.util.log.DefaultLogFormatter; import org.lcsim.util.log.LogUtil; /** @@ -26,18 +25,16 @@ * * @author <a href="mailto:[log in to unmask]">Jeremy McCormick</a> */ -// FIXME: Print outs should use conditions manager's log settings and not boolean verbose flag. public class CommandLineTool { /** * Setup logging. */ - private static final Logger LOGGER = LogUtil.create(CommandLineTool.class.getSimpleName(), - new DefaultLogFormatter(), Level.WARNING); + private static final Logger LOGGER = LogUtil.create(CommandLineTool.class); /** * Create a basic instance of this class. - * + * * @return the instance of this class */ private static CommandLineTool create() { @@ -112,7 +109,7 @@ /** * Register a sub-command handler. - * + * * @param command the sub-command handler */ private void registerCommand(final AbstractCommand command) { Modified: java/trunk/conditions/src/main/java/org/hps/conditions/cli/LoadCommand.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/cli/LoadCommand.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/cli/LoadCommand.java Fri Apr 17 14:45:28 2015 @@ -7,12 +7,14 @@ import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; +import java.util.logging.Logger; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.Option; import org.apache.commons.cli.Options; import org.hps.conditions.database.DatabaseConditionsManager; import org.hps.conditions.database.QueryBuilder; +import org.lcsim.util.log.LogUtil; /** * This is a sub-command to add conditions data using an input text file. The file should be ASCII text that is tab or @@ -21,6 +23,7 @@ * exist already in the table. Otherwise, the command will fail. By default, the next collection ID will be found by the * conditions manager. * <p> + * * <pre> * java -cp hps-distribution-bin.jar org.hps.conditions.cli.CommandLineTool \ * -p conditions_dev_local.properties load -t scratch_svt_gains -f ./scratch_svt_gains.txt -c 1 @@ -29,6 +32,11 @@ * @author <a href="mailto:[log in to unmask]">Jeremy McCormick</a> */ class LoadCommand extends AbstractCommand { + + /** + * Setup logger. + */ + private static final Logger LOGGER = LogUtil.create(LoadCommand.class); /** * Define command options. @@ -62,7 +70,7 @@ if (fileName == null) { throw new IllegalArgumentException("Missing file argument."); } - if (!(new File(fileName)).exists()) { + if (!new File(fileName).exists()) { throw new IllegalArgumentException("Input file does not exist: " + fileName); } @@ -95,24 +103,24 @@ final String insertSql = QueryBuilder.buildInsert(tableName, collectionID, columnNames, rows); if (getVerbose()) { - System.out.println(insertSql); + LOGGER.info(insertSql); } // FIXME: This call should go through an object API like ConditionsObjectCollection.insert rather than the // manager directly. final List<Integer> ids = conditionsManager.updateQuery(insertSql); - System.out.println("Inserted " + ids.size() + " new rows into table " + tableName + " with collection_id " + LOGGER.info("Inserted " + ids.size() + " new rows into table " + tableName + " with collection_id " + collectionID); conditionsManager.closeConnection(openedConnection); } /** * Parse an input text file and add column names and row data to the input lists. + * * @param fileName the name of the text file * @param columnNames the list of columns (modified by this method) * @param rows the list of rows (modified by this method) */ - private final void parseFile(final String fileName, final List<String> columnNames, - final List<List<String>> rows) { + private final void parseFile(final String fileName, final List<String> columnNames, final List<List<String>> rows) { final File inputFile = new File(fileName); BufferedReader reader = null; try { @@ -134,13 +142,13 @@ } rows.add(row); } - } catch (Exception e) { + } catch (final Exception e) { throw new RuntimeException(e); } finally { if (reader != null) { try { reader.close(); - } catch (IOException e) { + } catch (final IOException e) { e.printStackTrace(); } } Modified: java/trunk/conditions/src/main/java/org/hps/conditions/cli/PrintCommand.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/cli/PrintCommand.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/cli/PrintCommand.java Fri Apr 17 14:45:28 2015 @@ -8,6 +8,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Set; +import java.util.logging.Logger; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.Option; @@ -17,6 +18,7 @@ import org.hps.conditions.api.ConditionsRecord.ConditionsRecordCollection; import org.hps.conditions.database.DatabaseConditionsManager; import org.hps.conditions.database.TableMetaData; +import org.lcsim.util.log.LogUtil; /** * This sub-command of the conditions CLI prints conditions conditions table data by run number to the console or @@ -27,34 +29,15 @@ class PrintCommand extends AbstractCommand { /** - * Print stream for output. - */ - private PrintStream ps = System.out; - - /** - * Flag to print row IDs. - */ - private boolean printIDs = false; - - /** - * Flag to print out column headers. - */ - private boolean printHeaders = true; - - /** - * The field delimiter for print output. - */ - private char fieldDelimiter = ' '; - - /** - * Output file if printing to a file. - */ - private File outputFile; - + * Setup logger. + */ + private static final Logger LOGGER = LogUtil.create(PrintCommand.class); + /** * Defines command options. */ static Options options = new Options(); + static { options.addOption(new Option("h", false, "Show help for print command")); options.addOption(new Option("t", true, "Set the table name")); @@ -66,6 +49,31 @@ } /** + * The field delimiter for print output. + */ + private char fieldDelimiter = ' '; + + /** + * Output file if printing to a file. + */ + private File outputFile; + + /** + * Flag to print out column headers. + */ + private boolean printHeaders = true; + + /** + * Flag to print row IDs. + */ + private boolean printIDs = false; + + /** + * This is the <code>PrintStream</code> for printing the collections to the console or a file. + */ + private PrintStream ps = System.out; + + /** * Class constructor. */ PrintCommand() { @@ -77,6 +85,7 @@ * * @param arguments the command line arguments */ + @Override final void execute(final String[] arguments) { final CommandLine commandLine = parse(arguments); @@ -107,27 +116,27 @@ if (new File(path).exists()) { throw new IllegalArgumentException("File already exists: " + path); } - outputFile = new File(path); + this.outputFile = new File(path); try { - ps = new PrintStream(new BufferedOutputStream(new FileOutputStream(outputFile, false))); - } catch (FileNotFoundException e) { + this.ps = new PrintStream(new BufferedOutputStream(new FileOutputStream(this.outputFile, false))); + } catch (final FileNotFoundException e) { throw new IllegalArgumentException(e); } } // Print IDs in the output. if (commandLine.hasOption("i")) { - printIDs = true; + this.printIDs = true; } // Print header info. Option turns this off. if (commandLine.hasOption("h")) { - printHeaders = false; + this.printHeaders = false; } // Use tabs instead of spaces for field delimiter. if (commandLine.hasOption("d")) { - fieldDelimiter = '\t'; + this.fieldDelimiter = '\t'; } // List of conditions records to print. @@ -135,11 +144,11 @@ // Did the user specify a table to use? if (userConditionsKey == null) { - System.out.println("printing all conditions"); + LOGGER.info("printing all conditions"); // Use all table names if there was not one specified. conditionsRecords.addAll(conditionsManager.getConditionsRecords()); } else { - System.out.println("printing conditions with name: " + userConditionsKey); + LOGGER.info("printing conditions with name: " + userConditionsKey); // Get records only for the user specified table name. conditionsRecords.addAll(conditionsManager.findConditionsRecords(userConditionsKey)); } @@ -152,12 +161,77 @@ // Print the records and the data. printConditionsRecords(conditionsKeys); - ps.flush(); - ps.close(); - - if (outputFile != null) { - System.out.println("wrote collection data to file " + outputFile.getPath()); - } + this.ps.flush(); + this.ps.close(); + + if (this.outputFile != null) { + LOGGER.info("wrote collection data to file " + this.outputFile.getPath()); + } + } + + /** + * Print a single collection. + * + * @param collection the collection to print + */ + private void printCollection(final ConditionsObjectCollection<?> collection) { + final StringBuffer buffer = new StringBuffer(); + for (final Object object : collection) { + for (final String columnName : collection.getTableMetaData().getFieldNames()) { + buffer.append(((ConditionsObject) object).getFieldValue(columnName)); + buffer.append(this.fieldDelimiter); + } + buffer.setLength(buffer.length() - 1); + buffer.append('\n'); + } + buffer.setLength(buffer.length() - 1); + this.ps.print(buffer.toString()); + this.ps.flush(); + } + + /** + * Print the header for a collection. This is printed to the log rather than the <code>PrintStream</code>. + * + * @param collection the collection + */ + private void printCollectionHeader(final ConditionsObjectCollection<?> collection) { + LOGGER.info('\n' + "--------------------------------------" + '\n' + collection.getConditionsRecord() + + "--------------------------------------"); + } + + /** + * Print the list of collections. + * + * @param collectionList the list of collections + */ + private void printCollections(final List<ConditionsObjectCollection<?>> collectionList) { + // Loop over all the collections and print them. + for (final ConditionsObjectCollection<?> collection : collectionList) { + if (this.printHeaders) { + printCollectionHeader(collection); + } + printColumnNames(collection.getTableMetaData()); + printCollection(collection); + this.ps.println(); + } + this.ps.flush(); + } + + /** + * Print the column names for a table. + * + * @param tableMetaData the table meta data + */ + private void printColumnNames(final TableMetaData tableMetaData) { + if (this.printIDs) { + this.ps.print("id"); + this.ps.print(this.fieldDelimiter); + } + for (final String columnName : tableMetaData.getFieldNames()) { + this.ps.print(columnName); + this.ps.print(this.fieldDelimiter); + } + this.ps.println(); } /** @@ -169,13 +243,14 @@ final DatabaseConditionsManager conditionsManager = DatabaseConditionsManager.getInstance(); - System.out.print("printing conditions sets: "); - for (String conditionsKey : conditionsKeys) { - System.out.print(conditionsKey + " "); - } - System.out.println(); + final StringBuffer sb = new StringBuffer(); + for (final String conditionsKey : conditionsKeys) { + sb.append(conditionsKey + " "); + } + LOGGER.info("printing conditions sets: " + sb.toString()); + // Loop over the conditions keys from the conditions records. - for (String conditionsKey : conditionsKeys) { + for (final String conditionsKey : conditionsKeys) { // The list of collections to print. final List<ConditionsObjectCollection<?>> collectionList = new ArrayList<ConditionsObjectCollection<?>>(); @@ -199,68 +274,4 @@ printCollections(collectionList); } } - - /** - * Print the list of collections. - * @param collectionList the list of collections - */ - private void printCollections(final List<ConditionsObjectCollection<?>> collectionList) { - // Loop over all the collections and print them. - for (ConditionsObjectCollection<?> collection : collectionList) { - if (printHeaders) { - printCollectionHeader(collection); - } - printColumnNames(collection.getTableMetaData()); - printCollection(collection); - System.out.println(); - } - ps.flush(); - } - - /** - * Print a single collection. - * @param collection the collection to print - */ - private void printCollection(final ConditionsObjectCollection<?> collection) { - final StringBuffer buffer = new StringBuffer(); - for (Object object : collection) { - for (String columnName : collection.getTableMetaData().getFieldNames()) { - buffer.append(((ConditionsObject) object).getFieldValue(columnName)); - buffer.append(fieldDelimiter); - } - buffer.setLength(buffer.length() - 1); - buffer.append('\n'); - } - buffer.setLength(buffer.length() - 1); - ps.print(buffer.toString()); - ps.flush(); - } - - /** - * Print the header for a collection. - * @param collection the collection - */ - private void printCollectionHeader(final ConditionsObjectCollection<?> collection) { - System.out.println("--------------------------------------"); - System.out.print(collection.getConditionsRecord()); - System.out.println("--------------------------------------"); - System.out.println(); - System.out.flush(); - } - - /** - * Print the column names for a table. - * @param tableMetaData the table meta data - */ - private void printColumnNames(final TableMetaData tableMetaData) { - if (printIDs) { - ps.print("id"); - ps.print(fieldDelimiter); - } - for (String columnName : tableMetaData.getFieldNames()) { - ps.print(columnName); - ps.print(fieldDelimiter); - } - ps.println(); - } } Modified: java/trunk/conditions/src/main/java/org/hps/conditions/cli/TagCommand.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/cli/TagCommand.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/cli/TagCommand.java Fri Apr 17 14:45:28 2015 @@ -5,6 +5,7 @@ import java.util.LinkedHashSet; import java.util.Set; import java.util.logging.Level; +import java.util.logging.Logger; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.Option; @@ -16,6 +17,7 @@ import org.hps.conditions.database.DatabaseConditionsManager; import org.hps.conditions.database.TableMetaData; import org.lcsim.conditions.ConditionsManager.ConditionsNotFoundException; +import org.lcsim.util.log.LogUtil; /** * Create a conditions system tag. @@ -28,6 +30,11 @@ * The default detector name (dummy detector). */ private static final String DETECTOR_NAME = "HPS-dummy-detector"; + + /** + * Setup logger. + */ + private static final Logger LOGGER = LogUtil.create(TagCommand.class); /** * Defines command options. @@ -135,15 +142,15 @@ } // Print out all the records that were found. - System.out.println("found ConditionsRecords for tag " + newTag + " ..."); + LOGGER.info("found ConditionsRecords for tag " + newTag + " ..."); for (final ConditionsRecord record : tagRecords) { - System.out.println(record.toString()); + LOGGER.info(record.toString()); } // Prompt user to verify with console input. boolean makeTag = true; if (!dontPrompt) { - System.out.println("Create conditions tag " + newTag + " in database? (Y/N)"); + LOGGER.info("Create conditions tag " + newTag + " in database? (Y/N)"); final String line = System.console().readLine(); if (!line.equals("Y")) { makeTag = false;