From 224c0a3fb3a4a7398ea0090dcdcdc88fbe919e96 Mon Sep 17 00:00:00 2001
From: Martin Weick <e1627760@student.tuwien.ac.at>
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(-)

(limited to 'src/main/java/at/ac')

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