From 224c0a3fb3a4a7398ea0090dcdcdc88fbe919e96 Mon Sep 17 00:00:00 2001 From: Martin Weick Date: Tue, 15 May 2018 11:42:18 +0200 Subject: Changes in Persintence Vehicle update --- .../einsatzverwaltung/dao/VehicleDatabaseDao.java | 75 +++++++++++++++------- 1 file changed, 52 insertions(+), 23 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 62de20a..8af5bf4 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 @@ -49,10 +49,11 @@ public class VehicleDatabaseDao implements VehicleDAO { } p1.executeUpdate(); - ResultSet keyResultSet = p1.getGeneratedKeys(); + try (ResultSet keyResultSet = p1.getGeneratedKeys()) { - if (keyResultSet.next()) { - id = keyResultSet.getInt(1); + if (keyResultSet.next()) { + id = keyResultSet.getInt(1); + } } name = vehicle.type().name() + "-" + id; @@ -101,30 +102,55 @@ public class VehicleDatabaseDao implements VehicleDAO { @Override public void update(Vehicle vehicle) throws ElementNotFoundException, PersistenceException { - String query1 = - "UPDATE VehicleVersion SET name=?, constructionType=?, type=?, hasNef=? WHERE id=?"; - String name = vehicle.type().name() + "-" + vehicle.id(); - PreparedStatement p = null; + String query="SELECT id FROM vehicle WHERE version=?"; + PreparedStatement p=null; + long vehicleID=-1; + long vehicleVersion=-1; try { - p = jdbcConnectionManager.getConnection().prepareStatement(query1); - p.setString(1, vehicle.name()); - p.setString(2, vehicle.constructionType().name()); + p=jdbcConnectionManager.getConnection().prepareStatement(query); + p.setLong(1,vehicle.id()); + p.executeQuery(); + try (ResultSet rs = p.getResultSet()) { + while (rs.next()) { + vehicleID = rs.getLong(1); + } + } + query="INSERT INTO VehicleVersion (name,hasNef,constructionType,type) VALUES (?,?,?,?)"; + String name=""; + p=jdbcConnectionManager.getConnection().prepareStatement(query); + p.setString(1, name); + p.setBoolean(2, vehicle.hasNef()); + p.setString(3, vehicle.constructionType().name()); if (vehicle.type() == VehicleType.KTW_B) { - p.setString(3, "KTW-B"); + p.setString(4, "KTW-B"); } else { - p.setString(3, name); + p.setString(4, vehicle.type().name()); } - p.setBoolean(4, vehicle.hasNef()); - p.setLong(5, vehicle.id()); p.executeUpdate(); - } catch (SQLException e) { - throw new PersistenceException("SQLException : " + e); - } finally { - try { - p.close(); - } catch (SQLException e) { - throw new PersistenceException("SQLException : " + e); + + try (ResultSet keyResultSet = p.getGeneratedKeys()) { + + if (keyResultSet.next()) { + vehicleVersion = keyResultSet.getInt(1); + } } + + name = vehicle.type().name() + "-" + vehicleVersion; + + query = "UPDATE VehicleVersion SET name=? WHERE id=?"; + p = jdbcConnectionManager.getConnection().prepareStatement(query); + p.setString(1, name); + p.setLong(2, vehicleVersion); + p.executeUpdate(); + + query="UPDATE Vehicle SET version=? WHERE id=?"; + p=jdbcConnectionManager.getConnection().prepareStatement(query); + p.setLong(1,vehicleVersion); + p.setLong(2,vehicleID); + p.executeUpdate(); + + } catch (SQLException e) { + e.printStackTrace(); } } @@ -140,8 +166,11 @@ public class VehicleDatabaseDao implements VehicleDAO { "Select * from VehicleVersion, " + "Vehicle where VehicleVersion.id=Vehicle.version"); pstmt.executeQuery(); - ResultSet rs = pstmt.getResultSet(); - while (rs.next()) result.add(vehicleFromRS(rs)); + try (ResultSet rs = pstmt.getResultSet()) { + while (rs.next()) { + result.add(vehicleFromRS(rs)); + } + } } catch (SQLException e) { throw new PersistenceException("Die Werte konnten nicht geladen werden.", e); -- cgit v1.2.3-70-g09d2