aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/at/ac/tuwien
diff options
context:
space:
mode:
authorDominic Rogetzer <e1627756@student.tuwien.ac.at>2018-06-16 14:49:57 +0200
committerTharre <tharre3@gmail.com>2018-06-16 15:52:37 +0200
commit7165549f2e8be44e4e367df4761e0a33eb140e92 (patch)
tree8964ed360e7bc8d0e0917965beb7a3071c46d52f /src/main/java/at/ac/tuwien
parentd5e8f8559f59a43b6d5907ee2143713d37ae68b4 (diff)
downloadsepm-groupproject-7165549f2e8be44e4e367df4761e0a33eb140e92.tar.gz
sepm-groupproject-7165549f2e8be44e4e367df4761e0a33eb140e92.tar.xz
sepm-groupproject-7165549f2e8be44e4e367df4761e0a33eb140e92.zip
Remove finally block, reset autocommit in VehicleDatabaseDAO [#27305]
Diffstat (limited to 'src/main/java/at/ac/tuwien')
-rw-r--r--src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/VehicleDatabaseDAO.java28
1 files changed, 25 insertions, 3 deletions
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 ef963d4..96703b1 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
@@ -11,6 +11,7 @@ import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
+import java.sql.Savepoint;
import java.sql.Statement;
import java.util.HashSet;
import java.util.Set;
@@ -37,9 +38,12 @@ public class VehicleDatabaseDAO implements VehicleDAO {
String name = "";
int id = -1;
int version = -1;
+ Connection connection = null;
+ Savepoint savepoint = null;
try {
- Connection connection = jdbcConnectionManager.getConnection();
+ connection = jdbcConnectionManager.getConnection();
connection.setAutoCommit(false);
+ savepoint = connection.setSavepoint();
try (PreparedStatement p1 =
connection.prepareStatement(query1, PreparedStatement.RETURN_GENERATED_KEYS)) {
@@ -82,11 +86,26 @@ public class VehicleDatabaseDAO implements VehicleDAO {
connection.commit();
connection.setAutoCommit(true);
} catch (SQLException e) {
+ rollbackAndEnableAutoCommit(connection, savepoint);
throw new PersistenceException(e);
}
return id;
}
+ private void rollbackAndEnableAutoCommit(Connection connection, Savepoint savepoint)
+ throws PersistenceException {
+ try {
+ if (connection != null) {
+ if (savepoint != null) {
+ connection.rollback(savepoint);
+ }
+ connection.setAutoCommit(true);
+ }
+ } catch (SQLException e1) {
+ throw new PersistenceException(e1);
+ }
+ }
+
@Override
public void update(Vehicle v) throws ElementNotFoundException, PersistenceException {
String sql = "SELECT version FROM Vehicle WHERE id = ?";
@@ -97,10 +116,12 @@ public class VehicleDatabaseDAO implements VehicleDAO {
long versionId;
+ Connection con = null;
+ Savepoint savepoint = null;
try {
- Connection con = jdbcConnectionManager.getConnection();
+ con = jdbcConnectionManager.getConnection();
con.setAutoCommit(false);
-
+ savepoint = con.setSavepoint();
try (PreparedStatement pstmt = con.prepareStatement(sql)) {
pstmt.setLong(1, v.id());
@@ -137,6 +158,7 @@ public class VehicleDatabaseDAO implements VehicleDAO {
con.commit();
con.setAutoCommit(true);
} catch (SQLException e) {
+ rollbackAndEnableAutoCommit(con, savepoint);
throw new PersistenceException(e);
}
}