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  July 2015

HPS-SVN July 2015

Subject:

r3230 - in /java/branches/HPSJAVA-488/conditions/src/main/java/org/hps/conditions: run/RunRange.java run/RunSpreadsheet.java svt/SvtBiasConditionsLoader.java svt/SvtBiasConstant.java svt/SvtBiasMyaDumpReader.java

From:

[log in to unmask]

Reply-To:

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

Date:

Mon, 6 Jul 2015 22:27:32 -0000

Content-Type:

text/plain

Parts/Attachments:

Parts/Attachments

text/plain (1887 lines)

Author: [log in to unmask]
Date: Mon Jul  6 15:27:19 2015
New Revision: 3230

Log:
Hand merge some trunk changes that are causing conflicts.

Modified:
    java/branches/HPSJAVA-488/conditions/src/main/java/org/hps/conditions/run/RunRange.java
    java/branches/HPSJAVA-488/conditions/src/main/java/org/hps/conditions/run/RunSpreadsheet.java
    java/branches/HPSJAVA-488/conditions/src/main/java/org/hps/conditions/svt/SvtBiasConditionsLoader.java
    java/branches/HPSJAVA-488/conditions/src/main/java/org/hps/conditions/svt/SvtBiasConstant.java
    java/branches/HPSJAVA-488/conditions/src/main/java/org/hps/conditions/svt/SvtBiasMyaDumpReader.java

Modified: java/branches/HPSJAVA-488/conditions/src/main/java/org/hps/conditions/run/RunRange.java
 =============================================================================
--- java/branches/HPSJAVA-488/conditions/src/main/java/org/hps/conditions/run/RunRange.java	(original)
+++ java/branches/HPSJAVA-488/conditions/src/main/java/org/hps/conditions/run/RunRange.java	Mon Jul  6 15:27:19 2015
@@ -11,51 +11,24 @@
 import org.apache.commons.csv.CSVRecord;
 
 /**
- * Used with the {@link RunSpreadsheet} to find ranges of runs where columns have the same values so they can be
- * assigned a conditions record with a run start and end range.
+ * Used with the {@link RunSpreadsheet} to find ranges of runs where columns have the same values so they can be assigned
+ * a conditions record with a run start and end range.
  * <p>
  * Bad rows such as ones without run numbers or with invalid data values are skipped and not included in a range.
- *
- * @author Jeremy McCormick, SLAC
+ * 
+ * @author Jeremy McCormick
  */
 public final class RunRange {
 
     /**
-     * Return <code>true</code> if the values are already in the unique values list.
-     *
-     * @param values the list of field values for a row
-     * @param uniqueValuesList the unique values list
-     * @return <code>true</code> if the values are already in the unique values list
-     */
-    private static boolean contains(final Collection<String> values, final List<Collection<String>> uniqueValuesList) {
-        for (final Collection<String> uniqueValues : uniqueValuesList) {
-            final Iterator<String> valuesIterator = values.iterator();
-            final Iterator<String> uniqueValuesIterator = uniqueValues.iterator();
-            boolean equals = true;
-            while (valuesIterator.hasNext() && uniqueValuesIterator.hasNext()) {
-                final String value = valuesIterator.next();
-                final String uniqueValue = uniqueValuesIterator.next();
-                if (!value.equals(uniqueValue)) {
-                    equals = false;
-                    break;
-                }
-            }
-            if (equals) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Find run ranges for conditions data given a set of column names and the full run spreadsheet.
-     *
+     * Find run ranges for conditions data given a set of column names and the full run spreadsheet. 
+     * 
      * @param runSheet the run spreadsheet data (from CSV file)
      * @param columnNames the names of the columns
      * @return the list of run ranges
      */
     public static final List<RunRange> findRunRanges(final RunSpreadsheet runSheet, final Set<String> columnNames) {
-
+        
         final List<RunRange> ranges = new ArrayList<RunRange>();
 
         final Iterator<CSVRecord> it = runSheet.getRecords().iterator();
@@ -69,17 +42,17 @@
             // Is the record valid?
             if (isValidRecord(record, columnNames)) {
                 if (range == null) {
-                    // Create new range for the valid row.
+                    // Create new range for the valid row. 
                     range = new RunRange(columnNames);
-                } else {
+                } else {                    
                     // If this record is not in the range then add a new range.
                     if (!range.inRange(record)) {
                         // Add the current range and create a new one.
                         ranges.add(range);
                         range = new RunRange(columnNames);
                     }
-                }
-
+                }                
+                
                 // Update the range from the current record.
                 range.update(record);
             } else {
@@ -93,30 +66,11 @@
 
         return ranges;
     }
-
-    /**
-     * Get the list of unique values from a set of run ranges.
-     *
-     * @param ranges the run ranges
-     * @return the list of unique values from the field values
-     */
-    public static List<Collection<String>> getUniqueValues(final List<RunRange> ranges) {
-        final Iterator<RunRange> it = ranges.iterator();
-        final List<Collection<String>> uniqueValuesList = new ArrayList<Collection<String>>();
-        while (it.hasNext()) {
-            final RunRange range = it.next();
-            final Collection<String> values = range.getValues();
-            if (!contains(values, uniqueValuesList)) {
-                uniqueValuesList.add(values);
-            }
-        }
-        return uniqueValuesList;
-    }
-
-    /**
-     * Return <code>true</code> if the <code>CSVRecord</code> is valid, which means it has a run number and data in the
-     * columns used by this range.
-     *
+    
+    /**
+     * Return <code>true</code> if the <code>CSVRecord</code> is valid, which means it has a run number and 
+     * data in the columns used by this range.
+     * 
      * @param record the <code>CSVRecord</code> to check
      * @param columnNames the names of the columns
      * @return <code>true</code> if record is valid
@@ -131,8 +85,7 @@
         }
         for (final String columnName : columnNames) {
             // Check that required column data is not null, blank, or empty string.
-            if (record.get(columnName) == null || "".equals(record.get(columnName))
-                    || record.get(columnName).length() == 0) {
+            if (record.get(columnName) == null || "".equals(record.get(columnName)) || record.get(columnName).length() == 0) {                
                 return false;
             }
         }
@@ -157,11 +110,11 @@
     /**
      * The mapping of column names to values.
      */
-    private final Map<String, String> values = new LinkedHashMap<String, String>();
+    private Map<String, String> values = new LinkedHashMap<String, String>();
 
     /**
      * Create a new range.
-     *
+     * 
      * @param columnNames the names of the columns
      */
     RunRange(final Set<String> columnNames) {
@@ -172,8 +125,45 @@
     }
 
     /**
+     * Get the last run number in the range.
+     * 
+     * @return the last run number in the range
+     */
+    public int getRunEnd() {
+        return runEnd;
+    }
+
+    /**
+     * Get the first run number in the range.
+     * 
+     * @return the first run number in the range
+     */
+    public int getRunStart() {
+        return runStart;
+    }
+    
+    /**
+     * Get get value of a field by column name.
+     * 
+     * @param columnName the column name
+     * @return the value of the field
+     */
+    public String getValue(String columnName) {
+        return this.values.get(columnName);
+    }
+    
+    /**
+     * Get the raw values of the data.
+     * 
+     * @return the raw data values
+     */
+    public Collection<String> getValues() {
+        return this.values.values();
+    }
+    
+    /**
      * Get the names of the columns used by this range.
-     *
+     * 
      * @return the names of the columns
      */
     public Set<String> getColumnNames() {
@@ -181,50 +171,13 @@
     }
 
     /**
-     * Get the last run number in the range.
-     *
-     * @return the last run number in the range
-     */
-    public int getRunEnd() {
-        return this.runEnd;
-    }
-
-    /**
-     * Get the first run number in the range.
-     *
-     * @return the first run number in the range
-     */
-    public int getRunStart() {
-        return this.runStart;
-    }
-
-    /**
-     * Get get value of a field by column name.
-     *
-     * @param columnName the column name
-     * @return the value of the field
-     */
-    public String getValue(final String columnName) {
-        return this.values.get(columnName);
-    }
-
-    /**
-     * Get the raw values of the data.
-     *
-     * @return the raw data values
-     */
-    public Collection<String> getValues() {
-        return this.values.values();
-    }
-
-    /**
-     * Return <code>true</code> if the record is in the range, e.g. its data values are the same.
-     *
+     * Return <code>true</code> if the record is in the range, e.g. its data values are the same.    
+     * 
      * @param record the <code>CSVRecord</code> containing the run data
      * @return <code>true</code> if the the record is in range
      */
     private boolean inRange(final CSVRecord record) {
-        for (final String columnName : this.columnNames) {
+        for (final String columnName : columnNames) {
             if (!record.get(columnName).equals(this.values.get(columnName))) {
                 return false;
             }
@@ -233,41 +186,85 @@
     }
 
     /**
+     * Update the range from a record.     
+     * @param record the <code>CSVRecord</code> with the run's data
+     */
+    private void update(final CSVRecord record) {                
+        final int run = Integer.parseInt(record.get("run"));
+        if (run < runStart) {
+            this.runStart = run;
+        }
+        if (run > runEnd) {
+            this.runEnd = run;
+        }
+        if (values.size() == 0) {
+            for (final String columnName : columnNames) {
+                this.values.put(columnName, record.get(columnName));
+            }
+        }
+    }
+    
+    /**
      * Convert this object to a string.
-     *
+     * 
      * @return this object converted to a string
      */
-    @Override
     public String toString() {
-        final StringBuffer sb = new StringBuffer();
+        StringBuffer sb = new StringBuffer();
         sb.append("RunRange { ");
         sb.append("runStart: " + this.runStart + ", ");
         sb.append("runEnd: " + this.runEnd + ", ");
-        for (final String columnName : this.columnNames) {
-            sb.append(columnName + ": " + this.values.get(columnName) + ", ");
+        for (String columnName : columnNames) {
+            sb.append(columnName + ": " + values.get(columnName) + ", " );
         }
         sb.setLength(sb.length() - 2);
         sb.append(" }");
         return sb.toString();
     }
-
-    /**
-     * Update the range from a record.
-     * 
-     * @param record the <code>CSVRecord</code> with the run's data
-     */
-    private void update(final CSVRecord record) {
-        final int run = Integer.parseInt(record.get("run"));
-        if (run < this.runStart) {
-            this.runStart = run;
-        }
-        if (run > this.runEnd) {
-            this.runEnd = run;
-        }
-        if (this.values.size() == 0) {
-            for (final String columnName : this.columnNames) {
-                this.values.put(columnName, record.get(columnName));
-            }
-        }
+    
+    /**
+     * Get the list of unique values from a set of run ranges.
+     * 
+     * @param ranges the run ranges
+     * @return the list of unique values from the field values
+     */
+    public static List<Collection<String>> getUniqueValues(List<RunRange> ranges) {
+        Iterator<RunRange> it = ranges.iterator();        
+        List<Collection<String>> uniqueValuesList = new ArrayList<Collection<String>>();
+        while(it.hasNext()) {        
+            RunRange range = it.next();
+            Collection<String> values = range.getValues();
+            if (!contains(values, uniqueValuesList)) {
+                uniqueValuesList.add(values);
+            }           
+        }
+        return uniqueValuesList;
+    }
+    
+    /**
+     * Return <code>true</code> if the values are already in the unique values list.
+     * 
+     * @param values the list of field values for a row
+     * @param uniqueValuesList the unique values list
+     * @return <code>true</code> if the values are already in the unique values list
+     */
+    private static boolean contains(Collection<String> values, List<Collection<String>> uniqueValuesList) {
+        for (Collection<String> uniqueValues : uniqueValuesList) {
+            Iterator<String> valuesIterator = values.iterator();
+            Iterator<String> uniqueValuesIterator = uniqueValues.iterator();
+            boolean equals = true;
+            while (valuesIterator.hasNext() && uniqueValuesIterator.hasNext()) {
+                String value = valuesIterator.next(); 
+                String uniqueValue = uniqueValuesIterator.next();
+                if (!value.equals(uniqueValue)) {
+                    equals = false;
+                    break;
+                }
+            }
+            if (equals) {
+                return true;
+            }
+        }
+        return false;
     }
 }

Modified: java/branches/HPSJAVA-488/conditions/src/main/java/org/hps/conditions/run/RunSpreadsheet.java
 =============================================================================
--- java/branches/HPSJAVA-488/conditions/src/main/java/org/hps/conditions/run/RunSpreadsheet.java	(original)
+++ java/branches/HPSJAVA-488/conditions/src/main/java/org/hps/conditions/run/RunSpreadsheet.java	Mon Jul  6 15:27:19 2015
@@ -7,104 +7,37 @@
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Locale;
+import java.util.TimeZone;
 
 import org.apache.commons.csv.CSVFormat;
 import org.apache.commons.csv.CSVParser;
 import org.apache.commons.csv.CSVRecord;
 
 /**
- * A simple representation of the 2015 run spreadsheet (runs from 3/28 to 5/19) read from an exported CSV file as a list
- * of records.
+ * A simple representation of the 2015 run spreadsheet (runs from 3/28 to 5/19) read from an exported CSV file as a list of records.
  * <p>
- * Master copy of the spreadsheet is located at <a
- * href="https://docs.google.com/spreadsheets/d/1l1NurPpsmpgZKgr1qoQpLQBBLz1sszLz4xZF-So4xs8/edit#gid=43855609"
- * >HPS_Runs_2015</a>.
+ * Master copy of the spreadsheet is located at 
+ * <a href="https://docs.google.com/spreadsheets/d/1l1NurPpsmpgZKgr1qoQpLQBBLz1sszLz4xZF-So4xs8/edit#gid=43855609">HPS_Runs_2015</a>.
  * <p>
- * The rows are accessible as raw CSV data through the Apache Commons CSV library, and this data must be manually
- * cleaned up and converted to the correct data type before being inserted into the conditions database.
+ * The rows are accessible as raw CSV data through the Apache Commons CSV library, and this data must be manually cleaned up and converted 
+ * to the correct data type before being inserted into the conditions database.
  *
- * @author Jeremy McCormick, SLAC
+ * @author Jeremy McCormick
  */
 public final class RunSpreadsheet {
 
-    public static class RunData {
-
-        private Date endDate;
-        private final CSVRecord record;
-        private final int run;
-        private Date startDate;
-
-        RunData(final CSVRecord record) throws NumberFormatException {
-            this.record = record;
-            this.run = parseRunNumber(this.record);
-            try {
-                this.startDate = RunSpreadsheet.parseStartDate(this.record);
-            } catch (final ParseException e) {
-            }
-            try {
-                this.endDate = RunSpreadsheet.parseEndDate(this.record);
-            } catch (final ParseException e) {
-            }
-        }
-
-        public Date getEndDate() {
-            return this.endDate;
-        }
-
-        public CSVRecord getRecord() {
-            return this.record;
-        }
-
-        public int getRun() {
-            return this.run;
-        }
-
-        public Date getStartDate() {
-            return this.startDate;
-        }
-
-        @Override
-        public String toString() {
-            return "RunData { run: " + this.run + ", startDate: " + this.startDate + ", endDate: " + this.endDate
-                    + " }";
-        }
-    }
-
-    @SuppressWarnings("serial")
-    public static class RunMap extends LinkedHashMap<Integer, RunData> {
-        public RunMap() {
-            super();
-        }
-
-        public RunMap(final List<CSVRecord> records) {
-            super();
-            for (final CSVRecord record : records) {
-                try {
-                    this.addRunData(new RunData(record));
-                } catch (final NumberFormatException e) {
-                    e.printStackTrace();
-                }
-            }
-        }
-
-        private void addRunData(final RunData runData) {
-            this.put(runData.getRun(), runData);
-        }
-    }
-
-    private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("MM/dd/yyyy H:mm");
-
     /**
      * The column headers.
      */
-    private static String[] HEADERS = {"run", "date", "start_time", "end_time", "to_tape", "n_events", "trigger_rate",
-            "target", "beam_current", "beam_x", "beam_y", "trigger_config", "ecal_fadc_mode", "ecal_fadc_thresh",
-            "ecal_fadc_window", "ecal_cluster_thresh_seed", "ecal_cluster_thresh_cluster", "ecal_cluster_window_hits",
-            "ecal_cluster_window_pairs", "ecal_scalers_fadc", "ecal_scalers_dsc", "svt_y_position", "svt_offset_phase",
-            "svt_offset_time", "ecal_temp", "ecal_lv_current", "notes"};
+    private static String[] HEADERS = {"run", "date", "start_time", "end_time", "to_tape", "n_events", "trigger_rate", "target", "beam_current",
+        "beam_x", "beam_y", "trigger_config", "ecal_fadc_mode", "ecal_fadc_thresh", "ecal_fadc_window", "ecal_cluster_thresh_seed", "ecal_cluster_thresh_cluster",
+        "ecal_cluster_window_hits", "ecal_cluster_window_pairs", "ecal_scalers_fadc", "ecal_scalers_dsc", "svt_y_position", "svt_offset_phase", "svt_offset_time",
+        "ecal_temp", "ecal_lv_current", "notes"};
 
     /**
      * Read the CSV file from the command line and print the data to the terminal (just a basic test).
@@ -119,22 +52,10 @@
                 System.out.print("end date: " + parseEndDate(record) + ", ");
                 System.out.print(record);
                 System.out.println();
-            } catch (final Exception e) {
+            } catch (Exception e) {
                 e.printStackTrace();
             }
         }
-    }
-
-    private static Date parseEndDate(final CSVRecord record) throws ParseException {
-        return DATE_FORMAT.parse(record.get("date") + " " + record.get("end_time"));
-    }
-
-    private static int parseRunNumber(final CSVRecord record) throws NumberFormatException {
-        return Integer.parseInt(record.get("run"));
-    }
-
-    private static Date parseStartDate(final CSVRecord record) throws ParseException {
-        return DATE_FORMAT.parse(record.get("date") + " " + record.get("start_time"));
     }
 
     /**
@@ -168,13 +89,14 @@
      * @return the <code>CSVRecord</code> or <code>null</code> if not found
      */
     public CSVRecord findRun(final int run) {
-        for (final CSVRecord record : this.records) {
+        for (final CSVRecord record : records) {
             try {
                 if (run == Integer.parseInt(record.get("run"))) {
                     return record;
                 }
             } catch (final NumberFormatException e) {
-                e.printStackTrace();
+                //System.out.println("problem reading run" + run);
+                //e.printStackTrace();
             }
         }
         return null;
@@ -194,12 +116,12 @@
 
         final CSVParser parser = new CSVParser(reader, format);
 
-        this.records = parser.getRecords();
+        records = parser.getRecords();
 
         // Remove first three rows of headers.
-        this.records.remove(0);
-        this.records.remove(0);
-        this.records.remove(0);
+        records.remove(0);
+        records.remove(0);
+        records.remove(0);
 
         parser.close();
     }
@@ -210,34 +132,135 @@
      * @return the list of records read from the CSV file
      */
     public List<CSVRecord> getRecords() {
-        return this.records;
-    }
-
+        return records;
+    }
+    
+    public static final AnotherSimpleDateFormat DATE_FORMAT = new AnotherSimpleDateFormat("MM/dd/yyyy H:mm"); 
+    private static final TimeZone TIME_ZONE =  TimeZone.getTimeZone("EST");
+    
+    
+    @SuppressWarnings("serial")
+    public
+    static class AnotherSimpleDateFormat extends SimpleDateFormat {
+        public AnotherSimpleDateFormat(String formatstring) {
+            super(formatstring);
+            //Calendar c = Calendar.getInstance(TIME_ZONE,Locale.US);
+            //setTimeZone(TIME_ZONE);
+        }
+
+        public Date parse(String source) throws ParseException {
+            setTimeZone(TIME_ZONE);
+            //System.out.println("parse  " + source);
+            Date date = super.parse(source);
+            //System.out.println("update date " + date.toString() + " epoch " + date.getTime());
+            Date dateUpdated = new Date(date.getTime()-3600*1000);
+            //System.out.println("updated date " + dateUpdated.toString() + " epoch " + dateUpdated.getTime());
+            return dateUpdated;
+        }
+        
+    }
+
+    
+    private static Date parseStartDate(CSVRecord record) throws ParseException {
+        //System.out.printf("Start date result of parsing %s %s is %s since epoch %d  \n",record.get("date"), record.get("start_time"),DATE_FORMAT.parse(record.get("date") + " " + record.get("start_time")).toString(), DATE_FORMAT.parse(record.get("date") + " " + record.get("start_time")).getTime() );
+        return DATE_FORMAT.parse(record.get("date") + " " + record.get("start_time"));
+    }
+    
+    private static Date parseEndDate(CSVRecord record) throws ParseException {
+        //DATE_FORMAT.setTimeZone(TIME_ZONE);
+        return DATE_FORMAT.parse(record.get("date") + " " + record.get("end_time"));
+    }
+    
+    private static int parseRunNumber(CSVRecord record) throws NumberFormatException {
+        return Integer.parseInt(record.get("run"));
+    }
+    
+    public static class RunData {
+        
+        private int run;
+        private Date startDate;
+        private Date endDate;
+        private CSVRecord record;
+        
+        RunData(CSVRecord record) throws NumberFormatException {
+            this.record = record;
+            run = parseRunNumber(this.record);
+            try {
+                startDate = RunSpreadsheet.parseStartDate(this.record);
+            } catch (ParseException e) {                
+            }
+            try {
+                endDate = RunSpreadsheet.parseEndDate(this.record);
+            } catch (ParseException e) {                
+            }
+        }
+        
+        public int getRun() {
+            return run;
+        }
+        
+        public Date getStartDate() {
+            return startDate;
+        }
+        
+        public Date getEndDate() {
+            return endDate;
+        }      
+        
+        public String toString() {
+            return "RunData { run: " + run + ", startDate: " + startDate + ", endDate: " + endDate + " }";
+        }
+        
+        public CSVRecord getRecord() {
+            return record;
+        }
+    }
+    
+    @SuppressWarnings("serial")
+    public static class RunMap extends LinkedHashMap<Integer, RunData> {
+        public RunMap() {
+            super();
+        }
+        public RunMap(List<CSVRecord> records) {
+            super();
+            for (final CSVRecord record : records) {
+                try {
+                    addRunData(new RunData(record));
+                } catch (NumberFormatException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        private void addRunData(RunData runData) {
+            this.put(runData.getRun(), runData);
+        }
+    }
+    
     public RunMap getRunMap() {
-        return new RunMap(this.getRecords());
-    }
-
-    public RunMap getRunMap(final List<RunRange> ranges) {
-        final List<CSVRecord> records = new ArrayList<CSVRecord>();
-        for (final RunRange range : ranges) {
-            System.out.println(range.toString());
-            if (range.getColumnNames().contains("run")) {
-                if (!range.getValue("run").isEmpty()) {
-                    final CSVRecord record = this.findRun(Integer.parseInt(range.getValue("run")));
-                    if (record != null) {
-                        records.add(record);
-                    } else {
-                        throw new RuntimeException("this RunRange object was not found. This shouldn't happen. "
-                                + range.toString());
-                    }
-                } else {
-                    throw new RuntimeException("this RunRange object has an empty run value ");
-                }
-            } else {
-                throw new RuntimeException("this RunRange object has no run column? " + range.toString());
-            }
+        return new RunMap(getRecords());
+    } 
+
+    public RunMap getRunMap(List<RunRange> ranges) {
+        List<CSVRecord> records = new ArrayList<CSVRecord>();
+        for(RunRange range : ranges) {
+           //System.out.println(range.toString());
+           if(range.getColumnNames().contains("run")) {
+               if(!range.getValue("run").isEmpty()) {
+                   CSVRecord record = findRun(Integer.parseInt(range.getValue("run")));
+                   if(record!=null) {
+                       records.add(record);
+                   } else {
+                       throw new RuntimeException("this RunRange object was not found. This shouldn't happen. " + range.toString());
+                   }
+               } else {
+                   throw new RuntimeException("this RunRange object has an empty run value ");
+               }
+           } else {
+               throw new RuntimeException("this RunRange object has no run column? " + range.toString());
+           }
         }
         return new RunMap(records);
-    }
-
+    } 
+
+    
 }

Modified: java/branches/HPSJAVA-488/conditions/src/main/java/org/hps/conditions/svt/SvtBiasConditionsLoader.java
 =============================================================================
--- java/branches/HPSJAVA-488/conditions/src/main/java/org/hps/conditions/svt/SvtBiasConditionsLoader.java	(original)
+++ java/branches/HPSJAVA-488/conditions/src/main/java/org/hps/conditions/svt/SvtBiasConditionsLoader.java	Mon Jul  6 15:27:19 2015
@@ -1,5 +1,5 @@
 /**
- *
+ * 
  */
 package org.hps.conditions.svt;
 
@@ -10,6 +10,7 @@
 import hep.aida.IPlotterStyle;
 
 import java.io.File;
+import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashSet;
@@ -21,12 +22,13 @@
 
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.CommandLineParser;
+import org.apache.commons.cli.HelpFormatter;
 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.hps.conditions.api.ConditionsObjectException;
 import org.hps.conditions.api.ConditionsRecord;
+import org.hps.conditions.api.DatabaseObjectException;
 import org.hps.conditions.database.DatabaseConditionsManager;
 import org.hps.conditions.run.RunRange;
 import org.hps.conditions.run.RunSpreadsheet;
@@ -41,20 +43,15 @@
 import org.lcsim.util.log.LogUtil;
 
 /**
- * @author Per Hansson Adrian, SLAC
+ * @author Per Hansson Adrian <[log in to unmask]>
+ *
  */
 public class SvtBiasConditionsLoader {
 
-    /**
-     * Setup control plots.
-     */
-    private static AIDA aida = AIDA.defaultInstance();
-    static IDataPointSet dpsBiasRuns = null;
-
-    static IDataPointSet dpsRuns = null;
     private static final Set<String> FIELDS = new HashSet<String>();
-
-    private static Logger logger = LogUtil.create(SvtBiasConditionsLoader.class, new BasicLogFormatter(), Level.INFO);
+    private static Logger logger = LogUtil.create(SvtBiasConditionsLoader.class, new BasicLogFormatter(),Level.INFO);
+    
+
     /**
      * Setup conditions.
      */
@@ -66,224 +63,292 @@
         FIELDS.add("end_time");
     }
 
-    private static IDataPoint addPoint(final IDataPointSet dps, final long mstime, final double val) {
-        final IDataPoint dp = dps.addPoint();
-        dp.coordinate(0).setValue(mstime / 1000.);
+    /**
+     * Setup control plots.
+     */
+    private static AIDA aida = AIDA.defaultInstance();
+    static IDataPointSet dpsRuns = null;
+    static IDataPointSet dpsBiasRuns = null;
+    
+    private static void setupPlots(boolean show) {
+        IDataPointSetFactory dpsf = aida.analysisFactory().createDataPointSetFactory(aida.tree());
+        dpsRuns = dpsf.create("dpsRuns","Run intervals", 2);
+        dpsBiasRuns = dpsf.create("dpsBiasRuns","Bias ON intervals associated with runs", 2);
+        IPlotter plotter = aida.analysisFactory().createPlotterFactory().create("Bias run ranges");
+        IPlotterStyle plotterStyle = aida.analysisFactory().createPlotterFactory().createPlotterStyle();
+        plotterStyle.xAxisStyle().setParameter("type", "date");
+        plotter.createRegions(1, 3);
+        plotter.region(0).plot(dpsRuns,plotterStyle);
+        plotter.region(1).plot(dpsBiasRuns,plotterStyle);
+        plotter.region(2).plot(dpsRuns,plotterStyle);
+        plotter.region(2).plot(dpsBiasRuns,plotterStyle,"mode=overlay");
+        if(show) plotter.show();
+        
+    }
+    
+    private static IDataPoint addPoint(IDataPointSet dps, long mstime, double val) {
+        IDataPoint dp = dps.addPoint();
+        dp.coordinate(0).setValue(mstime/1000.);
         dp.coordinate(1).setValue(val);
         return dp;
     }
-
-    private final static SvtBiasConstantCollection findCollection(final List<SvtBiasConstantCollection> list,
-            final Date date) {
-        for (final SvtBiasConstantCollection collection : list) {
-            if (collection.find(date) != null) {
-                return collection;
-            }
-        }
-        return null;
-    }
-
+    
+    
+    /**
+     *  Default constructor
+     */
+    public SvtBiasConditionsLoader() {
+    }
+
+    
+    
+    
     /**
      * Check validity of @link RunData
-     *
      * @param data the @link RunData to check
      * @return <code>true</code> if valid, <code>false</code> otherwise.
      */
-    private static boolean isValid(final RunData data) {
-        if (data.getStartDate() == null || data.getEndDate() == null || data.getStartDate().before(new Date(99, 1, 1))) {
-            logger.warning("This run data is not valid: " + data.toString());
+    private static boolean isValid(RunData data) {
+        if(data.getStartDate() == null || data.getEndDate() == null || data.getStartDate().before(new Date(99,1,1))) {
+            logger.fine("This run data is not valid: " + data.toString());
             return false;
-        }
+        } 
         if (data.getStartDate().after(data.getEndDate())) {
             throw new RuntimeException("start date is after end date?!" + data.toString());
         }
         return true;
     }
-
-    private static final void loadToConditionsDB(final List<SvtBiasRunRange> ranges, final boolean doIt) {
+    
+    //private static Options options = null;
+    
+    
+    public static RunMap getRunMapFromSpreadSheet(String path) {
+        // Load in CSV records from the exported run spreadsheet.
+        logger.info(path);
+        final RunSpreadsheet runSheet = new RunSpreadsheet(new File(path));
+
+        // Find the run ranges that have the same fields values.
+        final List<RunRange> ranges = RunRange.findRunRanges(runSheet, FIELDS);
+        logger.info("Found " + ranges.size() + " ranges.");
+        for(RunRange range : ranges) logger.fine(range.toString());
+        // find the run records (has converted dates and stuff) for these ranges
+        RunMap runmap  = runSheet.getRunMap(ranges);
+        logger.info("Found " + runmap.size() + " runs in the run map.");
+        return runmap;
+    }
+    
+    public static List<SvtBiasRunRange> getBiasRunRanges(RunMap runmap,
+            SvtBiasMyaDumpReader biasMyaReader) {
+        List<SvtBiasRunRange> biasRunRanges = new ArrayList<SvtBiasRunRange>();
+        // loop over runs from CSV        
+        RunData prev = null;
+        for(Entry<Integer,RunData> entry : runmap.entrySet()) {
+            int run = entry.getKey();
+            RunData data = entry.getValue();
+            logger.fine("Processing " + run + " " + data.toString());
+            
+            //check that data is ok
+            if (isValid(data)) {
+                if(prev!=null) {
+                    if(isValid(prev)) {
+                        if(prev.getEndDate().after(data.getStartDate())) {
+                            throw new RuntimeException("prev end date after run started?: " + prev.toString() + "   " + data.toString());
+                        } else if(prev.getStartDate().after(data.getEndDate())) {
+                            throw new RuntimeException("prev start date before run ended?: " + prev.toString() + "   " + data.toString());
+                        }
+                    }
+                }
+                
+                // find the bias ranges applicable to this run
+                SvtBiasMyaRanges overlaps = biasMyaReader.findOverlappingRanges(data.getStartDate(), data.getEndDate());
+                logger.fine("Found " + overlaps.size() + " overlapping bias ranges");
+                logger.fine(overlaps.toString());
+
+                biasRunRanges.add(new SvtBiasRunRange(data,overlaps));
+                prev = data;
+
+            }
+        }
+        return biasRunRanges;
+    }
+    
+    
+    
+    
+    
+    /**
+     * Load SVT HV bias constants into the conditions database.
+     * 
+     * @param args the command line arguments (requires a CVS run log file and a MYA dump file.)
+     */
+    public static void main(String[] args) {
+
+        Options options = new Options();
+        options.addOption(new Option("c", true, "CVS run file"));
+        options.addOption(new Option("m", true, "MYA dump file"));
+        options.addOption(new Option("g", false, "Actually load stuff into DB"));
+        options.addOption(new Option("s", false, "Show plots"));
+        
+        final CommandLineParser parser = new PosixParser();
+        CommandLine cl = null;
+        try {
+            cl = parser.parse(options, args);
+        } catch (ParseException e) {
+            throw new RuntimeException("Cannot parse.", e);
+        }
+        
+        if(!cl.hasOption("c") || !cl.hasOption("m")) {
+            printUsage(options);
+            return;
+        }
+        
+        
+        
+        // Setup plots
+        setupPlots(cl.hasOption("s")?true:false);
+
+        
+        // Load in CSV records from the exported run spreadsheet.
+        RunMap runmap = getRunMapFromSpreadSheet(cl.getOptionValue("c"));
+        
+
+        // Load MYA dump
+        SvtBiasMyaDumpReader biasMyaReader = new SvtBiasMyaDumpReader(cl.getOptionValue("m"));
+        logger.info("Got " + biasMyaReader.getRanges().size() + " bias ranges");
+        
+        
+        // Combine them to run ranges when bias was on        
+        // each run may have multiple bias ranges
+        
+        List<SvtBiasRunRange> biasRunRanges = getBiasRunRanges(runmap,biasMyaReader);
+        
+
+        
+        // fill graphs
+        if(cl.hasOption("s")) {
+            for(SvtBiasRunRange r : biasRunRanges) {
+                logger.info(r.toString());
+                if(r.getRun().getRun()>5600) {//9999999999999.0) {
+                    //if(dpsRuns.size()/4.0<500) {//9999999999999.0) {
+                    addPoint(dpsRuns, r.getRun().getStartDate().getTime(),0.0);
+                    addPoint(dpsRuns, r.getRun().getStartDate().getTime(),1.0);
+                    addPoint(dpsRuns, r.getRun().getEndDate().getTime(),1.0);
+                    addPoint(dpsRuns, r.getRun().getEndDate().getTime(),0.0);
+
+                    for(SvtBiasMyaRange br : r.getRanges()) {
+                        addPoint(dpsBiasRuns, br.getStart().getDate().getTime(),0.0);
+                        addPoint(dpsBiasRuns, br.getStart().getDate().getTime(),0.5);
+                        addPoint(dpsBiasRuns, br.getEnd().getDate().getTime(),0.5);
+                        addPoint(dpsBiasRuns, br.getEnd().getDate().getTime(),0.0);
+                    }
+
+
+                }   
+
+            }
+        }
+
+        
+        // load to DB
+        if(cl.hasOption("g")) {
+            loadToConditionsDB(biasRunRanges);
+        }
+    }
+    
+    
+
+    private static void printUsage(Options options) {
+       HelpFormatter formatter  = new HelpFormatter();
+       formatter.printHelp("Need to adhere to these options", options);
+        
+    }
+
+    private final static SvtBiasConstantCollection findCollection(final List<SvtBiasConstantCollection> list, Date date) {
+        for( SvtBiasConstantCollection collection : list) {
+            if(collection.find(date) != null) {
+                return collection;
+            } 
+        }
+        return null;
+    }
+
+    private static final void loadToConditionsDB(List<SvtBiasRunRange> ranges) {
         logger.info("Load to DB...");
-
+        
         // Create a new collection for each run
-        final List<Integer> runsadded = new ArrayList<Integer>();
-
-        for (final SvtBiasRunRange range : ranges) {
+        List<Integer> runsadded = new ArrayList<Integer>();
+        
+        
+        
+        
+        for(SvtBiasRunRange range : ranges) {
             logger.info("Loading " + range.toString());
-            final RunData rundata = range.getRun();
-            if (runsadded.contains(rundata.getRun())) {
+            RunData rundata = range.getRun();
+            if(runsadded.contains(rundata.getRun())) {
                 logger.warning("Run " + Integer.toString(rundata.getRun()) + " was already added?");
                 throw new RuntimeException("Run " + Integer.toString(rundata.getRun()) + " was already added?");
             }
             runsadded.add(rundata.getRun());
-            for (final SvtBiasMyaRange biasRange : range.getRanges()) {
-                // create a collection
-                final SvtBiasConstantCollection collection = new SvtBiasConstantCollection();
-                // create a constant and add to the collection
+
+            if(range.getRanges().isEmpty()) {
+                logger.info("No bias range for run " + range.getRun().getRun());
+                continue;
+            }
+                       
+            //create a collection
+            SvtBiasConstantCollection collection = new SvtBiasConstantCollection();
+            int collectionId = -1;
+            try {
+                collectionId = MANAGER.getCollectionId(collection, "run ranges for SVT HV bias ON");
+            } catch (SQLException e1) {
+               throw new RuntimeException(e1);
+            }
+
+            collection.setCollectionId(collectionId);
+            
+            final ConditionsRecord condition = new ConditionsRecord();
+            condition.setFieldValue("run_start", rundata.getRun());
+            condition.setFieldValue("run_end", rundata.getRun());
+            condition.setFieldValue("name", "svt_bias");
+            condition.setFieldValue("table_name", "svt_bias_constants");
+            condition.setFieldValue("notes", "constants from mya");
+            condition.setFieldValue("created", new Date());
+            condition.setFieldValue("created_by", System.getProperty("user.name"));            
+            condition.setFieldValue("collection_id", collectionId);
+               
+            try {
+            for (SvtBiasMyaRange biasRange : range.getRanges()) {
+                //create a constant and add to the collection
                 final SvtBiasConstant constant = new SvtBiasConstant();
                 constant.setFieldValue("start", biasRange.getStartDate());
                 constant.setFieldValue("end", biasRange.getEndDate());
                 constant.setFieldValue("value", biasRange.getStart().getValue());
+                collection.add(constant);
+                
+                logger.info(condition.toString());
+            }
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+
+            try {
                 try {
-                    collection.add(constant);
-                } catch (final ConditionsObjectException e) {
-                    throw new RuntimeException(e);
+                    collection.insert();
+                } catch (SQLException e) {
+                    throw new RuntimeException("cant instert collection", e);
                 }
-
-                final ConditionsRecord condition = new ConditionsRecord();
-                condition.setFieldValue("run_start", rundata.getRun());
-                condition.setFieldValue("run_end", rundata.getRun());
-                condition.setFieldValue("name", "svt_bias");
-                condition.setFieldValue("table_name", "svt_bias");
-                condition.setFieldValue("notes", "constants from mya");
-                condition.setFieldValue("created", new Date());
-                condition.setFieldValue("created_by", System.getProperty("user.name"));
-
-                condition.setFieldValue("collection_id", collection.getCollectionId());
-
-                logger.info(condition.toString());
-
-                if (doIt) {
-                    try {
-                        condition.insert();
-                    } catch (final Exception e) {
-                        throw new RuntimeException(e);
-                    }
-                }
-            }
-        }
-
-    }
-
-    // private static Options options = null;
-
-    /**
-     * Load SVT HV bias constants into the conditions database.
-     *
-     * @param args the command line arguments (requires a CVS run log file and a MYA dump file.)
-     */
-    public static void main(final String[] args) {
-
-        final Options options = new Options();
-        options.addOption(new Option("c", true, "CVS run file"));
-        options.addOption(new Option("m", true, "MYA dump file"));
-        options.addOption(new Option("g", false, "Actually load stuff into DB"));
-        options.addOption(new Option("s", false, "Show plots"));
-
-        final CommandLineParser parser = new PosixParser();
-        CommandLine cl = null;
-        try {
-            cl = parser.parse(options, args);
-        } catch (final ParseException e) {
-            throw new RuntimeException("Cannot parse.", e);
-        }
-
-        // Setup plots
-        setupPlots(cl.hasOption("s") ? true : false);
-
-        // Load in CSV records from the exported run spreadsheet.
-        final String path = cl.getOptionValue("c");
-        logger.info(path);
-        final RunSpreadsheet runSheet = new RunSpreadsheet(new File(path));
-
-        // Find the run ranges that have the same fields values.
-        final List<RunRange> ranges = RunRange.findRunRanges(runSheet, FIELDS);
-        logger.info("Found " + ranges.size() + " ranges.");
-        for (final RunRange range : ranges) {
-            logger.info(range.toString());
-        }
-        // find the run records (has converted dates and stuff) for these ranges
-        final RunMap runmap = runSheet.getRunMap(ranges);
-        logger.info("Found " + runmap.size() + " runs in the run map.");
-
-        // Load MYA dump
-        final SvtBiasMyaDumpReader biasMyaReader = new SvtBiasMyaDumpReader(cl.getOptionValue("m"));
-        logger.info("Got " + biasMyaReader.getRanges().size() + " bias ranges");
-
-        // Combine them to run ranges when bias was on
-        // each run may have multiple bias ranges
-
-        final List<SvtBiasRunRange> biasRunRanges = new ArrayList<SvtBiasRunRange>();
-        // loop over runs from CSV
-        RunData prev = null;
-        for (final Entry<Integer, RunData> entry : runmap.entrySet()) {
-            final int run = entry.getKey();
-            final RunData data = entry.getValue();
-            logger.info("Processing " + run + " " + data.toString());
-
-            // check that data is ok
-            if (isValid(data)) {
-                if (prev != null) {
-                    if (isValid(prev)) {
-                        if (prev.getEndDate().after(data.getStartDate())) {
-                            throw new RuntimeException("prev end date after run started?: " + prev.toString() + "   "
-                                    + data.toString());
-                        } else if (prev.getStartDate().after(data.getEndDate())) {
-                            throw new RuntimeException("prev start date before run ended?: " + prev.toString() + "   "
-                                    + data.toString());
-                        }
-                    }
-                }
-
-                // find the bias ranges applicable to this run
-                final SvtBiasMyaRanges overlaps = biasMyaReader.findOverlappingRanges(data.getStartDate(),
-                        data.getEndDate());
-                logger.fine("Found " + overlaps.size() + " overlapping bias ranges");
-                logger.fine(overlaps.toString());
-
-                biasRunRanges.add(new SvtBiasRunRange(data, overlaps));
-                prev = data;
-
-            }
-        }
-
-        // fill graphs
-        if (cl.hasOption("s")) {
-            for (final SvtBiasRunRange r : biasRunRanges) {
-                logger.info(r.toString());
-                if (r.getRun().getRun() > 5600) {// 9999999999999.0) {
-                    // if(dpsRuns.size()/4.0<500) {//9999999999999.0) {
-                    addPoint(dpsRuns, r.getRun().getStartDate().getTime(), 0.0);
-                    addPoint(dpsRuns, r.getRun().getStartDate().getTime(), 1.0);
-                    addPoint(dpsRuns, r.getRun().getEndDate().getTime(), 1.0);
-                    addPoint(dpsRuns, r.getRun().getEndDate().getTime(), 0.0);
-
-                    for (final SvtBiasMyaRange br : r.getRanges()) {
-                        addPoint(dpsBiasRuns, br.getStart().getDate().getTime(), 0.0);
-                        addPoint(dpsBiasRuns, br.getStart().getDate().getTime(), 0.5);
-                        addPoint(dpsBiasRuns, br.getEnd().getDate().getTime(), 0.5);
-                        addPoint(dpsBiasRuns, br.getEnd().getDate().getTime(), 0.0);
-                    }
-
-                }
-
-            }
-        }
-
-        // load to DB
-        loadToConditionsDB(biasRunRanges, cl.hasOption("g") ? true : false);
-
-    }
-
-    private static void setupPlots(final boolean show) {
-        final IDataPointSetFactory dpsf = aida.analysisFactory().createDataPointSetFactory(aida.tree());
-        dpsRuns = dpsf.create("dpsRuns", "Run intervals", 2);
-        dpsBiasRuns = dpsf.create("dpsBiasRuns", "Bias ON intervals associated with runs", 2);
-        final IPlotter plotter = aida.analysisFactory().createPlotterFactory().create("Bias run ranges");
-        final IPlotterStyle plotterStyle = aida.analysisFactory().createPlotterFactory().createPlotterStyle();
-        plotterStyle.xAxisStyle().setParameter("type", "date");
-        plotter.createRegions(1, 3);
-        plotter.region(0).plot(dpsRuns, plotterStyle);
-        plotter.region(1).plot(dpsBiasRuns, plotterStyle);
-        plotter.region(2).plot(dpsRuns, plotterStyle);
-        plotter.region(2).plot(dpsBiasRuns, plotterStyle, "mode=overlay");
-        if (show) {
-            plotter.show();
-        }
-
-    }
-
-    /**
-     * Default constructor
-     */
-    public SvtBiasConditionsLoader() {
-    }
+                condition.insert();
+
+            } catch (DatabaseObjectException | SQLException e) {
+                throw new RuntimeException(e);
+            }
+            
+        }
+
+
+    }
+    
+   
+    
+
 }

Modified: java/branches/HPSJAVA-488/conditions/src/main/java/org/hps/conditions/svt/SvtBiasConstant.java
 =============================================================================
--- java/branches/HPSJAVA-488/conditions/src/main/java/org/hps/conditions/svt/SvtBiasConstant.java	(original)
+++ java/branches/HPSJAVA-488/conditions/src/main/java/org/hps/conditions/svt/SvtBiasConstant.java	Mon Jul  6 15:27:19 2015
@@ -10,12 +10,13 @@
 import org.hps.conditions.database.Table;
 
 /**
+ * 
  * Encapsulates an SVT bias constant, which is range in time where bias was ON.
- *
- * @author Per Hansson Adrian, SLAC
+ * 
+ * @author Per Hansson Adrian <[log in to unmask]>
  */
-@Table(names = "svt_bias")
-@Converter(multipleCollectionsAction = MultipleCollectionsAction.LAST_UPDATED)
+@Table(names  = "svt_bias_constants")
+@Converter(multipleCollectionsAction = MultipleCollectionsAction.LAST_CREATED)
 public final class SvtBiasConstant extends BaseConditionsObject {
 
     /**
@@ -23,51 +24,52 @@
      */
     @SuppressWarnings("serial")
     public static class SvtBiasConstantCollection extends BaseConditionsObjectCollection<SvtBiasConstant> {
-
+        
         /**
          * Find bias constant by date.
-         *
+         * 
          * @param date the offset
          * @return the constant containing the date or <code>null</code> otherwise.
+         * 
          */
-        public SvtBiasConstant find(final Date date) {
-            for (final SvtBiasConstant constant : this) {
-                if (date.after(constant.getStart()) && date.before(constant.getEnd())) {
+        public SvtBiasConstant find(Date date) {
+            for (SvtBiasConstant constant : this) {
+                if(date.after(constant.getStart()) && date.before(constant.getEnd())) {
                     return constant;
                 }
             }
             return null;
         }
     }
+    
+    
+    /**
+     * The start date. 
+     * 
+     * @return the start date
+     */
+    @Field(names = {"start"})
+    public Date getStart() {
+        return getFieldValue("start");
+    }
 
     /**
-     * The end date.
+     * The end date. 
      * 
      * @return the end date
      */
     @Field(names = {"end"})
     public Date getEnd() {
-        return this.getFieldValue("end");
+        return getFieldValue("end");
     }
 
     /**
-     * The start date.
-     * 
-     * @return the start date
-     */
-    @Field(names = {"start"})
-    public Date getStart() {
-        return this.getFieldValue("start");
-    }
-
-    /**
-     * The bias value .
-     * 
+     * The bias value.
+     *  
      * @return the bias value
      */
     @Field(names = {"value"})
-    public double getValue() {
-        return this.getFieldValue("value");
+    public Double getValue() {
+        return getFieldValue("value");
     }
-
 }

Modified: java/branches/HPSJAVA-488/conditions/src/main/java/org/hps/conditions/svt/SvtBiasMyaDumpReader.java
 =============================================================================
--- java/branches/HPSJAVA-488/conditions/src/main/java/org/hps/conditions/svt/SvtBiasMyaDumpReader.java	(original)
+++ java/branches/HPSJAVA-488/conditions/src/main/java/org/hps/conditions/svt/SvtBiasMyaDumpReader.java	Mon Jul  6 15:27:19 2015
@@ -9,288 +9,284 @@
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.TimeZone;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
+import org.hps.conditions.run.RunSpreadsheet;
 import org.hps.conditions.run.RunSpreadsheet.RunData;
 import org.hps.util.BasicLogFormatter;
 import org.lcsim.util.log.LogUtil;
 
-/**
- * @author Per Hansson Adrian, SLAC
- */
+
+
 public class SvtBiasMyaDumpReader {
-
-    public static final class SvtBiasMyaEntry {
-        private final Date date;
-        private final String name;
-        private final double value;
-
-        public SvtBiasMyaEntry(final String name, final Date date, final double value) {
-            this.date = date;
-            this.name = name;
-            this.value = value;
-        }
-
-        public Date getDate() {
-            return this.date;
-        }
-
-        public double getValue() {
-            return this.value;
-        }
-
-        @Override
-        public String toString() {
-            return this.name + " " + this.date.toString() + " value " + this.value;
-        }
-    }
-
-    public static class SvtBiasMyaRange {
-        private SvtBiasMyaEntry end;
-        private SvtBiasMyaEntry start;
-
-        public SvtBiasMyaRange() {
-        }
-
-        public SvtBiasMyaRange(final SvtBiasMyaEntry start) {
-            this.start = start;
-        }
-
-        public SvtBiasMyaEntry getEnd() {
-            return this.end;
-        }
-
-        public Date getEndDate() {
-            return this.getEnd().getDate();
-        }
-
-        public SvtBiasMyaEntry getStart() {
-            return this.start;
-        }
-
-        public Date getStartDate() {
-            return this.getStart().getDate();
-        }
-
-        public boolean overlap(final Date date_start, final Date date_end) {
-            if (date_end.before(this.getStartDate())) {
-                return false;
-            } else if (date_start.after(this.getEndDate())) {
-                return false;
-            }
-            return true;
-        }
-
-        public void setEnd(final SvtBiasMyaEntry end) {
-            this.end = end;
-        }
-
-        public void setStart(final SvtBiasMyaEntry start) {
-            this.start = start;
-        }
-
-        @Override
-        public String toString() {
-            return "START: " + this.start.toString() + "   END: " + this.end.toString();
-        }
-    }
-
-    public static final class SvtBiasMyaRanges extends ArrayList<SvtBiasMyaRange> {
-        public SvtBiasMyaRanges() {
-        }
-
-        public SvtBiasMyaRanges findOverlappingRanges(final Date date_start, final Date date_end) {
-            logger.fine("look for overlaps from " + date_start.toString() + " to " + date_end.toString());
-            final SvtBiasMyaRanges overlaps = new SvtBiasMyaRanges();
-            for (final SvtBiasMyaRange range : this) {
-                logger.fine("loop bias range " + range.toString());
-                if (range.overlap(date_start, date_end)) {
-                    overlaps.add(range);
-                    logger.fine("overlap found!! ");
-                }
-            }
-            return overlaps;
-        }
-
-        @Override
-        public String toString() {
-            final StringBuffer sb = new StringBuffer();
-            for (final SvtBiasMyaRange range : this) {
-                sb.append(range.toString() + "\n");
-            }
-            return sb.toString();
-        }
-    }
-
-    public static final class SvtBiasRunRange {
-        private SvtBiasMyaRanges ranges;
-        private RunData run;
-
-        public SvtBiasRunRange(final RunData run, final SvtBiasMyaRanges ranges) {
-            this.setRun(run);
-            this.setRanges(ranges);
-        }
-
-        public SvtBiasMyaRanges getRanges() {
-            return this.ranges;
-        }
-
-        public RunData getRun() {
-            return this.run;
-        }
-
-        public void setRanges(final SvtBiasMyaRanges ranges) {
-            this.ranges = ranges;
-        }
-
-        public void setRun(final RunData run) {
-            this.run = run;
-        }
-
-        @Override
-        public String toString() {
-            final StringBuffer sb = new StringBuffer();
-            sb.append("\nRun " + this.run.toString() + ":");
-            for (final SvtBiasMyaRange r : this.ranges) {
-                sb.append("\n" + r.toString());
-            }
-            return sb.toString();
-        }
-    }
-
-    private static final double BIASVALUEON = 178.0;
-    private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-
+    
     private static Logger logger = LogUtil.create(SvtBiasMyaDumpReader.class, new BasicLogFormatter(), Level.INFO);
 
-    public static void main(final String[] args) {
-
-        final SvtBiasMyaDumpReader dumpReader = new SvtBiasMyaDumpReader(args);
-
+    
+    public static void main(String[] args) {
+        
+        SvtBiasMyaDumpReader dumpReader = new SvtBiasMyaDumpReader(args);
+        
         dumpReader.printRanges();
-
-    }
-
-    protected static List<SvtBiasMyaEntry> readMyaDump(final File file) {
-
-        final List<SvtBiasMyaEntry> myaEntries = new ArrayList<SvtBiasMyaEntry>();
+      
+        
+    }
+    
+    private static final SimpleDateFormat DATE_FORMAT = new RunSpreadsheet.AnotherSimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+    //private static final TimeZone timeZone = TimeZone.getTimeZone("EST");
+    public static final double BIASVALUEON = 178.0;
+    private List<SvtBiasMyaEntry> myaEntries = new ArrayList<SvtBiasMyaEntry>();
+    private SvtBiasMyaRanges biasRanges = new SvtBiasMyaRanges();
+    
+    public SvtBiasMyaDumpReader() {
+    }
+
+    public SvtBiasMyaRanges findOverlappingRanges(Date date_start, Date date_end) {
+        return this.biasRanges.findOverlappingRanges(date_start, date_end);
+    }
+    
+    private void readFromFile(File file) {
+        addEntries(readMyaDump(file));
+        logger.info("Got " + getEntries().size() + " entries from " + file.getName());
+       
+    }
+    public void buildFromFiles(String[] args) {
+        for( int i=0; i<args.length; ++i) {
+            readFromFile(new File(args[i]));
+        }
+        buildRanges();       
+    }
+    
+    public SvtBiasMyaDumpReader(String[] args) {
+        buildFromFiles(args);
+    }
+    
+    public SvtBiasMyaDumpReader(String filepath) {
+        String[] files = {filepath};
+        buildFromFiles(files);
+    }
+
+    
+    public void addEntry(SvtBiasMyaEntry e) {
+        this.myaEntries.add(e);
+    }
+
+    public void addEntries(List<SvtBiasMyaEntry> e) {
+        this.myaEntries.addAll(e);
+    }
+
+    public List<SvtBiasMyaEntry> getEntries() {
+        return this.myaEntries;
+    }
+
+    public SvtBiasMyaRanges getRanges() {
+        return this.biasRanges;
+    }
+
+    
+    private void printRanges() {
+        for( SvtBiasMyaRange r : biasRanges) {
+            logger.info(r.toString());
+        }
+     }
+    
+    
+    protected static List<SvtBiasMyaEntry> readMyaDump(File file) {
+
+        List<SvtBiasMyaEntry> myaEntries = new ArrayList<SvtBiasMyaEntry>();
         try {
 
-            final BufferedReader br = new BufferedReader(new FileReader(file));
+            BufferedReader br = new BufferedReader(new FileReader(file));
             String line;
             while ((line = br.readLine()) != null) {
-                // System.out.println(line);
-                final String arr[] = line.split(" ");
+                //System.out.println(line);
+                String arr[] = line.split(" ");
                 try {
-
-                    if (arr.length < 3) {
-                        throw new ParseException("this line is not correct.", 0);
+                    
+                    if(arr.length<3) {
+                        throw new ParseException("this line is not correct.",0);
                     }
-                    final Date date = DATE_FORMAT.parse(arr[0] + " " + arr[1]);
-                    final double value = Double.parseDouble(arr[2]);
-                    final SvtBiasMyaEntry entry = new SvtBiasMyaEntry(file.getName(), date, value);
+                    
+                    Date date = DATE_FORMAT.parse(arr[0] + " " + arr[1]);
+                    double value = Double.parseDouble(arr[2]);
+                    SvtBiasMyaEntry entry = new SvtBiasMyaEntry(file.getName(), date, value);
                     myaEntries.add(entry);
-                } catch (final ParseException e) {
+                } catch (ParseException e) {
                     e.printStackTrace();
                 }
             }
             br.close();
 
-        } catch (final IOException e) {
+        } catch (IOException e) {
             e.printStackTrace();
         }
         return myaEntries;
 
     }
-
-    private final SvtBiasMyaRanges biasRanges = new SvtBiasMyaRanges();
-
-    private final List<SvtBiasMyaEntry> myaEntries = new ArrayList<SvtBiasMyaEntry>();
-
-    public SvtBiasMyaDumpReader() {
-    }
-
-    public SvtBiasMyaDumpReader(final String filepath) {
-        final String[] files = {filepath};
-        this.buildFromFiles(files);
-    }
-
-    public SvtBiasMyaDumpReader(final String[] args) {
-        this.buildFromFiles(args);
-    }
-
-    public void addEntries(final List<SvtBiasMyaEntry> e) {
-        this.myaEntries.addAll(e);
-    }
-
-    public void addEntry(final SvtBiasMyaEntry e) {
-        this.myaEntries.add(e);
-    }
-
-    public void buildFromFiles(final String[] args) {
-        for (final String arg : args) {
-            this.readFromFile(new File(arg));
-        }
-        this.buildRanges();
-    }
-
+    
     public void buildRanges() {
         SvtBiasMyaRange range = null;
         SvtBiasMyaEntry eprev = null;
-        for (final SvtBiasMyaEntry e : this.myaEntries) {
-
-            // System.out.println(e.toString());
-
-            if (eprev != null) {
-                if (e.getDate().before(eprev.getDate())) {
+        for(SvtBiasMyaEntry e : this.myaEntries) {
+            
+            //System.out.println(e.toString());
+            
+            if(eprev!=null) {
+                if(e.getDate().before(eprev.getDate())) {
                     throw new RuntimeException("date list is not ordered: " + eprev.toString() + " vs " + e.toString());
                 }
             }
-
-            if (e.getValue() > BIASVALUEON) {
-                if (range == null) {
+            
+            if( e.getValue() > BIASVALUEON) {
+                if (range==null) {
                     logger.fine("BIAS ON: " + e.toString());
                     range = new SvtBiasMyaRange();
                     range.setStart(e);
-                }
+                } 
             } else {
-                // close it
-                if (range != null) {
+                //close it
+                if (range!=null) {
                     logger.fine("BIAS TURNED OFF: " + e.toString());
                     range.setEnd(e);
                     this.biasRanges.add(range);
                     range = null;
                 }
-            }
+            }            
             eprev = e;
         }
         logger.info("Built " + this.biasRanges.size() + " ranges");
-
-    }
-
-    public SvtBiasMyaRanges findOverlappingRanges(final Date date_start, final Date date_end) {
-        return this.biasRanges.findOverlappingRanges(date_start, date_end);
-    }
-
-    public List<SvtBiasMyaEntry> getEntries() {
-        return this.myaEntries;
-    }
-
-    public SvtBiasMyaRanges getRanges() {
-        return this.biasRanges;
-    }
-
-    private void printRanges() {
-        for (final SvtBiasMyaRange r : this.biasRanges) {
-            logger.info(r.toString());
-        }
-    }
-
-    private void readFromFile(final File file) {
-        this.addEntries(readMyaDump(file));
-        logger.info("Got " + this.getEntries().size() + " entries from " + file.getName());
-
-    }
+        
+    }
+    
+    
+    public static final class SvtBiasMyaEntry {
+        private Date date;
+        private String name;
+        private double value;
+        public SvtBiasMyaEntry(String name, Date date, double value) {
+            this.date = date;
+            this.name = name;
+            this.value = value;
+        }
+        public double getValue() {
+            return value;
+        }
+        public Date getDate() {
+            return this.date;
+        }
+        public String toString() {
+            return name + " " + date.toString() + " (epoch " + Long.toString(date.getTime()) + ")" + " value " + value;
+        }
+    }
+
+
+    
+    public static final class SvtBiasMyaRanges extends ArrayList<SvtBiasMyaRange> {
+        public SvtBiasMyaRanges() {}
+        public SvtBiasMyaRanges findOverlappingRanges(Date date_start, Date date_end) {
+            logger.fine("look for overlaps from " + date_start.toString() + " to " + date_end.toString());
+            SvtBiasMyaRanges overlaps = new SvtBiasMyaRanges();
+            for(SvtBiasMyaRange range : this) {
+                logger.fine("loop bias range " + range.toString());
+                if( range.overlap(date_start,date_end) ) {
+                    overlaps.add(range);
+                    logger.fine("overlap found!! ");
+                }
+            }
+            return overlaps;
+        }
+        public String toString() {
+            StringBuffer sb = new StringBuffer();
+            for(SvtBiasMyaRange range : this) {
+                sb.append(range.toString() + "\n");
+            }
+            return sb.toString();
+        }
+        
+        public boolean includes(Date date) {
+            for(SvtBiasMyaRange r : this) {
+                if(r.includes(date)) return true;
+            }
+            return false;
+        }
+        
+    }
+    
+    public static class SvtBiasMyaRange {
+        private SvtBiasMyaEntry start;
+        private SvtBiasMyaEntry end;
+        public SvtBiasMyaRange() {}
+        public Date getStartDate() {
+            return getStart().getDate();
+        }
+        public Date getEndDate() {
+            return getEnd().getDate();
+        }
+        public boolean overlap(Date date_start, Date date_end) {
+            if( date_end.before(getStartDate()) ) {
+                return false;
+            } else if ( date_start.after(getEndDate())) {
+                return false;
+            } 
+            return true;
+        }
+        public SvtBiasMyaRange(SvtBiasMyaEntry start) {
+            this.start = start;
+        }
+        public SvtBiasMyaEntry getEnd() {
+            return end;
+        }
+        public void setEnd(SvtBiasMyaEntry end) {
+            this.end = end;
+        }
+        public SvtBiasMyaEntry getStart() {
+            return start;
+        }
+        public void setStart(SvtBiasMyaEntry start) {
+            this.start = start;
+        }
+        public String toString() {
+            return "START: " + start.toString() + "   END: " + end.toString();
+        }
+        public boolean includes(Date date) {
+            if( date.before(getStartDate()) || date.after(getEndDate()) ) {
+                return false;
+            } else {
+                return true;
+            }
+        }
+    }
+    
+    public static final class SvtBiasRunRange {
+        private RunData run;
+        private SvtBiasMyaRanges ranges;
+        public SvtBiasRunRange(RunData run, SvtBiasMyaRanges ranges) {
+            setRun(run);
+            setRanges(ranges);
+        }
+        public RunData getRun() {
+            return run;
+        }
+        public void setRun(RunData run) {
+            this.run = run;
+        }
+        public SvtBiasMyaRanges getRanges() {
+            return ranges;
+        }
+        public void setRanges(SvtBiasMyaRanges ranges) {
+            this.ranges = ranges;
+        }
+        public String toString() {
+            StringBuffer sb  = new StringBuffer();
+            sb.append("\nRun " + run.toString() + ":");
+            for (SvtBiasMyaRange r : ranges) {
+                sb.append("\n" + r.toString());
+            }
+            return sb.toString();
+        }
+    }
+    
 
 }

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