diff options
-rw-r--r-- | src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/dao/OperationDatabaseDAO.java | 48 |
1 files changed, 24 insertions, 24 deletions
diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/dao/OperationDatabaseDAO.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/dao/OperationDatabaseDAO.java index 1ccb4cf..10bba3d 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/dao/OperationDatabaseDAO.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/dao/OperationDatabaseDAO.java @@ -37,7 +37,6 @@ public class OperationDatabaseDAO implements OperationDAO { String sql = "INSERT INTO Operation(opCode, severity, created, destination, additionalInfo," + " status) VALUES (?, ?, ?, ?, ?, ?)"; - String sql2 = "INSERT INTO VehicleOperation(vehicleId, operationId) VALUES (?, ?)"; long operationId; try { @@ -59,16 +58,7 @@ public class OperationDatabaseDAO implements OperationDAO { } } - try (PreparedStatement pstmt = con.prepareStatement(sql2)) { - pstmt.setLong(2, operationId); - - for (long id : (Iterable<Long>) o.vehicles().stream().map(Vehicle::id)::iterator) { - pstmt.setLong(1, id); - pstmt.addBatch(); - } - - pstmt.executeBatch(); - } + createVehicleOperation(con, operationId, o.vehicles()); con.commit(); return operationId; } catch (SQLException e) { @@ -84,7 +74,6 @@ public class OperationDatabaseDAO implements OperationDAO { "UPDATE Operation SET opCode = ?, severity = ?, destination = ?," + " additionalInfo = ?, status = ? WHERE id = ?"; String sql2 = "DELETE FROM VehicleOperation WHERE operationId = ?"; - String sql3 = "INSERT INTO VehicleOperation(vehicleId, operationId) VALUES (?, ?)"; try { Connection con = jdbcConnectionManager.getConnection(); @@ -106,16 +95,7 @@ public class OperationDatabaseDAO implements OperationDAO { pstmt.executeUpdate(); } - try (PreparedStatement pstmt = con.prepareStatement(sql3)) { - pstmt.setLong(2, o.id()); - - for (long id : (Iterable<Long>) o.vehicles().stream().map(Vehicle::id)::iterator) { - pstmt.setLong(1, id); - pstmt.addBatch(); - } - - pstmt.executeBatch(); - } + createVehicleOperation(con, o.id(), o.vehicles()); con.commit(); } catch (SQLException e) { jdbcConnectionManager.rollbackConnection(); @@ -123,6 +103,24 @@ public class OperationDatabaseDAO implements OperationDAO { } } + private void createVehicleOperation(Connection con, long operationId, Set<Vehicle> vehicles) + throws SQLException { + String sql = + "INSERT INTO VehicleOperation(vehicleId, operationId)" + + " SELECT version, ? FROM Vehicle WHERE id = ?"; + + try (PreparedStatement pstmt = con.prepareStatement(sql)) { + pstmt.setLong(1, operationId); + + for (long id : (Iterable<Long>) vehicles.stream().map(Vehicle::id)::iterator) { + pstmt.setLong(2, id); + pstmt.addBatch(); + } + + pstmt.executeBatch(); + } + } + @Override public Operation get(long operationId) throws ElementNotFoundException, PersistenceException { String sql = "Select * from operation where id = ?"; @@ -195,7 +193,9 @@ public class OperationDatabaseDAO implements OperationDAO { } private Set<Vehicle> getVehiclesFromOperationId(long operationId) throws PersistenceException { - String sql = "SELECT vehicleId FROM VehicleOperation WHERE operationId = ?"; + String sql = + "SELECT id FROM Vehicle WHERE version IN" + + " (SELECT vehicleId FROM VehicleOperation WHERE operationId = ?)"; Set<Vehicle> vehicles = new HashSet<>(); try { @@ -206,7 +206,7 @@ public class OperationDatabaseDAO implements OperationDAO { try (ResultSet rs = pstmt.getResultSet()) { while (rs.next()) { - vehicles.add(vehicleDAO.get(rs.getLong("vehicleId"))); + vehicles.add(vehicleDAO.get(rs.getLong("Vehicle.id"))); } } } |