diff options
author | Tharre <tharre3@gmail.com> | 2018-06-17 01:48:10 +0200 |
---|---|---|
committer | Tharre <tharre3@gmail.com> | 2018-06-17 01:48:10 +0200 |
commit | 748398dba8c1cdd47e38407a5f11929352c9e70e (patch) | |
tree | ed92f906a5b1a856678878f7a4ad63150081316d | |
parent | ee6579a874e3301e6a538bd0b101cdc127f44263 (diff) | |
download | sepm-groupproject-748398dba8c1cdd47e38407a5f11929352c9e70e.tar.gz sepm-groupproject-748398dba8c1cdd47e38407a5f11929352c9e70e.tar.xz sepm-groupproject-748398dba8c1cdd47e38407a5f11929352c9e70e.zip |
Rollback in cases where we throw ourselves #27305
3 files changed, 17 insertions, 5 deletions
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(); |