From cad736b1bad936589cd6341d5e204dad5bf0588d Mon Sep 17 00:00:00 2001
From: Tharre <tharre3@gmail.com>
Date: Wed, 30 May 2018 18:08:32 +0200
Subject: Work around H2 bug in OperationDAO.list()

---
 .../groupphase/einsatzverwaltung/dao/OperationDatabaseDAO.java     | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

(limited to 'src/main/java/at/ac/tuwien/sepm/assignment')

diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/OperationDatabaseDAO.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/OperationDatabaseDAO.java
index 0a465f2..1989764 100644
--- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/OperationDatabaseDAO.java
+++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/OperationDatabaseDAO.java
@@ -150,11 +150,14 @@ public class OperationDatabaseDAO implements OperationDAO {
         // This hack exists because H2 currently has a bug that prevents IN (?) with an array of
         // ids, i.e. pstmt.setArray(1, con.createArrayOf("INT", intarray) from working. See
         // commented code below.
+
+        // SELECT * FROM Operation WHERE status IN ('COMPLETED', 'CANCELLED') is BUGGED on H2!
+        // for this reason we use the ordinal values instead
         String str =
                 statuses.stream()
-                        .map(Enum::name)
-                        .map(s -> "'" + s + "'")
+                        .map(e -> Integer.toString(e.ordinal()))
                         .collect(Collectors.joining(","));
+
         String sql = "SELECT * FROM Operation WHERE status IN (" + str + ")";
         Set<Operation> operations = new HashSet<>();
 
-- 
cgit v1.2.3-70-g09d2