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; }