aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/dao/OperationDatabaseDAO.java48
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")));
}
}
}