Author: [log in to unmask]
Date: Mon Mar 9 14:24:55 2015
New Revision: 2379
Log:
Command line tool used to load SVT conditions into the conditions database.
Added:
java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtConditionsLoader.java (with props)
Added: java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtConditionsLoader.java
=============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtConditionsLoader.java (added)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtConditionsLoader.java Mon Mar 9 14:24:55 2015
@@ -0,0 +1,161 @@
+package org.hps.conditions.svt;
+
+import java.io.File;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.CommandLineParser;
+import org.apache.commons.cli.Option;
+import org.apache.commons.cli.Options;
+import org.apache.commons.cli.ParseException;
+import org.apache.commons.cli.PosixParser;
+
+import org.lcsim.conditions.ConditionsManager.ConditionsNotFoundException;
+import org.lcsim.util.log.DefaultLogFormatter;
+import org.lcsim.util.log.LogUtil;
+
+import org.hps.conditions.api.ConditionsRecord;
+import org.hps.conditions.database.DatabaseConditionsManager;
+import org.hps.conditions.database.TableMetaData;
+import org.hps.conditions.svt.SvtConditionsReader;
+import org.hps.conditions.svt.SvtDaqMapping.SvtDaqMappingCollection;
+
+/**
+ * Command line tool used to load SVT conditions into the conditions database.
+ *
+ * @author Omar Moreno <[log in to unmask]>
+ */
+public class SvtConditionsLoader {
+
+ // Initialize the logger
+ private static Logger logger = LogUtil.create(SvtConditionsLoader.class.getSimpleName(),
+ new DefaultLogFormatter(), Level.INFO);
+
+ //-----------------//
+ //--- Constants ---//
+ //-----------------//
+
+ // Default detector
+ public static final String DETECTOR = "HPS-Proposal2014-v9-2pt2";
+
+ // Table names
+ public static final String DAQ_MAP_TABLE_NAME = "svt_daq_map";
+
+ //-----------------//
+ //-----------------//
+
+ public static void main(String[] args) {
+
+ // Set up the command line options
+ Options options = setupCommandLineOptions();
+
+ // Parse the command line arguments
+ CommandLineParser parser = new PosixParser();
+ CommandLine commandLine = null;
+ try {
+ commandLine = parser.parse(options, args);
+ } catch (ParseException e){
+ throw new RuntimeException("Unable to parse command line arguments.", e);
+ }
+
+ // Get the run number. If a run number hasn't been set, warn the user
+ // and exit.
+ if (!commandLine.hasOption("r")) {
+ System.out.println("\nPlease specify a run number to associate with the conditions set.\n");
+ return;
+ }
+ int runNumber = Integer.valueOf(commandLine.getOptionValue("r"));
+ logger.info("Run number set to " + runNumber);
+
+ // Initialize the conditions system and load the conditions onto the
+ // detector object
+ try {
+
+ // If a user has specified the connection properties, set them,
+ // otherwise use the default values
+ if (commandLine.hasOption("p")) {
+ DatabaseConditionsManager.getInstance()
+ .setConnectionProperties(new File(commandLine.getOptionValue("p")));
+ }
+ DatabaseConditionsManager.getInstance()
+ .setDetector(SvtConditionsLoader.DETECTOR, runNumber);
+ } catch(ConditionsNotFoundException e) {
+ throw new RuntimeException("Could not initialize the conditions system.", e);
+ }
+
+ // Instantiate the SVT conditions reader
+ SvtConditionsReader reader;
+ try {
+ reader = new SvtConditionsReader();
+ } catch (Exception e) {
+ throw new RuntimeException("Couldn't open SvtConditionsReader.", e);
+ }
+
+ // If a calibrations file has been specified, parse it and load them
+ // to the conditions database.
+ if (commandLine.hasOption("c")) {
+ File inputFile = new File(commandLine.getOptionValue("c"));
+ try {
+ reader.parseCalibrations(inputFile);
+ } catch (Exception e) {
+ throw new RuntimeException("Couldn't parse calibration file.", e);
+ }
+ }
+
+ // If a DAQ map file has been specified, parse it and load them to the
+ // conditions database.
+ if (commandLine.hasOption("d")) {
+ File daqMapFile = new File(commandLine.getOptionValue("d"));
+ logger.info("Loading DAQ map from file " + daqMapFile.getAbsolutePath());
+ try {
+
+ // Parse the DAQ map file
+ SvtDaqMappingCollection daqMapping = reader.parseDaqMap(daqMapFile);
+
+ // Set the table meta data
+ TableMetaData tableMetaData = DatabaseConditionsManager.getInstance().findTableMetaData(SvtConditionsLoader.DAQ_MAP_TABLE_NAME);
+ daqMapping.setTableMetaData(tableMetaData);
+
+ // Set the collection ID
+ int collectionID = DatabaseConditionsManager.getInstance().getNextCollectionID(SvtConditionsLoader.DAQ_MAP_TABLE_NAME);
+ daqMapping.setCollectionId(collectionID);
+ logger.info("Using collection ID " + collectionID);
+
+ // Load the DAQ map
+ daqMapping.insert();
+ logger.info("DAQ map has been loaded successfully");
+ logger.fine(daqMapping.toString());
+
+ // Create a conditions record associated with the set of
+ // conditions that were just loaded
+ ConditionsRecord conditionsRecord = new ConditionsRecord(
+ daqMapping.getCollectionId(),
+ runNumber,
+ 99999,
+ SvtConditionsLoader.DAQ_MAP_TABLE_NAME,
+ SvtConditionsLoader.DAQ_MAP_TABLE_NAME,
+ "Engineering run DAQ map. Loaded using SvtConditionsLoader.",
+ "eng_run");
+ conditionsRecord.insert();
+
+ } catch (Exception e) {
+ throw new RuntimeException("Couldn't parse DAQ map file.", e);
+ }
+ }
+ }
+
+ /**
+ * Method used to setup all command line options.
+ *
+ * @return a set of options
+ */
+ private static Options setupCommandLineOptions() {
+ Options options = new Options();
+ options.addOption(new Option("r", true, "Run number"));
+ options.addOption(new Option("p", true, "Path to properties file"));
+ options.addOption(new Option("c", true, "Calibration file"));
+ options.addOption(new Option("d", true, "DAQ map file"));
+ return options;
+ }
+}
|