Author: [log in to unmask]
Date: Fri Aug 28 12:59:26 2015
New Revision: 3439
Log:
Rewrite method to get EPICS data from db so it actually works.
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:59:26 2015
@@ -140,31 +140,24 @@
PreparedStatement selectHeader = null;
PreparedStatement selectEpicsData = null;
try {
- selectHeader = connection.prepareStatement("SELECT * FROM epics_headers WHERE run = ?");
- selectHeader.setInt(1, run);
- final ResultSet headerResultSet = selectHeader.executeQuery();
- selectEpicsData = connection.prepareStatement("SELECT * FROM " + epicsType.getTableName()
- + " WHERE epics_header_id = ?");
final List<EpicsVariable> variables = epicsVariableDao.getEpicsVariables(epicsType);
- while (headerResultSet.next()) {
- final int headerId = headerResultSet.getInt("id");
- final int headerRun = headerResultSet.getInt("run");
- final int sequence = headerResultSet.getInt("sequence");
- final int timestamp = headerResultSet.getInt("timestamp");
- selectEpicsData.setInt(1, headerId);
- final ResultSet epicsDataResult = selectEpicsData.executeQuery();
- if (epicsDataResult.next()) {
- final EpicsHeader header = new EpicsHeader(new int[] {headerRun, sequence, timestamp});
- final EpicsData epicsData = new EpicsData();
- epicsData.setEpicsHeader(header);
- for (final EpicsVariable variable : variables) {
- final double value = epicsDataResult.getDouble(variable.getColumnName());
- epicsData.setValue(variable.getVariableName(), value);
- }
- epicsDataList.add(epicsData);
- } else {
- throw new SQLException("Getting EPICS data failed; no data for header ID.");
- }
+ selectEpicsData = connection.prepareStatement("SELECT * FROM " + epicsType.getTableName()
+ + " LEFT JOIN epics_headers ON " + epicsType.getTableName() + ".epics_header_id = epics_headers.id"
+ + " WHERE epics_headers.run = ?");
+ selectEpicsData.setInt(1, run);
+ ResultSet resultSet = selectEpicsData.executeQuery();
+ while (resultSet.next()) {
+ EpicsData epicsData = new EpicsData();
+ final int headerRun = resultSet.getInt("epics_headers.run");
+ final int sequence = resultSet.getInt("epics_headers.sequence");
+ final int timestamp = resultSet.getInt("epics_headers.timestamp");
+ final EpicsHeader header = new EpicsHeader(new int[] {headerRun, sequence, timestamp});
+ epicsData.setEpicsHeader(header);
+ for (final EpicsVariable variable : variables) {
+ final double value = resultSet.getDouble(variable.getColumnName());
+ epicsData.setValue(variable.getVariableName(), value);
+ }
+ epicsDataList.add(epicsData);
}
} catch (final SQLException e) {
throw new RuntimeException(e);
@@ -184,7 +177,6 @@
}
}
}
-
return epicsDataList;
}
|