diff options
| author | Viktoria Pundy <viktoria.pundy@aon.at> | 2018-05-22 19:49:20 +0200 | 
|---|---|---|
| committer | Viktoria Pundy <viktoria.pundy@aon.at> | 2018-05-22 19:49:20 +0200 | 
| commit | 3814bf2cab2cb1465002d05f68e9b38e9351e014 (patch) | |
| tree | 99a4fea710cd1bcdaeca6afc58cdcc67f0d8e7fd /src/main/java/at/ac | |
| parent | b9aadec691affd632c8d83e30293964cc1bb05bb (diff) | |
| download | sepm-groupproject-3814bf2cab2cb1465002d05f68e9b38e9351e014.tar.gz sepm-groupproject-3814bf2cab2cb1465002d05f68e9b38e9351e014.tar.xz sepm-groupproject-3814bf2cab2cb1465002d05f68e9b38e9351e014.zip  | |
Added methods and files
Diffstat (limited to 'src/main/java/at/ac')
3 files changed, 260 insertions, 2 deletions
diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceImpl.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceImpl.java index 05a548c..ce5613e 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceImpl.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceImpl.java @@ -5,6 +5,7 @@ import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation;  import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.Severity;  import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.Status;  import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle; +import at.ac.tuwien.sepm.assignment.groupphase.exception.ElementNotFoundException;  import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidOperationException;  import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidVehicleException;  import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; @@ -116,7 +117,24 @@ public class OperationServiceImpl implements OperationService {      @Override      public void complete(long operationId, Status status) -            throws InvalidOperationException, ServiceException {} +            throws InvalidOperationException, ServiceException { +        Operation operation; +        try { +            operation = operationDAO.get(operationId); +        } catch (ElementNotFoundException e) { +            throw new InvalidOperationException(e); +        } catch (PersistenceException e) { +            throw new ServiceException(e); +        } +        operation = operation.toBuilder().status(status).build(); +        try { +            operationDAO.update(operation); +        } catch (ElementNotFoundException e) { +            throw new InvalidOperationException(e); +        } catch (PersistenceException e) { +            throw new ServiceException(e); +        } +    }      @Override      public SortedList<Vehicle> rankVehicles(long operationId) diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/userInterface/CreateOperationController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/userInterface/CreateOperationController.java index 5b645f3..ea21691 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/userInterface/CreateOperationController.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/userInterface/CreateOperationController.java @@ -47,9 +47,11 @@ public class CreateOperationController {      public TextField txtNote;      public Button btnCreateOperation;      public ListView<Vehicle> lvVehicles; -    public ListView lvActiveOperations; +    public ListView<Operation> lvActiveOperations;      public Label lblChosenVehicles;      public LinkedList<Vehicle> chosenVehicles = new LinkedList<>(); +    public AnchorPane apInvisible; +    @FXML private OperationDetailsController operationDetailsController;      // TODO: Anders?      OperationService operationService = @@ -79,6 +81,20 @@ public class CreateOperationController {                                  }                              }                          }); +        lvActiveOperations.setCellFactory( +                param -> +                        new ListCell<>() { +                            @Override +                            protected void updateItem(Operation item, boolean empty) { +                                super.updateItem(item, empty); + +                                if (empty || item == null || item.opCode() == null) { +                                    setText(null); +                                } else { +                                    setText(item.opCode()); +                                } +                            } +                        });          lvVehicles.setOnMouseClicked(                  event -> { @@ -114,6 +130,15 @@ public class CreateOperationController {                          }                      }                  }); +        lvActiveOperations.setOnMouseClicked( +                event -> { +                    if (event.getClickCount() == 2) { +                        if (lvActiveOperations.getSelectionModel().getSelectedItem() == null) { +                            return; +                        } +                        openDetailsWindow(lvActiveOperations.getSelectionModel().getSelectedItem()); +                    } +                });      }      public void updateList() { @@ -130,6 +155,17 @@ public class CreateOperationController {              alert.setContentText(e.getMessage());              alert.showAndWait();          } +        try { +            lvActiveOperations.setItems( +                    FXCollections.observableArrayList( +                            operationService.list(EnumSet.of(Status.ACTIVE)))); +        } catch (ServiceException e) { +            Alert alert = new Alert(Alert.AlertType.ERROR); +            alert.setTitle("Fehler - Einsätze"); +            alert.setHeaderText("Beim Holen der aktiven Einsätze ist ein Fehler aufgetreten."); +            alert.setContentText(e.getMessage()); +            alert.showAndWait(); +        }      }      /*private LinkedList<Vehicle> mylist() { @@ -224,4 +260,14 @@ public class CreateOperationController {          updateList();      } + +    private void openDetailsWindow(Operation operation) { +        operationDetailsController.setControllers(this, operationService, vehicleService); +        apInvisible.setVisible(true); +        operationDetailsController.initOperation(operation); +    } + +    void setVisible(boolean b) { +        apInvisible.setVisible(!b); +    }  } diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/userInterface/OperationDetailsController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/userInterface/OperationDetailsController.java new file mode 100644 index 0000000..cacaa29 --- /dev/null +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/userInterface/OperationDetailsController.java @@ -0,0 +1,194 @@ +package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.userInterface; + +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.Status; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.OperationService; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.VehicleService; +import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidOperationException; +import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidVehicleException; +import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; +import java.util.EnumSet; +import javafx.collections.FXCollections; +import javafx.fxml.FXML; +import javafx.scene.control.Alert; +import javafx.scene.control.Alert.AlertType; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.control.ListCell; +import javafx.scene.control.ListView; +import javafx.scene.layout.AnchorPane; +import org.springframework.stereotype.Controller; + +@Controller +public class OperationDetailsController { + +    public Operation operation; +    private OperationService operationService; +    private VehicleService vehicleService; +    private CreateOperationController createOperationController; +    public ListView<Vehicle> lvVehicles; +    public ListView<Operation> lvActiveOperations; +    public Label lblChosenVehicles; +    public Button btnCloseOperation; +    public Button btnCancelOperation; +    public Label lblCode, lblAdditionalInfo, lblAddress; +    public AnchorPane operationDetailsAP; + +    public OperationDetailsController() {} + +    @FXML +    public void initialize() { +        lvVehicles.setCellFactory( +                param -> +                        new ListCell<>() { +                            @Override +                            protected void updateItem(Vehicle item, boolean empty) { +                                super.updateItem(item, empty); + +                                if (empty || item == null || item.name() == null) { +                                    setText(null); +                                } else { +                                    setText(item.name()); +                                } +                            } +                        }); +        lvActiveOperations.setCellFactory( +                param -> +                        new ListCell<>() { +                            @Override +                            protected void updateItem(Operation item, boolean empty) { +                                super.updateItem(item, empty); + +                                if (empty || item == null || item.opCode() == null) { +                                    setText(null); +                                } else { +                                    setText(item.opCode()); +                                } +                            } +                        }); +        lvActiveOperations.setOnMouseClicked( +                event -> { +                    if (event.getClickCount() == 2) { +                        if (lvActiveOperations.getSelectionModel().getSelectedItem() == null) { +                            return; +                        } +                        initOperation(lvActiveOperations.getSelectionModel().getSelectedItem()); +                    } +                }); +    } + +    void setControllers( +            CreateOperationController createOperationController, +            OperationService operationService, +            VehicleService vehicleService) { +        this.operationService = operationService; +        this.createOperationController = createOperationController; +        this.vehicleService = vehicleService; +    } + +    void initOperation(Operation operation) { +        fillActiveList(); +        this.operation = operation; +        lblCode.setText(operation.opCode()); +        StringBuilder result = new StringBuilder(); +        for (int i = 0; i < operation.vehicles().size(); i++) { +            if (i != operation.vehicles().size() - 1) { +                result.append(operation.vehicles().get(i).name()).append(","); +            } else { +                result.append(operation.vehicles().get(i).name()); +            } +        } +        lblChosenVehicles.setText(result.toString()); +        lblAdditionalInfo.setText(operation.additionalInfo()); +        lblAddress.setText(operation.destination()); +        lvVehicles.setItems(FXCollections.observableArrayList(operation.vehicles())); +        operationDetailsAP.setVisible(true); +    } + +    private void fillActiveList() { +        try { +            lvActiveOperations.setItems( +                    FXCollections.observableArrayList( +                            operationService.list(EnumSet.of(Status.ACTIVE)))); +        } catch (ServiceException e) { +            Alert alert = new Alert(AlertType.ERROR); +            alert.setTitle("Fehler"); +            alert.setHeaderText("Fehler!"); +            alert.setContentText(e.getMessage()); +            alert.showAndWait(); +        } +    } + +    @FXML +    public void closeOperationClicked() { +        try { +            operationService.complete(operation.id(), Status.COMPLETED); +        } catch (InvalidOperationException | ServiceException e) { +            Alert alert = new Alert(AlertType.ERROR); +            alert.setTitle("Fehler"); +            alert.setHeaderText("Fehler!"); +            alert.setContentText(e.getMessage()); +            alert.showAndWait(); +            return; +        } +        for (Vehicle v : operation.vehicles()) { +            v = v.toBuilder().status(Vehicle.Status.FREI_FUNK).build(); +            try { +                vehicleService.update(v); +            } catch (InvalidVehicleException | ServiceException e) { +                Alert alert = new Alert(AlertType.ERROR); +                alert.setTitle("Fehler"); +                alert.setHeaderText("Fehler!"); +                alert.setContentText(e.getMessage()); +                alert.showAndWait(); +                return; +            } +        } +        Alert alert = new Alert(AlertType.CONFIRMATION); +        alert.setTitle("Erfolg"); +        alert.setHeaderText("Erfolgreich aktualisiert"); +        alert.setContentText("Der Einsatz wurde erfolgreich aktualisiert."); +        alert.showAndWait(); +        closeWindow(); +        createOperationController.updateList(); +    } + +    public void cancelOperationClicked() { +        try { +            operationService.complete(operation.id(), Status.CANCELLED); +        } catch (InvalidOperationException | ServiceException e) { +            Alert alert = new Alert(AlertType.ERROR); +            alert.setTitle("Fehler"); +            alert.setHeaderText("Fehler!"); +            alert.setContentText(e.getMessage()); +            alert.showAndWait(); +            return; +        } +        for (Vehicle v : operation.vehicles()) { +            v = v.toBuilder().status(Vehicle.Status.FREI_FUNK).build(); +            try { +                vehicleService.update(v); +            } catch (InvalidVehicleException | ServiceException e) { +                Alert alert = new Alert(AlertType.ERROR); +                alert.setTitle("Fehler"); +                alert.setHeaderText("Fehler!"); +                alert.setContentText(e.getMessage()); +                alert.showAndWait(); +                return; +            } +        } +        Alert alert = new Alert(AlertType.CONFIRMATION); +        alert.setTitle("Erfolg"); +        alert.setHeaderText("Erfolgreich aktualisiert"); +        alert.setContentText("Der Einsatz wurde erfolgreich aktualisiert."); +        alert.showAndWait(); +        closeWindow(); +        createOperationController.updateList(); +    } + +    public void closeWindow() { +        operationDetailsAP.setVisible(false); +        this.createOperationController.setVisible(true); +    } +}  | 
