diff options
| author | Tharre <tharre3@gmail.com> | 2018-05-23 13:18:21 +0200 | 
|---|---|---|
| committer | Tharre <tharre3@gmail.com> | 2018-05-23 13:18:21 +0200 | 
| commit | a6b6eb25425a103ba49ea4ef16265aaf38181935 (patch) | |
| tree | 9f1c214734f6eb1a5792200fec38fc80ff116c56 /src/main/java/at/ac | |
| parent | d980f26121360ab7dacf7f482c9e85fb5ef43b0b (diff) | |
| download | sepm-groupproject-a6b6eb25425a103ba49ea4ef16265aaf38181935.tar.gz sepm-groupproject-a6b6eb25425a103ba49ea4ef16265aaf38181935.tar.xz sepm-groupproject-a6b6eb25425a103ba49ea4ef16265aaf38181935.zip  | |
Work around H2 bug in operation.list()
Diffstat (limited to 'src/main/java/at/ac')
| -rw-r--r-- | src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/DBOperationDAO.java | 16 | 
1 files changed, 13 insertions, 3 deletions
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..143fdd6 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 @@ -24,6 +24,7 @@ import java.util.LinkedList;  import java.util.List;  import java.util.Objects;  import java.util.Set; +import java.util.stream.Collectors;  import org.slf4j.Logger;  import org.slf4j.LoggerFactory;  import org.springframework.stereotype.Repository; @@ -221,16 +222,25 @@ public class DBOperationDAO implements OperationDAO {      @Override      public Set<Operation> list(EnumSet<Status> statuses) throws PersistenceException { -        String sql = "SELECT * FROM Operation WHERE status IN (?)"; +        // 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. +        String str = +                statuses.stream() +                        .map(Enum::name) +                        .map(s -> "'" + s + "'") +                        .collect(Collectors.joining(",")); +        String sql = "SELECT * FROM Operation WHERE status IN (" + str + ")";          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)); +                // Object[] arr = statuses.stream().map(Enum::ordinal).toArray(); +                // pstmt.setArray(1, con.createArrayOf("INT", arr)); +                // TODO: this should set the vehicles as well                  try (ResultSet rs = pstmt.executeQuery()) {                      while (rs.next()) operations.add(operationFromRS(rs));                  }  | 
