Print

Print


Author: [log in to unmask]
Date: Fri Aug 28 12:37:50 2015
New Revision: 3436

Log:
Make sure EPICS data insert does not fail if a variable is missing.

Modified:
    java/trunk/record-util/src/main/java/org/hps/rundb/EpicsDataDaoImpl.java

Modified: java/trunk/record-util/src/main/java/org/hps/rundb/EpicsDataDaoImpl.java
 =============================================================================
--- java/trunk/record-util/src/main/java/org/hps/rundb/EpicsDataDaoImpl.java	(original)
+++ java/trunk/record-util/src/main/java/org/hps/rundb/EpicsDataDaoImpl.java	Fri Aug 28 12:37:50 2015
@@ -200,7 +200,6 @@
         if (epicsDataList.isEmpty()) {
             throw new IllegalArgumentException("The EPICS data list is empty.");
         }
-        System.out.println("inserting " + epicsDataList.size() + " EPICS records");
         PreparedStatement insertHeaderStatement = null;
         try {
             insertHeaderStatement = connection.prepareStatement(
@@ -233,7 +232,12 @@
                 insertStatement.setInt(1, headerId);
                 int parameterIndex = 2;
                 for (final EpicsVariable variable : variables) {
-                    insertStatement.setDouble(parameterIndex, epicsData.getValue(variable.getVariableName()));
+                    final String variableName = variable.getVariableName();
+                    double value = 0;
+                    if (epicsData.hasKey(variableName)) {
+                        value = epicsData.getValue(variableName);
+                    }
+                    insertStatement.setDouble(parameterIndex, value);
                     ++parameterIndex;
                 }
                 final int dataRowsCreated = insertStatement.executeUpdate();