LISTSERV mailing list manager LISTSERV 16.5

Help for HPS-SVN Archives


HPS-SVN Archives

HPS-SVN Archives


HPS-SVN@LISTSERV.SLAC.STANFORD.EDU


View:

Message:

[

First

|

Previous

|

Next

|

Last

]

By Topic:

[

First

|

Previous

|

Next

|

Last

]

By Author:

[

First

|

Previous

|

Next

|

Last

]

Font:

Proportional Font

LISTSERV Archives

LISTSERV Archives

HPS-SVN Home

HPS-SVN Home

HPS-SVN  September 2015

HPS-SVN September 2015

Subject:

r3734 - /java/trunk/run-database/src/main/java/org/hps/run/database/RunDatabaseCommandLine.java

From:

[log in to unmask]

Reply-To:

Notification of commits to the hps svn repository <[log in to unmask]>

Date:

Tue, 29 Sep 2015 20:09:33 -0000

Content-Type:

text/plain

Parts/Attachments:

Parts/Attachments

text/plain (480 lines)

Author: [log in to unmask]
Date: Tue Sep 29 13:09:31 2015
New Revision: 3734

Log:
Apply checkstyle and make sure help is shown when no arguments are passed.

Modified:
    java/trunk/run-database/src/main/java/org/hps/run/database/RunDatabaseCommandLine.java

Modified: java/trunk/run-database/src/main/java/org/hps/run/database/RunDatabaseCommandLine.java
 =============================================================================
--- java/trunk/run-database/src/main/java/org/hps/run/database/RunDatabaseCommandLine.java	(original)
+++ java/trunk/run-database/src/main/java/org/hps/run/database/RunDatabaseCommandLine.java	Tue Sep 29 13:09:31 2015
@@ -27,8 +27,8 @@
 import org.lcsim.util.log.LogUtil;
 
 /**
- * Command line tool for updating the run database from the EVIO files in the data catalog.
- * 
+ * Command line tool for updating the run database from EVIO files registered in the data catalog.
+ *
  * @author Jeremy McCormick, SLAC
  */
 public class RunDatabaseCommandLine {
@@ -37,37 +37,35 @@
      * Set of features supported by the tool.
      */
     static enum Feature {
+        /**
+         * Insert EPICS data.
+         */
+        EPICS,
+        /**
+         * Insert scaler data.
+         */
+        SCALERS,
+        /**
+         * Insert run summary.
+         */
         SUMMARY,
-        EPICS,
-        SCALERS,
+        /**
+         * Insert trigger config.
+         */
         TRIGGER_CONFIG
     }
-    
+
     /**
      * Setup the logger.
      */
-    private static final Logger LOGGER = LogUtil.create(RunDatabaseCommandLine.class, new DefaultLogFormatter(), Level.ALL);
-    
+    private static final Logger LOGGER = LogUtil.create(RunDatabaseCommandLine.class, new DefaultLogFormatter(),
+            Level.ALL);
+
     /**
      * Command line options for the crawler.
      */
     private static final Options OPTIONS = new Options();
-    
-    /**
-     * The run manager for interacting with the run db.
-     */
-    private RunManager runManager;
-    
-    /**
-     * The set of enabled features.
-     */
-    private Set<Feature> features = new HashSet<Feature>();
-    
-    /**
-     * Allow updating of the database for existing runs.
-     */
-    private boolean allowUpdates = false;
-    
+
     /**
      * Statically define the command options.
      */
@@ -78,33 +76,130 @@
         OPTIONS.addOption("r", "run", true, "run to update");
         OPTIONS.addOption("u", "update", false, "allow updating existing run in the database");
     }
-    
+
     /**
      * Run the program from the command line.
-     * 
+     *
      * @param args the command line arguments
      */
-    public static void main(String args[]) {
+    public static void main(final String args[]) {
         new RunDatabaseCommandLine().parse(args).run();
-    }      
-    
+    }
+
+    /**
+     * Allow updating of the database for existing runs.
+     */
+    private boolean allowUpdates = false;
+
+    /**
+     * The set of enabled features.
+     */
+    private final Set<Feature> features = new HashSet<Feature>();
+
+    /**
+     * The run manager for interacting with the run db.
+     */
+    private RunManager runManager;
+
+    /**
+     * Create a run processor from the current configuration.
+     *
+     * @return the run processor
+     */
+    private RunProcessor createEvioRunProcessor(final RunSummaryImpl runSummary, final List<File> files) {
+
+        final RunProcessor runProcessor = new RunProcessor(runSummary, files);
+
+        if (features.contains(Feature.EPICS)) {
+            runProcessor.addEpicsProcessor();
+        }
+        if (features.contains(Feature.SCALERS)) {
+            runProcessor.addScalerProcessor();
+        }
+        if (features.contains(Feature.TRIGGER_CONFIG)) {
+            runProcessor.addTriggerTimeProcessor();
+        }
+
+        return runProcessor;
+    }
+
+    /**
+     * Get the list of EVIO files for the run.
+     *
+     * @param run the run number
+     * @return the list of EVIO files from the run
+     */
+    private Map<File, Dataset> getEvioFiles(final int run) {
+        final DatacatClient datacatClient = new DatacatClientFactory().createClient();
+        final Set<String> metadata = new HashSet<String>();
+        final Map<File, Dataset> files = new HashMap<File, Dataset>();
+        metadata.add("runMin");
+        metadata.add("eventCount");
+        metadata.add("fileNumber");
+        metadata.add("endTimestamp");
+        metadata.add("startTimestamp");
+        metadata.add("hasEnd");
+        metadata.add("hasPrestart");
+        final List<Dataset> datasets = datacatClient.findDatasets("data/raw",
+                "fileFormat eq 'EVIO' AND dataType eq 'RAW' AND runMin eq " + run, metadata);
+        if (datasets.isEmpty()) {
+            throw new IllegalStateException("No EVIO datasets for run " + run + " were found in the data catalog.");
+        }
+        for (final Dataset dataset : datasets) {
+            files.put(new File(dataset.getLocations().get(0).getResource()), dataset);
+        }
+        return files;
+    }
+
+    /**
+     * Insert information for a run into the database.
+     *
+     * @param runManager the run manager for interacting with the run db
+     * @param runSummary the run summary with information about the run
+     */
+    private void insertRun(final RunManager runManager, final RunSummary runSummary) {
+
+        final RunDatabaseDaoFactory runFactory = new RunDatabaseDaoFactory(runManager.getConnection());
+
+        // Add the run summary record.
+        if (this.features.contains(Feature.SUMMARY)) {
+            LOGGER.info("inserting run summary");
+            runFactory.createRunSummaryDao().insertRunSummary(runSummary);
+        }
+
+        if (this.features.contains(Feature.EPICS)) {
+            LOGGER.info("inserting EPICS data");
+            runFactory.createEpicsDataDao().insertEpicsData(runSummary.getEpicsData());
+        }
+
+        if (this.features.contains(Feature.SCALERS)) {
+            LOGGER.info("inserting scaler data");
+            runFactory.createScalerDataDao().insertScalerData(runSummary.getScalerData(), runManager.getRun());
+        }
+
+        if (this.features.contains(Feature.TRIGGER_CONFIG)) {
+            LOGGER.info("inserting trigger config");
+            runFactory.createTriggerConfigDao().insertTriggerConfig(runSummary.getTriggerConfig(), runManager.getRun());
+        }
+    }
+
     /**
      * Parse command line options and return reference to <code>this</code>.
-     * 
+     *
      * @param args the command line arguments
      * @return reference to this object
      */
-    RunDatabaseCommandLine parse(String args[]) {
+    RunDatabaseCommandLine parse(final String args[]) {
         try {
             final CommandLine cl = new PosixParser().parse(OPTIONS, args);
-            
+
             // Print help and exit.
-            if (cl.hasOption("h")) {
+            if (cl.hasOption("h") || args.length == 0) {
                 final HelpFormatter help = new HelpFormatter();
                 help.printHelp("RunDatabaseCommandLine [options]", "", OPTIONS, "");
                 System.exit(0);
             }
-            
+
             // Database connection properties file.
             if (cl.hasOption("p")) {
                 final String dbPropPath = cl.getOptionValue("p");
@@ -115,14 +210,14 @@
                 }
                 final ConnectionParameters connectionParameters = ConnectionParameters.fromProperties(dbPropFile);
                 LOGGER.config("using " + dbPropPath + " for db connection properties");
-                
+
                 runManager = new RunManager(connectionParameters.createConnection());
-                
+
             } else {
                 // Database connection properties file is required.
                 throw new RuntimeException("Connection properties are required.");
             }
-           
+
             Integer run = null;
             if (cl.hasOption("r")) {
                 run = Integer.parseInt(cl.getOptionValue("r"));
@@ -130,17 +225,17 @@
                 throw new RuntimeException("The run number is required.");
             }
             runManager.setRun(run);
-            
+
             if (cl.hasOption("f")) {
                 // Enable individual features.
-                for (String arg : cl.getOptionValues("f")) {
+                for (final String arg : cl.getOptionValues("f")) {
                     features.add(Feature.valueOf(arg));
                 }
             } else {
                 // By default all features are enabled.
                 features.addAll(Arrays.asList(Feature.values()));
             }
-            for (Feature feature : features) {
+            for (final Feature feature : features) {
                 LOGGER.config("feature " + feature.name() + " is enabled.");
             }
 
@@ -149,149 +244,99 @@
                 this.allowUpdates = true;
                 LOGGER.config("updating or replacing existing run data is enabled");
             }
-            
-        } catch (ParseException e) {
+
+        } catch (final ParseException e) {
             throw new RuntimeException(e);
         }
-                
+
         return this;
     }
-    
+
     /**
      * Run the job to update the information in the run database.
      */
     private void run() {
-        
-        boolean runExists = runManager.runExists();
-        
+
+        LOGGER.info("starting");
+
+        final boolean runExists = runManager.runExists();
+
         // Fail if run exists and updates are not allowed.
         if (runExists && !allowUpdates) {
-            throw new IllegalStateException("The run " + runManager.getRun() + " already exists and updates are not allowed.");
-        }
-       
+            throw new IllegalStateException("The run " + runManager.getRun()
+                    + " already exists and updates are not allowed.");
+        }
+
         // Get the run number configured from command line.
-        int run = runManager.getRun();
-        
+        final int run = runManager.getRun();
+
         // Get the list of EVIO files for the run using a data catalog query.
-        Map<File, Dataset> fileDatasets = getEvioFiles(run);   
-        List<File> files = new ArrayList<File>(fileDatasets.keySet());     
+        final Map<File, Dataset> fileDatasets = this.getEvioFiles(run);
+        final List<File> files = new ArrayList<File>(fileDatasets.keySet());
         EvioFileUtilities.sortBySequence(files);
-        
+
         // Process the run's files to get information.
-        RunSummaryImpl runSummary = new RunSummaryImpl(run);        
-        RunProcessor runProcessor = this.createEvioRunProcessor(runSummary, files);
+        final RunSummaryImpl runSummary = new RunSummaryImpl(run);
+        final RunProcessor runProcessor = this.createEvioRunProcessor(runSummary, files);
         try {
             runProcessor.processRun();
-        } catch (Exception e) {
+        } catch (final Exception e) {
             throw new RuntimeException(e);
         }
 
-        // Set start date.
-        Dataset firstDataset = fileDatasets.get(files.get(0));
-        DatasetMetadata metadata = firstDataset.getMetadata();
-        Date startDate = new Date(metadata.getInteger("startTimestamp"));
-        runSummary.setStartDate(startDate);
-
-        // Set end date.
-        Dataset lastDataset = fileDatasets.get(files.get(files.size() - 1));
-        metadata = lastDataset.getMetadata();
-        Date endDate = new Date(metadata.getInteger("endTimestamp"));
-        runSummary.setEndDate(endDate);
-        runSummary.setEndOkay(metadata.getInteger("hasEnd") == 0 ? false : true);
+        // Set number of files from datacat query.
+        runSummary.setTotalFiles(files.size());
+
+        // Set run start date.
+        this.setStartDate(fileDatasets, files, runSummary);
+
+        // Set run end date.
+        this.setEndDate(fileDatasets, files, runSummary);
 
         // Delete existing run.
         if (runExists) {
             runManager.deleteRun();
         }
-        
+
         // Insert run into database.
-        insertRun(runManager, runSummary);
-        
+        this.insertRun(runManager, runSummary);
+
         // Close the database connection.
         runManager.closeConnection();
-    }
-    
-    /**
-     * Insert information for a run into the database.
-     * 
-     * @param runManager the run manager for interacting with the run db
-     * @param runSummary the run summary with information about the run
-     */
-    private void insertRun(RunManager runManager, RunSummary runSummary) {
-        
-        RunDatabaseDaoFactory runFactory = new RunDatabaseDaoFactory(runManager.getConnection());
-        
-        // Add the run summary record.
-        if (this.features.contains(Feature.SUMMARY)) {
-            runFactory.createRunSummaryDao().insertRunSummary(runSummary);
-        }
-        
-        // Does run exist now?
-        if (runManager.runExists()) {
-        
-            if (this.features.contains(Feature.EPICS)) {
-                runFactory.createEpicsDataDao().insertEpicsData(runSummary.getEpicsData());
-            }
-        
-            if (this.features.contains(Feature.SCALERS)) {
-                runFactory.createScalerDataDao().insertScalerData(runSummary.getScalerData(), runManager.getRun());
-            }
-        
-            if (this.features.contains(Feature.TRIGGER_CONFIG)) {
-                runFactory.createTriggerConfigDao().insertTriggerConfig(runSummary.getTriggerConfig(), runManager.getRun());
-            }
-        } else {
-            // The run summary must be present to update any of the other information in the db.
-            throw new RuntimeException("Run " + runManager.getRun() + " does not exist in the database.");
-        }
-    }
-    
-    /**
-     * Create a run processor from the current configuration.
-     *
-     * @return the run processor
-     */
-    private RunProcessor createEvioRunProcessor(final RunSummaryImpl runSummary, List<File> files) {
-
-        final RunProcessor runProcessor = new RunProcessor(runSummary, files);
-
-        if (features.contains(Feature.EPICS)) {
-            runProcessor.addEpicsProcessor();
-        }
-        if (features.contains(Feature.SCALERS)) {
-            runProcessor.addScalerProcessor();
-        }
-        if (features.contains(Feature.TRIGGER_CONFIG)) {
-            runProcessor.addTriggerTimeProcessor();
-        }
-
-        return runProcessor;
-    }
-
-    /**
-     * Get the list of EVIO files for the run.
-     * 
-     * @param run the run number
-     * @return the list of EVIO files from the run
-     */
-    private Map<File, Dataset> getEvioFiles(int run) {
-        DatacatClient datacatClient = new DatacatClientFactory().createClient();
-        Set<String> metadata = new HashSet<String>();
-        Map<File, Dataset> files = new HashMap<File, Dataset>();
-        metadata.add("runMin");
-        metadata.add("eventCount");
-        metadata.add("fileNumber");
-        metadata.add("endTimestamp");
-        metadata.add("startTimestamp");
-        metadata.add("hasEnd");
-        metadata.add("hasPrestart");
-        List<Dataset> datasets = datacatClient.findDatasets("data/raw", "fileFormat eq 'EVIO' AND dataType eq 'RAW' AND runMin eq " + run, metadata);
-        if (datasets.isEmpty()) {
-            throw new IllegalStateException("No EVIO datasets for run " + run + " were found in the data catalog.");
-        }
-        for (Dataset dataset : datasets) {
-            files.put(new File(dataset.getLocations().get(0).getResource()), dataset);
-        }
-        return files;
+
+        LOGGER.info("done");
+    }
+
+    /**
+     * Set the run end date.
+     *
+     * @param fileDatasets the run's datasets
+     * @param files the run's EVIO files
+     * @param runSummary the run summary
+     */
+    private void setEndDate(final Map<File, Dataset> fileDatasets, final List<File> files,
+            final RunSummaryImpl runSummary) {
+        final Dataset lastDataset = fileDatasets.get(files.get(files.size() - 1));
+        final DatasetMetadata metadata = lastDataset.getMetadata();
+        // System.out.println("endTimestamp: " + metadata.getLong("endTimestamp"));
+        final Date endDate = new Date(metadata.getLong("endTimestamp"));
+        // System.out.println("endDate: " + startDate);
+        runSummary.setEndDate(endDate);
+        runSummary.setEndOkay(metadata.getLong("hasEnd") == 0 ? false : true);
+    }
+
+    /**
+     * Set the run start date.
+     *
+     * @param fileDatasets the run's datasets
+     * @param files the run's EVIO files
+     * @param runSummary the run summary
+     */
+    private void setStartDate(final Map<File, Dataset> fileDatasets, final List<File> files,
+            final RunSummaryImpl runSummary) {
+        final Dataset firstDataset = fileDatasets.get(files.get(0));
+        final DatasetMetadata metadata = firstDataset.getMetadata();
+        final Date startDate = new Date(metadata.getLong("startTimestamp"));
+        runSummary.setStartDate(startDate);
     }
 }

Top of Message | Previous Page | Permalink

Advanced Options


Options

Log In

Log In

Get Password

Get Password


Search Archives

Search Archives


Subscribe or Unsubscribe

Subscribe or Unsubscribe


Archives

November 2017
August 2017
July 2017
January 2017
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
December 2013
November 2013

ATOM RSS1 RSS2



LISTSERV.SLAC.STANFORD.EDU

Secured by F-Secure Anti-Virus CataList Email List Search Powered by the LISTSERV Email List Manager

Privacy Notice, Security Notice and Terms of Use