From ef09cf53a5ca546bdb14c82f83169209e66555aa Mon Sep 17 00:00:00 2001 From: Tharre Date: Tue, 22 May 2018 16:39:15 +0200 Subject: Fix conflicts and reimplement Operation.list() --- .../einsatzverwaltung/dao/DBOperationDAO.java | 63 ++++++++++------------ .../userInterface/ArchiveOperationController.java | 20 +++---- .../resources/fxml/CreateOperationController.fxml | 4 +- 3 files changed, 38 insertions(+), 49 deletions(-) (limited to 'src') 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 395f7b4..773ccb6 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 @@ -34,7 +34,7 @@ public class DBOperationDAO implements OperationDAO { private JDBCConnectionManager jdbcConnectionManager; private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - public DBOperationDAO(JDBCConnectionManager j) throws PersistenceException { + public DBOperationDAO(JDBCConnectionManager j) { jdbcConnectionManager = j; try { @@ -59,7 +59,9 @@ public class DBOperationDAO implements OperationDAO { "SQLException occurred while preparing Statements. Error message: {} ", e.getMessage()); - throw new PersistenceException(e); + // TODO: nothing should be thrown here + throw new IllegalStateException("TODO: fix me"); + // throw new PersistenceException(e); } } @@ -204,45 +206,38 @@ 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 { - try (PreparedStatement listStatement = - jdbcConnectionManager.getConnection().prepareStatement(listString.toString())) { - try (ResultSet resultSet = listStatement.executeQuery()) { - while (resultSet.next()) { - long operationId = resultSet.getLong("id"); - operations.add( - Operation.builder() - .id(operationId) - .opCode(resultSet.getString("opCode")) - .severity(Severity.valueOf(resultSet.getString("severity"))) - .status(Status.valueOf(resultSet.getString("status"))) - .vehicles(getVehiclesFromOperationId(operationId)) - .created(resultSet.getTimestamp("created").toInstant()) - .destination(resultSet.getString("destination")) - .additionalInfo(resultSet.getString("additionalInfo")) - .build()); - } + 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 (ResultSet rs = pstmt.executeQuery()) { + while (rs.next()) operations.add(operationFromRS(rs)); } } + + return operations; } catch (SQLException e) { - LOG.error( - "SQLException happened while preparing statement. Error message: {}", - e.getMessage()); throw new PersistenceException(e); } - return operations; + } + + private Operation operationFromRS(ResultSet rs) throws PersistenceException, SQLException { + return Operation.builder() + .id(rs.getLong("id")) + .opCode(rs.getString("opCode")) + .severity(Severity.valueOf(rs.getString("severity"))) + .status(Status.valueOf(rs.getString("status"))) + .vehicles(getVehiclesFromOperationId(rs.getLong("id"))) + .created(rs.getTimestamp("created").toInstant()) + .destination(rs.getString("destination")) + .additionalInfo(rs.getString("additionalInfo")) + .build(); } private static String GET_VEHICLE_ID = diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/userInterface/ArchiveOperationController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/userInterface/ArchiveOperationController.java index ecbb165..7b69402 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/userInterface/ArchiveOperationController.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/userInterface/ArchiveOperationController.java @@ -7,10 +7,11 @@ import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.Operati import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; import java.time.LocalDateTime; import java.time.ZoneOffset; +import java.util.Collection; import java.util.EnumSet; import java.util.LinkedList; -import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; import javafx.scene.control.Alert; import javafx.scene.control.Alert.AlertType; import javafx.scene.control.Button; @@ -96,19 +97,14 @@ public class ArchiveOperationController { } lblOpCode.setText(detailOperation.opCode()); - StringBuilder result = new StringBuilder(); - for (int i = 0; i < detailOperation.vehicles().size(); i++) { - if (i == detailOperation.vehicles().size() - 1) { - result.append(detailOperation.vehicles().get(i).name()); - } else { - result.append(detailOperation.vehicles().get(i).name()).append(", "); - } - } - lblVehicles.setText(result.toString()); + Collection elements = + detailOperation.vehicles().stream().map(Vehicle::name).collect(Collectors.toList()); + String result = String.join(", ", elements); + + lblVehicles.setText(result); lblAddress.setText(detailOperation.destination()); - List vehicles = detailOperation.vehicles(); - for (Vehicle vehicle : vehicles) { + for (Vehicle vehicle : detailOperation.vehicles()) { Button b = new Button(); b.setPrefHeight(200); b.setPrefWidth(600 / 2); diff --git a/src/main/resources/fxml/CreateOperationController.fxml b/src/main/resources/fxml/CreateOperationController.fxml index c8e837c..236215b 100644 --- a/src/main/resources/fxml/CreateOperationController.fxml +++ b/src/main/resources/fxml/CreateOperationController.fxml @@ -68,11 +68,9 @@ - + - -- cgit v1.2.3-70-g09d2