diff options
Diffstat (limited to 'src')
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>  | 
