From d13cee465d399895668a88edc34a30a4d0a380c5 Mon Sep 17 00:00:00 2001 From: Felix Kehrer 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 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'pom.xml') diff --git a/pom.xml b/pom.xml index 78dbb4c..5f30fff 100644 --- a/pom.xml +++ b/pom.xml @@ -19,7 +19,7 @@ 1.8.0-beta2 1.6 - 1.4.197 + 1.4.196 1.3.0-alpha4 4.12 -- cgit v1.2.3-70-g09d2 From d980f26121360ab7dacf7f482c9e85fb5ef43b0b Mon Sep 17 00:00:00 2001 From: Tharre Date: Wed, 23 May 2018 12:55:24 +0200 Subject: Revert "Fix problem where listing operations would throw exception, downgrading h2 to 1.4.196 because of bug in .197 #24993" This reverts commit d13cee465d399895668a88edc34a30a4d0a380c5. --- pom.xml | 2 +- .../einsatzverwaltung/dao/DBOperationDAO.java | 18 ++++++------------ .../einsatzverwaltung/dao/RegistrationDatabaseDAO.java | 2 +- 3 files changed, 8 insertions(+), 14 deletions(-) (limited to 'pom.xml') diff --git a/pom.xml b/pom.xml index 5f30fff..78dbb4c 100644 --- a/pom.xml +++ b/pom.xml @@ -19,7 +19,7 @@ 1.8.0-beta2 1.6 - 1.4.196 + 1.4.197 1.3.0-alpha4 4.12 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 1fcdc2e..bb6fb27 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,22 +221,16 @@ public class DBOperationDAO implements OperationDAO { @Override public Set list(EnumSet statuses) throws PersistenceException { - 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(") ;"); + String sql = "SELECT * FROM Operation WHERE status IN (?)"; Set operations = new HashSet<>(); try { Connection con = jdbcConnectionManager.getConnection(); - try (PreparedStatement pstmt = con.prepareStatement(listString.toString())) { + + try (PreparedStatement pstmt = con.prepareStatement(sql)) { + Object[] arr = statuses.stream().map(Enum::ordinal).toArray(); + pstmt.setArray(1, con.createArrayOf("INTEGER", arr)); + 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 5c00447..13aeffc 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.setTimestamp(4, Timestamp.from(registration.end())); + addRegistration.setObject(4, registration.end()); addRegistration.setBoolean( 5, true); // ASSUMPTION: Registration gets created as active addRegistration.executeUpdate(); -- cgit v1.2.3-70-g09d2 From a6b6eb25425a103ba49ea4ef16265aaf38181935 Mon Sep 17 00:00:00 2001 From: Tharre Date: Wed, 23 May 2018 13:18:21 +0200 Subject: Work around H2 bug in operation.list() --- pom.xml | 2 +- .../groupphase/einsatzverwaltung/dao/DBOperationDAO.java | 16 +++++++++++++--- .../einsatzverwaltung/dao/OperationDAOTest.java | 9 +++++++++ 3 files changed, 23 insertions(+), 4 deletions(-) (limited to 'pom.xml') diff --git a/pom.xml b/pom.xml index 78dbb4c..5f30fff 100644 --- a/pom.xml +++ b/pom.xml @@ -19,7 +19,7 @@ 1.8.0-beta2 1.6 - 1.4.197 + 1.4.196 1.3.0-alpha4 4.12 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 list(EnumSet 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 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)); } diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/OperationDAOTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/OperationDAOTest.java index 726735d..e62554c 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/OperationDAOTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/OperationDAOTest.java @@ -8,6 +8,7 @@ import at.ac.tuwien.sepm.assignment.groupphase.exception.ElementNotFoundExceptio import at.ac.tuwien.sepm.assignment.groupphase.util.JdbcTestCase; import java.time.Instant; import java.util.Collections; +import java.util.EnumSet; import java.util.Set; import org.dbunit.dataset.DataSetException; import org.dbunit.dataset.IDataSet; @@ -78,4 +79,12 @@ public class OperationDAOTest extends JdbcTestCase { compareWith("operationDAOUpdateRemoveVehicles.xml", COMPARE_TABLES); } + + @Test + public void testListOperations() throws Exception { + Set operationSet = operationDAO.list(EnumSet.allOf(Status.class)); + + // TODO: operations.list() currently doesn't set the vehicles set + // assertEquals(Set.of(o), operationSet); + } } -- cgit v1.2.3-70-g09d2 From 58f6ea4ad233f4cbb57b57734a5067e0856b6341 Mon Sep 17 00:00:00 2001 From: Tharre Date: Thu, 24 May 2018 19:08:35 +0200 Subject: Bump version to 2.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'pom.xml') diff --git a/pom.xml b/pom.xml index 5f30fff..ef1fbd6 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ at.ac.tuwien.sepm.assignment.groupphase ss18_sepm_qse_13 - 1.0-SNAPSHOT + 2.0-SNAPSHOT -- cgit v1.2.3-70-g09d2