Author: [log in to unmask] Date: Thu Aug 27 18:40:34 2015 New Revision: 3427 Log: More updates and changes for run db work. Added: java/trunk/record-util/src/main/java/org/hps/record/triggerbank/TriggerConfig.java - copied, changed from r3424, java/trunk/record-util/src/main/java/org/hps/record/triggerbank/TriggerConfigInt.java Removed: java/trunk/record-util/src/main/java/org/hps/record/triggerbank/TriggerConfigInt.java Modified: java/trunk/record-util/src/main/java/org/hps/record/evio/crawler/Crawler.java java/trunk/record-util/src/main/java/org/hps/record/evio/crawler/RunProcessor.java java/trunk/record-util/src/main/java/org/hps/record/triggerbank/TiTimeOffsetEvioProcessor.java java/trunk/record-util/src/main/java/org/hps/record/triggerbank/TriggerConfigVariable.java Modified: java/trunk/record-util/src/main/java/org/hps/record/evio/crawler/Crawler.java ============================================================================= --- java/trunk/record-util/src/main/java/org/hps/record/evio/crawler/Crawler.java (original) +++ java/trunk/record-util/src/main/java/org/hps/record/evio/crawler/Crawler.java Thu Aug 27 18:40:34 2015 @@ -21,8 +21,8 @@ import org.apache.commons.cli.ParseException; import org.apache.commons.cli.PosixParser; import org.hps.conditions.database.ConnectionParameters; +import org.hps.rundb.RunDatabaseDaoFactory; import org.hps.rundb.RunSummary; -import org.hps.rundb.RunSummaryDaoImpl; import org.hps.rundb.RunSummaryImpl; import org.lcsim.util.log.DefaultLogFormatter; import org.lcsim.util.log.LogUtil; @@ -65,7 +65,8 @@ OPTIONS.addOption("r", "run", true, "add a run number to accept (when used others will be excluded)"); OPTIONS.addOption("t", "timestamp-file", true, "existing or new timestamp file name"); OPTIONS.addOption("w", "max-cache-wait", true, "total time to allow for file caching (seconds)"); - OPTIONS.addOption("u", "update", false, "allow replacement of existing data in the run db (not allowed by default)"); + OPTIONS.addOption("u", "update", false, + "allow replacement of existing data in the run db (not allowed by default)"); OPTIONS.addOption("x", "max-depth", true, "max depth to crawl in the directory tree"); } @@ -79,6 +80,34 @@ new Crawler().parse(args).run(); } catch (final Exception e) { throw new RuntimeException(e); + } + } + + /** + * Process all the runs that were found. + * + * @param runs the run log containing the list of run summaries + * @throws Exception if there is an error processing one of the runs + */ + static void processRuns(final JCacheManager cacheManager, final RunSummaryMap runs, final boolean useFileCache) + throws Exception { + + // Process all of the runs that were found. + for (final RunSummary runSummary : runs.getRunSummaries()) { + + // Clear the cache manager. + if (useFileCache) { + LOGGER.info("clearing file cache"); + cacheManager.clear(); + } + + // Create a processor to process all the EVIO events in the run. + LOGGER.info("creating run processor for " + runSummary.getRun()); + final RunProcessor runProcessor = new RunProcessor(cacheManager, (RunSummaryImpl) runSummary, useFileCache); + + // Process all of the files from the run. + LOGGER.info("processing run " + runSummary.getRun()); + runProcessor.processRun(); } } @@ -304,7 +333,7 @@ // Execute the run database update. LOGGER.info("updating run database"); - this.updateRunDatabase(runs); + this.updateRunDatabase(runs); LOGGER.getHandlers()[0].flush(); // Update the timestamp output file. @@ -330,8 +359,10 @@ // Open a DB connection. final Connection connection = config.connectionParameters().createConnection(); - // Insert all run summaries into the database. - new RunSummaryDaoImpl(connection).insertFullRunSummaries(new ArrayList<RunSummary>(runs.getRunSummaries()), + final RunDatabaseDaoFactory dbFactory = new RunDatabaseDaoFactory(connection); + + // Insert all run summaries into the database. + dbFactory.createRunSummaryDao().insertFullRunSummaries(new ArrayList<RunSummary>(runs.getRunSummaries()), config.allowUpdates()); // Close the DB connection. @@ -393,33 +424,5 @@ throw new RuntimeException("Error while walking the directory tree.", e); } } - - /** - * Process all the runs that were found. - * - * @param runs the run log containing the list of run summaries - * @throws Exception if there is an error processing one of the runs - */ - static void processRuns(JCacheManager cacheManager, final RunSummaryMap runs, boolean useFileCache) - throws Exception { - - // Process all of the runs that were found. - for (final RunSummary runSummary : runs.getRunSummaries()) { - - // Clear the cache manager. - if (useFileCache) { - LOGGER.info("clearing file cache"); - cacheManager.clear(); - } - - // Create a processor to process all the EVIO events in the run. - LOGGER.info("creating run processor for " + runSummary.getRun()); - final RunProcessor runProcessor = new RunProcessor(cacheManager, (RunSummaryImpl) runSummary, useFileCache); - - // Process all of the files from the run. - LOGGER.info("processing run " + runSummary.getRun()); - runProcessor.processRun(); - } - } - + } Modified: java/trunk/record-util/src/main/java/org/hps/record/evio/crawler/RunProcessor.java ============================================================================= --- java/trunk/record-util/src/main/java/org/hps/record/evio/crawler/RunProcessor.java (original) +++ java/trunk/record-util/src/main/java/org/hps/record/evio/crawler/RunProcessor.java Thu Aug 27 18:40:34 2015 @@ -13,7 +13,7 @@ import org.hps.record.evio.EvioLoop; import org.hps.record.scalers.ScalersEvioProcessor; import org.hps.record.triggerbank.TiTimeOffsetEvioProcessor; -import org.hps.record.triggerbank.TriggerConfigInt; +import org.hps.record.triggerbank.TriggerConfig; import org.hps.record.triggerbank.TriggerConfigVariable; import org.hps.rundb.RunSummaryImpl; import org.lcsim.util.log.DefaultLogFormatter; @@ -225,7 +225,7 @@ // Add trigger config from the trigger time processor. LOGGER.info("updating trigger config"); - TriggerConfigInt triggerConfig = new TriggerConfigInt(); + TriggerConfig triggerConfig = new TriggerConfig(); this.triggerTimeProcessor.updateTriggerConfig(triggerConfig); LOGGER.info("tiTimeOffset: " + triggerConfig.get(TriggerConfigVariable.TI_TIME_OFFSET.name())); System.out.println("tiTimeOffset: " + triggerConfig.get(TriggerConfigVariable.TI_TIME_OFFSET.name())); Modified: java/trunk/record-util/src/main/java/org/hps/record/triggerbank/TiTimeOffsetEvioProcessor.java ============================================================================= --- java/trunk/record-util/src/main/java/org/hps/record/triggerbank/TiTimeOffsetEvioProcessor.java (original) +++ java/trunk/record-util/src/main/java/org/hps/record/triggerbank/TiTimeOffsetEvioProcessor.java Thu Aug 27 18:40:34 2015 @@ -13,31 +13,31 @@ public class TiTimeOffsetEvioProcessor extends EvioEventProcessor { private final IntBankDefinition headBankDefinition; + private long maxOffset = 0; + + private final int maxOutliers = 10; + private final double maxRange = 1.1e9; + private long minOffset = 0; + + private final double minRange = 0.99e9; + private int nOutliers = 0; private final IntBankDefinition tiBankDefinition; - private final double minRange = 0.99e9; - private final double maxRange = 1.1e9; - private final int maxOutliers = 10; - - private long minOffset = 0; - private long maxOffset = 0; - private int nOutliers = 0; - public TiTimeOffsetEvioProcessor() { - headBankDefinition = new IntBankDefinition(HeadBankData.class, new int[]{0x2e, 0xe10f}); - tiBankDefinition = new IntBankDefinition(TIData.class, new int[]{0x2e, 0xe10a}); + headBankDefinition = new IntBankDefinition(HeadBankData.class, new int[] {0x2e, 0xe10f}); + tiBankDefinition = new IntBankDefinition(TIData.class, new int[] {0x2e, 0xe10a}); } @Override public void process(final EvioEvent evioEvent) { - BaseStructure headBank = headBankDefinition.findBank(evioEvent); - BaseStructure tiBank = tiBankDefinition.findBank(evioEvent); + final BaseStructure headBank = headBankDefinition.findBank(evioEvent); + final BaseStructure tiBank = tiBankDefinition.findBank(evioEvent); if (headBank != null && tiBank != null) { - int[] headData = headBank.getIntData(); - int thisTimestamp = headData[3]; - TIData tiData = new TIData(tiBank.getIntData()); + final int[] headData = headBank.getIntData(); + final int thisTimestamp = headData[3]; + final TIData tiData = new TIData(tiBank.getIntData()); if (thisTimestamp != 0) { - long offset = thisTimestamp * 1000000000L - tiData.getTime(); + final long offset = thisTimestamp * 1000000000L - tiData.getTime(); if (minOffset == 0 || minOffset > offset) { if (maxOffset - offset < maxRange) { minOffset = offset; @@ -56,12 +56,12 @@ } } - public void updateTriggerConfig(TriggerConfigInt triggerConfig) { - long offsetRange = maxOffset - minOffset; + public void updateTriggerConfig(final TriggerConfig triggerConfig) { + final long offsetRange = maxOffset - minOffset; if (offsetRange > minRange && nOutliers < maxOutliers) { - triggerConfig.put(TriggerConfigVariable.TI_TIME_OFFSET.name(), minOffset); + triggerConfig.put(TriggerConfigVariable.TI_TIME_OFFSET, minOffset); } else { - triggerConfig.put(TriggerConfigVariable.TI_TIME_OFFSET.name(), 0L); + triggerConfig.put(TriggerConfigVariable.TI_TIME_OFFSET, 0L); } } } Copied: java/trunk/record-util/src/main/java/org/hps/record/triggerbank/TriggerConfig.java (from r3424, java/trunk/record-util/src/main/java/org/hps/record/triggerbank/TriggerConfigInt.java) ============================================================================= --- java/trunk/record-util/src/main/java/org/hps/record/triggerbank/TriggerConfigInt.java (original) +++ java/trunk/record-util/src/main/java/org/hps/record/triggerbank/TriggerConfig.java Thu Aug 27 18:40:34 2015 @@ -3,23 +3,22 @@ import java.util.HashMap; /** - * Trigger config information in the form of string keys and long values. + * Trigger config information in the form of variables with <code>long</code> values. * <p> - * This is not the "standard" interface using in LCSim to access trigger configuration. - * It is used as a simplistic representation for the run database. - * + * This is not the "standard" interface using in LCSim to access trigger configuration. It is used as a simplistic + * representation for the run database. + * * @author Jeremy McCormick, SLAC */ @SuppressWarnings("serial") -public class TriggerConfigInt extends HashMap<String, Long> { - +public class TriggerConfig extends HashMap<TriggerConfigVariable, Long> { + /** - * Get a particular trigger config variable's value. - * - * @param variable the variable enum - * @return the variable's value + * Get the TI time offset. + * + * @return the TI time offset */ - Long getValue(TriggerConfigVariable variable) { - return this.get(variable.name()); + public Long getTiTimeOffset() { + return this.get(TriggerConfigVariable.TI_TIME_OFFSET); } } Modified: java/trunk/record-util/src/main/java/org/hps/record/triggerbank/TriggerConfigVariable.java ============================================================================= --- java/trunk/record-util/src/main/java/org/hps/record/triggerbank/TriggerConfigVariable.java (original) +++ java/trunk/record-util/src/main/java/org/hps/record/triggerbank/TriggerConfigVariable.java Thu Aug 27 18:40:34 2015 @@ -2,12 +2,22 @@ /** * Enum for trigger config variables. - * + * * @author Jeremy McCormick, SLAC */ public enum TriggerConfigVariable { + /** - * TI time offset + * TI time offset variable. */ - TI_TIME_OFFSET + TI_TIME_OFFSET; + + /** + * Get the column name in the run database for the config variable (convenience method). + * + * @return the column name + */ + public String getColumnName() { + return this.name().toLowerCase(); + } }