Author: [log in to unmask] Date: Fri Jul 31 19:23:30 2015 New Revision: 3322 Log: fixing bugs Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBiasConditionsLoader.java java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtMotorPosition.java Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBiasConditionsLoader.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBiasConditionsLoader.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBiasConditionsLoader.java Fri Jul 31 19:23:30 2015 @@ -21,6 +21,7 @@ import org.apache.commons.cli.ParseException; import org.apache.commons.cli.PosixParser; import org.hps.conditions.api.ConditionsRecord; +import org.hps.conditions.api.TableMetaData; import org.hps.conditions.database.DatabaseConditionsManager; import org.hps.conditions.run.RunRange; import org.hps.conditions.run.RunSpreadsheet; @@ -31,7 +32,9 @@ import org.hps.conditions.svt.SvtBiasMyaDataReader.SvtBiasRunRange; import org.hps.conditions.svt.SvtMotorMyaDataReader.SvtPositionMyaRange; import org.hps.conditions.svt.SvtMotorMyaDataReader.SvtPositionRunRange; +import org.hps.conditions.svt.SvtMotorPosition.SvtMotorPositionCollection; import org.hps.util.BasicLogFormatter; +import org.lcsim.conditions.ConditionsManager; import org.lcsim.util.aida.AIDA; import org.lcsim.util.log.LogUtil; @@ -176,7 +179,7 @@ throw new RuntimeException("Cannot parse.", e); } - if (!cl.hasOption("c") || !cl.hasOption("m") || !cl.hasOption("p")) { + if (!cl.hasOption("c") || (!cl.hasOption("m") && !cl.hasOption("p"))) { printUsage(options); return; } @@ -192,47 +195,55 @@ runList = getRunListFromSpreadSheet(cl.getOptionValue("c")); } + List<SvtBiasRunRange> biasRunRanges = null; + List<SvtPositionRunRange> positionRunRanges = null; // Load MYA dump - List<SvtBiasMyaRange> biasRanges = SvtBiasMyaDataReader.readMyaData(new File(cl.getOptionValue("m")), 178.0, 2000, cl.hasOption("d")); - logger.info("Got " + biasRanges.size() + " bias ranges"); - - List<SvtPositionMyaRange> positionRanges = SvtMotorMyaDataReader.readMyaData(new File(cl.getOptionValue("p")), 1000, 10000); - logger.info("Got " + positionRanges.size() + " position ranges"); + if (cl.hasOption("m")) { + List<SvtBiasMyaRange> biasRanges = SvtBiasMyaDataReader.readMyaData(new File(cl.getOptionValue("m")), 178.0, 2000, cl.hasOption("d")); + logger.info("Got " + biasRanges.size() + " bias ranges"); + biasRunRanges = SvtBiasMyaDataReader.findOverlappingRanges(runList, biasRanges); + } + + if (cl.hasOption("p")) { + List<SvtPositionMyaRange> positionRanges = SvtMotorMyaDataReader.readMyaData(new File(cl.getOptionValue("p")), 1000, 10000); + logger.info("Got " + positionRanges.size() + " position ranges"); + positionRunRanges = SvtMotorMyaDataReader.findOverlappingRanges(runList, positionRanges); + } // Combine them to run ranges when bias was on // each run may have multiple bias ranges - List<SvtBiasRunRange> biasRunRanges = SvtBiasMyaDataReader.findOverlappingRanges(runList, biasRanges); - List<SvtPositionRunRange> positionRunRanges = SvtMotorMyaDataReader.findOverlappingRanges(runList, positionRanges); - // 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.getStartDate().getTime(), 0.0); - addPoint(dpsBiasRuns, br.getStartDate().getTime(), 0.3); - addPoint(dpsBiasRuns, br.getEndDate().getTime(), 0.3); - addPoint(dpsBiasRuns, br.getEndDate().getTime(), 0.0); + if (cl.hasOption("m")) { + 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.getStartDate().getTime(), 0.0); + addPoint(dpsBiasRuns, br.getStartDate().getTime(), 0.3); + addPoint(dpsBiasRuns, br.getEndDate().getTime(), 0.3); + addPoint(dpsBiasRuns, br.getEndDate().getTime(), 0.0); + } } } } - - for (SvtPositionRunRange r : positionRunRanges) { - logger.info(r.toString()); - if (r.getRun().getRun() > 5600) {//9999999999999.0) { - //if(dpsRuns.size()/4.0<500) {//9999999999999.0) { - for (SvtPositionMyaRange br : r.getRanges()) { - addPoint(dpsPositionRuns, br.getStartDate().getTime(), 0.0); - addPoint(dpsPositionRuns, br.getStartDate().getTime(), 0.5 + 100 * Math.max(br.getTop(), br.getBottom())); - addPoint(dpsPositionRuns, br.getEndDate().getTime(), 0.5 + 100 * Math.max(br.getTop(), br.getBottom())); - addPoint(dpsPositionRuns, br.getEndDate().getTime(), 0.0); + if (cl.hasOption("p")) { + for (SvtPositionRunRange r : positionRunRanges) { + logger.info(r.toString()); + if (r.getRun().getRun() > 5600) {//9999999999999.0) { + //if(dpsRuns.size()/4.0<500) {//9999999999999.0) { + for (SvtPositionMyaRange br : r.getRanges()) { + addPoint(dpsPositionRuns, br.getStartDate().getTime(), 0.0); + addPoint(dpsPositionRuns, br.getStartDate().getTime(), 0.5 + 100 * Math.max(br.getTop(), br.getBottom())); + addPoint(dpsPositionRuns, br.getEndDate().getTime(), 0.5 + 100 * Math.max(br.getTop(), br.getBottom())); + addPoint(dpsPositionRuns, br.getEndDate().getTime(), 0.0); + } } } } @@ -240,7 +251,12 @@ // load to DB if (cl.hasOption("g")) { - loadToConditionsDB(biasRunRanges); + if (cl.hasOption("m")) { + loadBiasesToConditionsDB(biasRunRanges); + } + if (cl.hasOption("p")) { + loadPositionsToConditionsDB(positionRunRanges); + } } } @@ -250,16 +266,7 @@ } - private static SvtBiasConstantCollection findCollection(final List<SvtBiasConstantCollection> list, Date date) { - for (SvtBiasConstantCollection collection : list) { - if (collection.find(date) != null) { - return collection; - } - } - return null; - } - - private static void loadToConditionsDB(List<SvtBiasRunRange> ranges) { + private static void loadBiasesToConditionsDB(List<SvtBiasRunRange> ranges) { logger.info("Load to DB..."); // Create a new collection for each run @@ -281,6 +288,10 @@ // create a collection SvtBiasConstantCollection collection = new SvtBiasConstantCollection(); + + // Set the table meta data + collection.setTableMetaData(MANAGER.findTableMetaData("svt_bias_constants")); + collection.setConnection(MANAGER.getConnection()); int collectionId = -1; try { @@ -300,14 +311,16 @@ condition.setFieldValue("created", new Date()); condition.setFieldValue("created_by", System.getProperty("user.name")); condition.setFieldValue("collection_id", collectionId); + condition.setTableMetaData(MANAGER.findTableMetaData("conditions")); + condition.setConnection(MANAGER.getConnection()); 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("start", biasRange.getStartDate().getTime()); + constant.setFieldValue("end", biasRange.getEndDate().getTime()); constant.setFieldValue("value", biasRange.getValue()); collection.add(constant); logger.info(condition.toString()); @@ -324,4 +337,77 @@ } } } + + private static void loadPositionsToConditionsDB(List<SvtPositionRunRange> ranges) { + logger.info("Load to DB..."); + + // Create a new collection for each run + List<Integer> runsadded = new ArrayList<Integer>(); + + for (SvtPositionRunRange range : ranges) { + logger.info("Loading " + range.toString()); + 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()); + + if (range.getRanges().isEmpty()) { + logger.info("No position range for run " + range.getRun().getRun()); + continue; + } + + // create a collection + SvtMotorPositionCollection collection = new SvtMotorPositionCollection(); + + // Set the table meta data + collection.setTableMetaData(MANAGER.findTableMetaData("svt_motor_positions")); + collection.setConnection(MANAGER.getConnection()); + + int collectionId = -1; + try { + collectionId = MANAGER.getCollectionId(collection, "run ranges for SVT positions"); + } 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_motor_positions"); + condition.setFieldValue("table_name", "svt_motor_positions"); + condition.setFieldValue("notes", "constants from mya"); + condition.setFieldValue("created", new Date()); + condition.setFieldValue("created_by", System.getProperty("user.name")); + condition.setFieldValue("collection_id", collectionId); + condition.setTableMetaData(MANAGER.findTableMetaData("conditions")); + condition.setConnection(MANAGER.getConnection()); + + try { + + for (SvtPositionMyaRange positionRange : range.getRanges()) { + // create a constant and add to the collection + final SvtMotorPosition constant = new SvtMotorPosition(); + constant.setFieldValue("start", positionRange.getStartDate().getTime()); + constant.setFieldValue("end", positionRange.getEndDate().getTime()); + constant.setFieldValue("top", positionRange.getTop()); + constant.setFieldValue("bottom", positionRange.getBottom()); + collection.add(constant); + logger.info(condition.toString()); + } + + // Insert collection data. + collection.insert(); + + // Insert conditions record. + condition.insert(); + + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } } Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtMotorPosition.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtMotorPosition.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtMotorPosition.java Fri Jul 31 19:23:30 2015 @@ -16,7 +16,7 @@ /** * Collection implementation. */ - public class SvtMotorPositionCollection extends BaseConditionsObjectCollection<SvtMotorPosition> { + public static class SvtMotorPositionCollection extends BaseConditionsObjectCollection<SvtMotorPosition> { } /**