From d13cee465d399895668a88edc34a30a4d0a380c5 Mon Sep 17 00:00:00 2001
From: Felix Kehrer <felix.kehrer@gmail.com>
Date: Wed, 23 May 2018 12:25:51 +0200
Subject: Fix problem where listing operations would throw exception,
 downgrading h2 to 1.4.196 because of bug in .197  #24993

---
 .../einsatzverwaltung/dao/DBOperationDAO.java          | 18 ++++++++++++------
 .../einsatzverwaltung/dao/RegistrationDatabaseDAO.java |  2 +-
 2 files changed, 13 insertions(+), 7 deletions(-)

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

diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/DBOperationDAO.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/DBOperationDAO.java
index bb6fb27..1fcdc2e 100644
--- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/DBOperationDAO.java
+++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/DBOperationDAO.java
@@ -221,16 +221,22 @@ public class DBOperationDAO implements OperationDAO {
 
     @Override
     public Set<Operation> list(EnumSet<Status> statuses) throws PersistenceException {
-        String sql = "SELECT * FROM Operation WHERE status IN (?)";
+        StringBuilder listString = new StringBuilder("SELECT * FROM Operation WHERE status IN (");
+        boolean first = true;
+        for (Status status : statuses) {
+            if (first) {
+                first = false;
+            } else {
+                listString.append(", ");
+            }
+            listString.append("\'" + status.name() + "\'");
+        }
+        listString.append(") ;");
         Set<Operation> operations = new HashSet<>();
 
         try {
             Connection con = jdbcConnectionManager.getConnection();
-
-            try (PreparedStatement pstmt = con.prepareStatement(sql)) {
-                Object[] arr = statuses.stream().map(Enum::ordinal).toArray();
-                pstmt.setArray(1, con.createArrayOf("INTEGER", arr));
-
+            try (PreparedStatement pstmt = con.prepareStatement(listString.toString())) {
                 try (ResultSet rs = pstmt.executeQuery()) {
                     while (rs.next()) operations.add(operationFromRS(rs));
                 }
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 13aeffc..5c00447 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
@@ -56,7 +56,7 @@ public class RegistrationDatabaseDAO implements RegistrationDAO {
                 addRegistration.setLong(1, vehicleId);
                 addRegistration.setLong(2, registration.employee().id());
                 addRegistration.setTimestamp(3, Timestamp.from(registration.start()));
-                addRegistration.setObject(4, registration.end());
+                addRegistration.setTimestamp(4, Timestamp.from(registration.end()));
                 addRegistration.setBoolean(
                         5, true); // ASSUMPTION: Registration gets created as active
                 addRegistration.executeUpdate();
-- 
cgit v1.2.3-70-g09d2