aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/DBOperationDAO.java63
-rw-r--r--src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/userInterface/ArchiveOperationController.java20
-rw-r--r--src/main/resources/fxml/CreateOperationController.fxml4
3 files changed, 38 insertions, 49 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 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<Operation> list(EnumSet<Status> 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<Operation> 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<String> elements =
+ detailOperation.vehicles().stream().map(Vehicle::name).collect(Collectors.toList());
+ String result = String.join(", ", elements);
+
+ lblVehicles.setText(result);
lblAddress.setText(detailOperation.destination());
- List<Vehicle> 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 @@
<Label layoutX="10.0" layoutY="6.0"
text="Aktive Einsätze" styleClass="text-big">
</Label>
- <Label layoutY="12.0" text="Archiv" styleClass="text-medium" AnchorPane.rightAnchor="12"> <!--TODO: Underline-->
- </Label>
+ <Hyperlink onAction="#onArchivLinkClicked" layoutY="12.0" text="Archiv" styleClass="text-medium" AnchorPane.rightAnchor="12"/>
</AnchorPane>
<FlowPane fx:id="fpVehicles" hgap="12" layoutX="40.0" layoutY="228.0" prefHeight="388.0"
prefWidth="920.0" vgap="12">
</FlowPane>
- <fx:include source="ArchivOperation.fxml" fx:id="archivOperation"/>
</AnchorPane>