diff options
author | Dominic Rogetzer <e1627756@student.tuwien.ac.at> | 2018-05-18 23:59:25 +0200 |
---|---|---|
committer | Tharre <tharre3@gmail.com> | 2018-05-22 17:05:32 +0200 |
commit | 7b6843703f4a9dbe60e2196c4c10a94de58e466d (patch) | |
tree | 767d30296b2877199a1f38f309f1ae4f6cda711f /src/main | |
parent | d8671713dd99f6840663b9ddf95bc29f0aea71eb (diff) | |
download | sepm-groupproject-7b6843703f4a9dbe60e2196c4c10a94de58e466d.tar.gz sepm-groupproject-7b6843703f4a9dbe60e2196c4c10a94de58e466d.tar.xz sepm-groupproject-7b6843703f4a9dbe60e2196c4c10a94de58e466d.zip |
Use savepoint and rollback at EmployeeDatabaseDao.add [#25950]
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/EmployeeDatabaseDao.java | 19 |
1 files changed, 18 insertions, 1 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 53adb45..40a9134 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 @@ -65,7 +65,10 @@ public class EmployeeDatabaseDao implements EmployeeDAO { public long add(Employee employee) throws PersistenceException { // Assumption: the given employee is already validated (from service) + Savepoint savepoint = null; try { + savepoint = connection.setSavepoint(); + connection.setAutoCommit(false); insertEmployeeVersion.setString(1, employee.name()); insertEmployeeVersion.setTimestamp( 2, Timestamp.valueOf(employee.birthday().atStartOfDay())); @@ -82,14 +85,28 @@ public class EmployeeDatabaseDao implements EmployeeDAO { ResultSet resultSetEmployee = insertEmployee.getGeneratedKeys(); if (resultSetEmployee.next()) { + connection.commit(); return resultSetEmployee.getLong(1); } } - throw new PersistenceException("Employee was not created"); + throw new PersistenceException("Employee was not updated"); } catch (SQLException e) { + try { + if (savepoint != null) { + connection.rollback(savepoint); + } + } catch (SQLException e1) { + throw new PersistenceException(e); + } throw new PersistenceException(e); + } finally { + try { + connection.setAutoCommit(true); + } catch (SQLException e) { + throw new PersistenceException(e); + } } } |