Author: [log in to unmask] Date: Thu May 28 12:03:52 2015 New Revision: 3051 Log: Change offset time to a double. HPSJAVA-513 Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtTimingConstants.java java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtTimingConstantsLoader.java java/trunk/conditions/src/test/java/org/hps/conditions/svt/SvtTimingConstantsTest.java Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtTimingConstants.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtTimingConstants.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtTimingConstants.java Thu May 28 12:03:52 2015 @@ -11,28 +11,28 @@ * Conditions object for SVT timing configuration constants, including offset phase and time (in nanoseconds). * <p> * There will generally be only one of these records per run. - * + * * @author Jeremy McCormick */ @Table(names = {"svt_timing_constants"}) @Converter(multipleCollectionsAction = MultipleCollectionsAction.LAST_CREATED) public final class SvtTimingConstants extends BaseConditionsObject { - + /** * The collection implementation for {@link SvtTimingConstants}. */ @SuppressWarnings("serial") public static class SvtTimingConstantsCollection extends BaseConditionsObjectCollection<SvtTimingConstants> { - + /** * Find timing constants by offset phase and time. - * + * * @param offsetPhase the offset phase * @param offsetTime the offset time * @return the constants that match the params or <code>null</code> if not found */ - public SvtTimingConstants find(int offsetPhase, int offsetTime) { - for (SvtTimingConstants constants : this) { + public SvtTimingConstants find(final int offsetPhase, final double offsetTime) { + for (final SvtTimingConstants constants : this) { if (constants.getOffsetPhase().equals(offsetPhase) && constants.getOffsetTime().equals(offsetTime)) { return constants; } @@ -40,24 +40,24 @@ return null; } } - - /** - * The SVT offset time (ns). - * - * @return the SVT offset time (ns) - */ - @Field(names = {"offset_time"}) - public Integer getOffsetTime() { - return this.getFieldValue("offset_time"); - } - + /** * The SVT offset phase (ns). - * + * * @return the SVT offset phase */ @Field(names = {"offset_phase"}) public Integer getOffsetPhase() { return this.getFieldValue("offset_phase"); } + + /** + * The SVT offset time (ns). + * + * @return the SVT offset time (ns) + */ + @Field(names = {"offset_time"}) + public Double getOffsetTime() { + return this.getFieldValue("offset_time"); + } } Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtTimingConstantsLoader.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtTimingConstantsLoader.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtTimingConstantsLoader.java Thu May 28 12:03:52 2015 @@ -1,4 +1,4 @@ -package org. hps.conditions.svt; +package org.hps.conditions.svt; import java.io.File; import java.util.ArrayList; @@ -18,89 +18,127 @@ /** * Load SVT timing constant data from the run spreadsheet and insert into the conditions database. * <p> - * Be very careful about running this, because it will create many new conditions records that may - * already be present in the database. In fact, don't run this at all without talking to me first. :-) - * + * Be very careful about running this, because it will create many new conditions records that may already be present in the database. In fact, don't + * run this at all without talking to me first. :-) + * * @author Jeremy McCormick */ public final class SvtTimingConstantsLoader { - - /** - * Setup conditions. - */ - private static final DatabaseConditionsManager MANAGER = DatabaseConditionsManager.getInstance(); - + /** * The fields from the run spreadsheet for SVT timing constants. */ private static final Set<String> FIELDS = new HashSet<String>(); + + /** + * Setup conditions. + */ + private static final DatabaseConditionsManager MANAGER = DatabaseConditionsManager.getInstance(); static { FIELDS.add("svt_offset_phase"); FIELDS.add("svt_offset_time"); } - + + /** + * Create the conditions collections from the unique values found in the spreadsheet. + * + * @param uniqueValues the list of unique raw values + * @return the new conditions collections + */ + private static List<SvtTimingConstantsCollection> createCollections(final List<Collection<String>> uniqueValues) { + final List<SvtTimingConstantsCollection> collections = new ArrayList<SvtTimingConstantsCollection>(); + for (final Collection<String> values : uniqueValues) { + + final SvtTimingConstants timing = new SvtTimingConstants(); + final Iterator<String> it = values.iterator(); + final Integer offsetPhase = Integer.parseInt(it.next()); + final Float offsetTime = Float.parseFloat(it.next()); + + timing.setFieldValue("offset_phase", offsetPhase); + timing.setFieldValue("offset_time", offsetTime); + + final SvtTimingConstantsCollection collection = new SvtTimingConstantsCollection(); + collection.add(timing); + collections.add(collection); + } + return collections; + } + + /** + * Find a timing constants collection from offset phase and time. + * <p> + * Each collection has a single object in it. + * + * @param timingConstantsList the list of collections + * @param offsetPhase the offset phase + * @param offsetTime the offset time + * @return the matching collection or <code>null</code> if not found + */ + private static SvtTimingConstantsCollection findCollection(final List<SvtTimingConstantsCollection> timingConstantsList, final int offsetPhase, + final double offsetTime) { + for (final SvtTimingConstantsCollection collection : timingConstantsList) { + if (collection.find(offsetPhase, offsetTime) != null) { + return collection; + } + } + return null; + } + /** * Load the SVT timing constants for time and phase offsets into the conditions database. - * + * * @param args the command line arguments (requires one argument which is CSV file name) */ - public static void main(String[] args) { - + public static void main(final String[] args) { + // Load in CSV records from the exported run spreadsheet. - String path = args[0]; - RunSpreadsheet runSheet = new RunSpreadsheet(new File(path)); - + final String path = args[0]; + final RunSpreadsheet runSheet = new RunSpreadsheet(new File(path)); + // Find the run ranges that have the same fields values. - List<RunRange> ranges = RunRange.findRunRanges(runSheet, FIELDS); - + final List<RunRange> ranges = RunRange.findRunRanges(runSheet, FIELDS); + // Get the unique field values for inserting new conditions collections. - List<Collection<String>> uniqueValues = RunRange.getUniqueValues(ranges); - + final List<Collection<String>> uniqueValues = RunRange.getUniqueValues(ranges); + /* - System.out.println("unique values ..."); - for (Collection<String> collection : uniqueValues) { - for (String value : collection) { - System.out.print(value + " "); - } - System.out.println(); - } - */ - + * System.out.println("unique values ..."); for (Collection<String> collection : uniqueValues) { for (String value : collection) { + * System.out.print(value + " "); } System.out.println(); } + */ + // Create a new collection for each unique combination set of timing constants. - List<SvtTimingConstantsCollection> collections = createCollections(uniqueValues); - + final List<SvtTimingConstantsCollection> collections = createCollections(uniqueValues); + // Create a new collection for each of the unique combinations of values. - for (SvtTimingConstantsCollection collection : collections) { + for (final SvtTimingConstantsCollection collection : collections) { int collectionId = 0; try { - collectionId = MANAGER.addCollection( - "svt_timing_constants", - "SVT timing constants added by " + System.getProperty("user.name"), + collectionId = MANAGER.addCollection("svt_timing_constants", "SVT timing constants added by " + System.getProperty("user.name"), "timing constants from run spreadsheet"); collection.setCollectionId(collectionId); collection.insert(); - } catch (Exception e) { + } catch (final Exception e) { throw new RuntimeException(e); - } - } - + } + } + // Create the conditions records for the run ranges. - for (RunRange range : ranges) { - + for (final RunRange range : ranges) { + System.out.println(range); - + // Get the data values from the run range. - int offsetPhase = Integer.parseInt(range.getValue("svt_offset_phase")); - int offsetTime = Integer.parseInt(range.getValue("svt_offset_time")); + final int offsetPhase = Integer.parseInt(range.getValue("svt_offset_phase")); + final double offsetTime = Float.parseFloat(range.getValue("svt_offset_time")); // Find the matching timing constants collection to use. - SvtTimingConstantsCollection collection = findCollection(collections, offsetPhase, offsetTime); + final SvtTimingConstantsCollection collection = findCollection(collections, offsetPhase, offsetTime); if (collection != null) { System.out.println("offset_phase : " + collection.get(0).getOffsetPhase() + ", offset_time: " + collection.get(0).getOffsetTime()); } - + // Create a new conditions record with the run range. - ConditionsRecord condi = new ConditionsRecord(); + final ConditionsRecord condi = new ConditionsRecord(); condi.setFieldValue("run_start", range.getRunStart()); condi.setFieldValue("run_end", range.getRunEnd()); condi.setFieldValue("name", "svt_timing_constants"); @@ -108,61 +146,17 @@ condi.setFieldValue("notes", "timing constants from run spreadsheet"); condi.setFieldValue("created", new Date()); condi.setFieldValue("created_by", System.getProperty("user.name")); - + condi.setFieldValue("collection_id", collection.getCollectionId()); try { condi.insert(); - } catch (Exception e) { + } catch (final Exception e) { throw new RuntimeException(e); - } - - System.out.print(condi); + } + + System.out.print(condi); System.out.println(); } } - - /** - * Create the conditions collections from the unique values found in the spreadsheet. - * - * @param uniqueValues the list of unique raw values - * @return the new conditions collections - */ - private static List<SvtTimingConstantsCollection> createCollections(List<Collection<String>> uniqueValues) { - List<SvtTimingConstantsCollection> collections = new ArrayList<SvtTimingConstantsCollection>(); - for (Collection<String> values : uniqueValues) { - - SvtTimingConstants timing = new SvtTimingConstants(); - Iterator<String> it = values.iterator(); - Integer offsetPhase = Integer.parseInt(it.next()); - Integer offsetTime = Integer.parseInt(it.next()); - - timing.setFieldValue("offset_phase", offsetPhase); - timing.setFieldValue("offset_time", offsetTime); - - SvtTimingConstantsCollection collection = new SvtTimingConstantsCollection(); - collection.add(timing); - collections.add(collection); - } - return collections; - } - - /** - * Find a timing constants collection from offset phase and time. - * <p> - * Each collection has a single object in it. - * - * @param timingConstantsList the list of collections - * @param offsetPhase the offset phase - * @param offsetTime the offset time - * @return the matching collection or <code>null</code> if not found - */ - private static SvtTimingConstantsCollection findCollection(List<SvtTimingConstantsCollection> timingConstantsList, int offsetPhase, int offsetTime) { - for (SvtTimingConstantsCollection collection : timingConstantsList) { - if (collection.find(offsetPhase, offsetTime) != null) { - return collection; - } - } - return null; - } } Modified: java/trunk/conditions/src/test/java/org/hps/conditions/svt/SvtTimingConstantsTest.java ============================================================================= --- java/trunk/conditions/src/test/java/org/hps/conditions/svt/SvtTimingConstantsTest.java (original) +++ java/trunk/conditions/src/test/java/org/hps/conditions/svt/SvtTimingConstantsTest.java Thu May 28 12:03:52 2015 @@ -24,8 +24,8 @@ * This is a list of run start values to check. */ private static final int[] RUNS = new int[] {4871, 5038, 5076, 5139, 5174, 5218, 5236, 5251, 5263, 5299, 5310, 5375, 5400, 5533, 5558, 5575, - 5596, 5601, 5603, 5610, 4871, 5038, 5076, 5139, 5174, 5218, 5236, 5251, 5263, 5299, 5310, 5375, 5400, 5533, 5558, 5575, 5596, 5601, 5603, - 5610, 5640, 5641, 5642, 5686, 5722, 5779}; + 5596, 5601, 5603, 5610, 4871, 5038, 5076, 5139, 5174, 5218, 5236, 5251, 5263, 5299, 5310, 5375, 5400, 5533, 5558, 5575, 5596, 5601, 5603, + 5610, 5640, 5641, 5642, 5686, 5722, 5779}; /** * Load SVT timing constants and print them out by run range. @@ -44,6 +44,5 @@ System.out.println("run_start: " + condi.getRunStart() + ", run_end: " + condi.getRunEnd() + ", offset_phase: " + collection.get(0).getOffsetPhase() + ", offset_time: " + collection.get(0).getOffsetTime()); } - } }