From 748398dba8c1cdd47e38407a5f11929352c9e70e Mon Sep 17 00:00:00 2001 From: Tharre Date: Sun, 17 Jun 2018 01:48:10 +0200 Subject: Rollback in cases where we throw ourselves #27305 --- .../groupphase/einsatzverwaltung/dao/EmployeeDatabaseDAO.java | 9 +++++++-- .../einsatzverwaltung/dao/RegistrationDatabaseDAO.java | 4 +++- .../groupphase/einsatzverwaltung/dao/VehicleDatabaseDAO.java | 9 +++++++-- 3 files changed, 17 insertions(+), 5 deletions(-) (limited to 'src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung') diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeeDatabaseDAO.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeeDatabaseDAO.java index a58c8c7..1d8286b 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeeDatabaseDAO.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeeDatabaseDAO.java @@ -62,7 +62,10 @@ public class EmployeeDatabaseDAO implements EmployeeDAO { pstmt.executeUpdate(); try (ResultSet rs = pstmt.getGeneratedKeys()) { - if (!rs.next()) throw new PersistenceException("Failed to insert Employee"); + if (!rs.next()) { + con.rollback(); + throw new PersistenceException("Failed to insert Employee"); + } con.commit(); return rs.getLong(1); @@ -88,8 +91,10 @@ public class EmployeeDatabaseDAO implements EmployeeDAO { pstmt.setLong(1, versionId); pstmt.setLong(2, employee.id()); - if (pstmt.executeUpdate() != 1) + if (pstmt.executeUpdate() != 1) { + con.rollback(); throw new ElementNotFoundException("No such employeeId exists"); + } } con.commit(); diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/RegistrationDatabaseDAO.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/RegistrationDatabaseDAO.java index ed458d6..6770942 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/RegistrationDatabaseDAO.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/RegistrationDatabaseDAO.java @@ -66,8 +66,10 @@ public class RegistrationDatabaseDAO implements RegistrationDAO { try (PreparedStatement pstmt = con.prepareStatement(sql2)) { pstmt.setLong(1, vehicleId); - if (pstmt.executeUpdate() != 1) + if (pstmt.executeUpdate() != 1) { + con.rollback(); throw new PersistenceException("Failed to persist registration"); + } } con.commit(); diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/VehicleDatabaseDAO.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/VehicleDatabaseDAO.java index 3144288..fcae6d3 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/VehicleDatabaseDAO.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/VehicleDatabaseDAO.java @@ -64,7 +64,10 @@ public class VehicleDatabaseDAO implements VehicleDAO { pstmt.executeUpdate(); try (ResultSet rs = pstmt.getGeneratedKeys()) { - if (!rs.next()) throw new PersistenceException("Failed to insert into Vehicle"); + if (!rs.next()) { + con.rollback(); + throw new PersistenceException("Failed to insert into Vehicle"); + } id = rs.getLong(1); } @@ -76,8 +79,10 @@ public class VehicleDatabaseDAO implements VehicleDAO { pstmt.setString(1, name); pstmt.setLong(2, version); - if (pstmt.executeUpdate() != 1) + if (pstmt.executeUpdate() != 1) { + con.rollback(); throw new PersistenceException("Failed to update VehicleVersion"); + } } con.commit(); -- cgit v1.2.3-70-g09d2