aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller')
-rw-r--r--src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/ArchiveOperationController.java127
-rw-r--r--src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateCarController.java206
-rw-r--r--src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java189
-rw-r--r--src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateOperationController.java365
-rw-r--r--src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/EmployeeListItemController.java83
-rw-r--r--src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/FilterEmployeesController.java60
-rw-r--r--src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/ListEmployeesController.java117
-rw-r--r--src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/OperationDetailsController.java162
-rw-r--r--src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/RegistrationWindowController.java213
-rw-r--r--src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/VehiclePaneController.java113
10 files changed, 0 insertions, 1635 deletions
diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/ArchiveOperationController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/ArchiveOperationController.java
deleted file mode 100644
index 80d9fc4..0000000
--- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/ArchiveOperationController.java
+++ /dev/null
@@ -1,127 +0,0 @@
-package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.controller;
-
-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.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.Objects;
-import java.util.stream.Collectors;
-import javafx.fxml.FXML;
-import javafx.scene.control.Alert;
-import javafx.scene.control.Alert.AlertType;
-import javafx.scene.control.Button;
-import javafx.scene.control.Hyperlink;
-import javafx.scene.control.Label;
-import javafx.scene.layout.AnchorPane;
-import javafx.scene.layout.FlowPane;
-import org.springframework.stereotype.Controller;
-
-@Controller
-public class ArchiveOperationController {
- @FXML private AnchorPane apDetails;
- @FXML private Label lblCodeHeader;
- @FXML private Hyperlink hypBack;
- @FXML private Label lblOpCode;
- @FXML private Label lblVehicles;
- @FXML private Label lblDate;
- @FXML private Label lblAddress;
- @FXML private FlowPane fpVehicles;
- private final OperationService operationService;
- @FXML private FlowPane archiveOperationFlowPane;
- private LinkedList<Operation> list = new LinkedList<>();
-
- public ArchiveOperationController(OperationService operationService) {
- this.operationService = operationService;
- }
-
- @FXML
- private void initialize() {
- try {
- list.addAll(operationService.list(EnumSet.of(Status.CANCELLED, Status.COMPLETED)));
- } catch (ServiceException e) {
- Alert alert = new Alert(AlertType.ERROR);
- alert.setTitle("Fehler");
- alert.setHeaderText("Fehler!");
- alert.setContentText("Die Einsätze konnten nicht geladen werden!");
- alert.showAndWait();
- }
- for (Operation operation : list) {
- Button b = new Button();
- b.setPrefHeight(200);
- b.setPrefWidth(750 / 2);
- b.setText(operation.opCode());
- b.setOnAction(event -> buttonClicked(b));
- archiveOperationFlowPane.getChildren().add(b);
- }
- }
-
- private Operation detailOperation;
-
- private void buttonClicked(Button button) {
- int size = archiveOperationFlowPane.getChildren().size();
- int index = 0;
- for (int i = 0; i < size; i++) {
- if (archiveOperationFlowPane.getChildren().get(i) == button) {
- index = i;
- break;
- }
- }
- detailOperation = list.get(index);
- setOperation();
- setDetailsVisible(true);
- }
-
- private void setOperation() {
- lblCodeHeader.setText(detailOperation.opCode());
- String date = "am ";
- if (detailOperation.created() != null) {
- LocalDateTime myDateTime =
- LocalDateTime.ofInstant(
- Objects.requireNonNull(detailOperation.created()), ZoneOffset.UTC);
- date +=
- myDateTime.getDayOfMonth()
- + "."
- + myDateTime.getMonth().getValue()
- + "."
- + myDateTime.getYear();
- lblDate.setText(date);
- } else {
- lblDate.setText("---");
- }
-
- lblOpCode.setText(detailOperation.opCode());
- Collection<String> elements =
- detailOperation.vehicles().stream().map(Vehicle::name).collect(Collectors.toList());
- String result = String.join(", ", elements);
-
- lblVehicles.setText(result);
- lblAddress.setText(detailOperation.destination());
-
- for (Vehicle vehicle : detailOperation.vehicles()) {
- Button b = new Button();
- b.setPrefHeight(200);
- b.setPrefWidth(600 / 2);
- b.setText(vehicle.name());
- fpVehicles.getChildren().add(b);
- }
- }
-
- public void setListVisible(boolean b) {
- archiveOperationFlowPane.setVisible(b);
- }
-
- private void setDetailsVisible(boolean b) {
- apDetails.setVisible(b);
- }
-
- public void backClicked() {
- fpVehicles.getChildren().clear();
- setDetailsVisible(false);
- }
-}
diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateCarController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateCarController.java
deleted file mode 100644
index ce795da..0000000
--- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateCarController.java
+++ /dev/null
@@ -1,206 +0,0 @@
-package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.controller;
-
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle;
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.ConstructionType;
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.Status;
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.VehicleType;
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.VehicleService;
-import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidVehicleException;
-import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException;
-import java.lang.invoke.MethodHandles;
-import java.util.EnumSet;
-import java.util.Set;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-import javafx.collections.FXCollections;
-import javafx.event.ActionEvent;
-import javafx.fxml.FXML;
-import javafx.geometry.HPos;
-import javafx.geometry.Orientation;
-import javafx.scene.control.Alert;
-import javafx.scene.control.Alert.AlertType;
-import javafx.scene.control.Button;
-import javafx.scene.control.ButtonType;
-import javafx.scene.control.CheckBox;
-import javafx.scene.control.ChoiceBox;
-import javafx.scene.layout.FlowPane;
-import javafx.stage.Stage;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Controller;
-
-@Controller
-public class CreateCarController {
-
- @FXML private ChoiceBox<String> cmb_Ctyp;
- @FXML private ChoiceBox<String> cmb_typ;
- @FXML private Button btn_cancel;
- @FXML private Button btn_create;
- @FXML private CheckBox cbx_NEF;
- @FXML private FlowPane fp_vehicleList;
-
- private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
- private final VehicleService vehicleService;
- private boolean update = false;
- private long vid = -1;
-
- public CreateCarController(VehicleService vehicleService) {
- this.vehicleService = vehicleService;
- }
-
- @FXML
- private void initialize() {
- cmb_Ctyp.setItems(
- FXCollections.observableArrayList(
- Stream.of(
- ConstructionType.NORMAL,
- ConstructionType.MITTELHOCHDACH,
- ConstructionType.HOCHDACH)
- .map(Enum::toString)
- .collect(Collectors.toList())));
- cmb_Ctyp.setValue(ConstructionType.NORMAL.toString());
- cmb_typ.setItems(
- FXCollections.observableArrayList(
- Stream.of(
- VehicleType.BKTW,
- VehicleType.KTW_B,
- VehicleType.KTW,
- VehicleType.RTW,
- VehicleType.NEF,
- VehicleType.NAH)
- .map(Enum::toString)
- .collect(Collectors.toList())));
- cmb_typ.setValue(VehicleType.BKTW.toString());
- vehicleListFP();
- }
-
- @FXML
- private void onCancelClicked() {
- ((Stage) btn_cancel.getScene().getWindow()).close();
- }
-
- @FXML
- private void createCar(ActionEvent actionEvent) {
-
- if (!update) {
- Vehicle vehicle =
- Vehicle.builder()
- .constructionType(parseConstructionType())
- .type(parseType())
- .name("")
- .status(Status.ABGEMELDET)
- .hasNef(cbx_NEF.isSelected())
- .build();
- try {
- vehicleService.add(vehicle);
- setToStart();
- } catch (InvalidVehicleException e) {
- LOG.error("Invalid Vehicle: {}", e);
- createComplete(AlertType.ERROR, "Ungültige Eingabe", e.getMessage());
- setToStart();
- return;
- } catch (ServiceException e) {
- LOG.error("Exception: {}", e);
- createComplete(AlertType.ERROR, "Fehler", e.getMessage());
- setToStart();
- return;
- }
- createComplete(
- AlertType.CONFIRMATION,
- "Speichern Erfolgreich",
- "Auto wurde erfolgreich angelegt");
- } else {
- try {
- Vehicle vehicle =
- Vehicle.builder()
- .id(vid)
- .constructionType(parseConstructionType())
- .type(parseType())
- .name("")
- .status(Status.ABGEMELDET)
- .hasNef(cbx_NEF.isSelected())
- .build();
- vehicleService.update(vehicle);
- setToStart();
- } catch (InvalidVehicleException e) {
- LOG.error("Invalid Vehicle: {}", e);
- createComplete(AlertType.ERROR, "Ungültige Eingabe", e.getMessage());
- setToStart();
- return;
- } catch (ServiceException e) {
- LOG.error("Exception: {}", e);
- createComplete(AlertType.ERROR, "Fehler", e.getMessage());
- setToStart();
- return;
- }
- createComplete(
- AlertType.CONFIRMATION,
- "Bearbiten Erfolgreich",
- "Auto wurde erfolgreich bearbeitet");
- }
- vehicleListFP();
- }
-
- private ConstructionType parseConstructionType() {
- if (cmb_Ctyp.getSelectionModel().getSelectedItem() == null) {
- return ConstructionType.NORMAL;
- }
- return ConstructionType.valueOf(cmb_Ctyp.getSelectionModel().getSelectedItem().toString());
- }
-
- private VehicleType parseType() {
- if (cmb_typ.getSelectionModel().getSelectedItem() == null) {
- return VehicleType.BKTW;
- }
- return VehicleType.valueOf(cmb_typ.getSelectionModel().getSelectedItem().toString());
- }
-
- private void createComplete(AlertType alertType, String headerText, String contentText) {
- Alert alert = new Alert(alertType, contentText, ButtonType.OK);
- alert.setHeaderText(headerText);
- alert.showAndWait();
- }
-
- private void vehicleListFP() {
- Set<Vehicle> vehicleList = null;
- fp_vehicleList.getChildren().clear();
- try {
- vehicleList = vehicleService.list(EnumSet.range(Status.ABGEMELDET, Status.FREI_FUNK));
- } catch (ServiceException e) {
- e.printStackTrace();
- }
-
- fp_vehicleList.setOrientation(Orientation.HORIZONTAL);
- fp_vehicleList.setColumnHalignment(HPos.LEFT); // align labels on left
- fp_vehicleList.setPrefWrapLength(200); // preferred height = 200
-
- for (Vehicle v : vehicleList) {
- Button b = new Button(v.name());
- b.setOnAction(event -> updateVehicle(v));
- fp_vehicleList.getChildren().add(b);
- }
- fp_vehicleList.setVisible(true);
- }
-
- private void setToStart() {
- btn_create.setText("Erstellen");
- cbx_NEF.setSelected(false);
- cmb_typ.setValue(VehicleType.BKTW.name());
- cmb_Ctyp.setValue(ConstructionType.NORMAL.name());
- update = false;
- }
-
- private void updateVehicle(Vehicle vehicle) {
- cmb_Ctyp.setValue(vehicle.constructionType().name());
- cmb_typ.setValue(vehicle.type().name());
- cbx_NEF.setSelected(vehicle.hasNef());
- btn_create.setText("Speichern");
- vid = vehicle.id();
- update = true;
- }
-
- @FXML
- public void cancelAction(ActionEvent actionEvent) {
- setToStart();
- }
-}
diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java
deleted file mode 100644
index 15282cc..0000000
--- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java
+++ /dev/null
@@ -1,189 +0,0 @@
-package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.controller;
-
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee;
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee.EducationLevel;
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.EmployeeService;
-import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidEmployeeException;
-import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException;
-import at.ac.tuwien.sepm.assignment.groupphase.util.SpringFXMLLoader;
-import at.ac.tuwien.sepm.assignment.groupphase.util.SpringFXMLLoader.FXMLWrapper;
-import java.io.IOException;
-import java.lang.invoke.MethodHandles;
-import java.time.LocalDate;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-import javafx.collections.FXCollections;
-import javafx.fxml.FXML;
-import javafx.scene.Node;
-import javafx.scene.control.Alert;
-import javafx.scene.control.Alert.AlertType;
-import javafx.scene.control.Button;
-import javafx.scene.control.ButtonType;
-import javafx.scene.control.CheckBox;
-import javafx.scene.control.ChoiceBox;
-import javafx.scene.control.Label;
-import javafx.scene.control.TextField;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.context.annotation.Scope;
-import org.springframework.stereotype.Controller;
-
-@Controller
-@Scope("prototype")
-public class CreateNewEmployeeController {
-
- private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
- private final EmployeeService employeeService;
-
- @FXML private Label lblHeader;
- @FXML private CheckBox inputIsDriver;
- @FXML private CheckBox inputIsPilot;
- @FXML private TextField inputName;
- @FXML private ChoiceBox<String> inputQualification;
- @FXML private Button btnCreate;
-
- private Node rootElement;
- private Employee employee;
- private boolean isEdit;
-
- private Runnable consumerCancelClicked;
- private Runnable consumerCreateClicked;
-
- public CreateNewEmployeeController(EmployeeService employeeService) {
- this.employeeService = employeeService;
- }
-
- @FXML
- private void initialize() {
- inputQualification.setItems(
- FXCollections.observableArrayList(
- Stream.of(
- EducationLevel.RS,
- EducationLevel.NFS,
- EducationLevel.NKV,
- EducationLevel.NKA,
- EducationLevel.NKI,
- EducationLevel.NA)
- .map(Enum::toString)
- .collect(Collectors.toList())));
-
- inputQualification.setValue(EducationLevel.RS.toString());
- employee =
- Employee.builder()
- .name("")
- .educationLevel(EducationLevel.RS)
- .isDriver(false)
- .isPilot(false)
- .birthday(LocalDate.MIN)
- .build();
- }
-
- @FXML
- private void onCancelClicked() {
- if (consumerCancelClicked != null) {
- consumerCancelClicked.run();
- }
- }
-
- @FXML
- private void onCreateClicked() {
-
- employee =
- employee.toBuilder()
- .name(inputName.getText())
- .educationLevel(parseEducationLevel())
- .birthday(LocalDate.MIN) // TODO: change UI to include birthday field
- .isDriver(inputIsDriver.isSelected())
- .isPilot(inputIsPilot.isSelected())
- .build();
-
- try {
- if (isEdit) {
- employeeService.update(employee);
- } else {
- employeeService.add(employee);
- }
- } catch (InvalidEmployeeException e) {
- LOG.error("Invalid Employee: {}", e);
-
- showModalDialogWithOkButton(
- AlertType.ERROR,
- "Ungültige Eingabe",
- "Mindestens eines der Eingabefelder haben einen ungültigen Wert!");
- return;
- } catch (ServiceException e) {
- LOG.error("Employee could not be saved: {}", e);
-
- showModalDialogWithOkButton(
- AlertType.ERROR,
- "Speicherfehler",
- "Der Eintrag konnte nicht gespeichert werden. Bitte versuchen Sie es erneut.");
- return;
- }
-
- showModalDialogWithOkButton(
- AlertType.INFORMATION,
- "Erfolgreich angelegt",
- "Mitarbeiter wurde erfolgreich angelegt und gespeichert!");
-
- if (consumerCreateClicked != null) {
- consumerCreateClicked.run();
- }
- }
-
- private void showModalDialogWithOkButton(
- AlertType alertType, String headerText, String contentText) {
- Alert alert = new Alert(alertType, contentText, ButtonType.OK);
- alert.setHeaderText(headerText);
- alert.showAndWait();
- }
-
- private EducationLevel parseEducationLevel() {
- if (inputQualification.getSelectionModel().getSelectedItem() == null) {
- return EducationLevel.RS;
- }
- return EducationLevel.valueOf(inputQualification.getSelectionModel().getSelectedItem());
- }
-
- private void setData(Employee employee) {
- isEdit = true;
- this.employee = employee;
- inputName.setText(employee.name());
- inputQualification.setValue(employee.educationLevel().name());
- inputIsDriver.setSelected(employee.isDriver());
- inputIsPilot.setSelected(employee.isPilot());
-
- lblHeader.setText("Person bearbeiten");
- btnCreate.setText("Speichern");
- }
-
- public static CreateNewEmployeeController createCreateNewEmployeeController(
- SpringFXMLLoader fxmlLoader, Employee employee) throws IOException {
- CreateNewEmployeeController controller = createCreateNewEmployeeController(fxmlLoader);
- controller.setData(employee);
- return controller;
- }
-
- public static CreateNewEmployeeController createCreateNewEmployeeController(
- SpringFXMLLoader fxmlLoader) throws IOException {
- FXMLWrapper<Object, CreateNewEmployeeController> wrapper =
- fxmlLoader.loadAndWrap(
- "/fxml/createNewEmployee.fxml", CreateNewEmployeeController.class);
- Node root = (Node) wrapper.getLoadedObject();
- CreateNewEmployeeController controller = wrapper.getController();
- controller.rootElement = root;
- return controller;
- }
-
- public Node getRootElement() {
- return rootElement;
- }
-
- public void setConsumerCancelClicked(Runnable consumerCancelClicked) {
- this.consumerCancelClicked = consumerCancelClicked;
- }
-
- public void setConsumerCreateClicked(Runnable consumerCreateClicked) {
- this.consumerCreateClicked = consumerCreateClicked;
- }
-}
diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateOperationController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateOperationController.java
deleted file mode 100644
index 57759e3..0000000
--- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateOperationController.java
+++ /dev/null
@@ -1,365 +0,0 @@
-package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.controller;
-
-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.Registration;
-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 at.ac.tuwien.sepm.assignment.groupphase.util.SpringFXMLLoader;
-import java.io.IOException;
-import java.lang.invoke.MethodHandles;
-import java.time.Instant;
-import java.time.temporal.ChronoUnit;
-import java.util.ArrayList;
-import java.util.EnumSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-import javafx.collections.FXCollections;
-import javafx.event.ActionEvent;
-import javafx.fxml.FXML;
-import javafx.scene.Parent;
-import javafx.scene.Scene;
-import javafx.scene.control.Alert;
-import javafx.scene.control.Alert.AlertType;
-import javafx.scene.control.Button;
-import javafx.scene.control.ContextMenu;
-import javafx.scene.control.Label;
-import javafx.scene.control.ListCell;
-import javafx.scene.control.ListView;
-import javafx.scene.control.MenuItem;
-import javafx.scene.control.TextField;
-import javafx.scene.input.KeyCode;
-import javafx.scene.input.KeyEvent;
-import javafx.scene.input.MouseButton;
-import javafx.scene.layout.AnchorPane;
-import javafx.scene.layout.FlowPane;
-import javafx.stage.Stage;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Controller;
-
-@Controller
-public class CreateOperationController {
-
- private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-
- public AnchorPane apCreateOperation;
- @FXML private TextField txtCode;
- @FXML private TextField txtAddress;
- @FXML private TextField txtNote;
- @FXML private Button btnCreateOperation;
- @FXML private ListView<Vehicle> lvVehicles;
- @FXML private ListView<Operation> lvActiveOperations;
- @FXML private Label lblChosenVehicles;
- @FXML private AnchorPane apInvisible;
- @FXML private OperationDetailsController operationDetailsController;
- @FXML private FlowPane fpVehicles;
-
- private LinkedList<Vehicle> chosenVehicles = new LinkedList<>();
-
- private final OperationService operationService;
- private final VehicleService vehicleService;
- private final SpringFXMLLoader fxmlLoader;
-
- public CreateOperationController(
- OperationService operationService,
- VehicleService vehicleService,
- SpringFXMLLoader fxmlLoader) {
- this.operationService = operationService;
- this.vehicleService = vehicleService;
- this.fxmlLoader = fxmlLoader;
- }
-
- @FXML
- private void initialize() {
- lblChosenVehicles.setText("keine ausgewählt");
- 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;
- }
- openDetailsWindow(lvActiveOperations.getSelectionModel().getSelectedItem());
- }
- });
- }
-
- public void updateList() {
- try {
- fpVehicles.getChildren().clear();
-
- // TODO: this should probably be handled differently
- Set<Vehicle> vehicles;
- if (txtCode.getText().isEmpty()) {
- vehicles =
- vehicleService.list(
- EnumSet.complementOf(EnumSet.of(Vehicle.Status.ABGEMELDET)));
- } else {
- vehicles = operationService.rankVehicles(txtCode.getText());
- }
-
- for (Vehicle vehicle : vehicles) {
- VehiclePaneController controller = VehiclePaneController.createVehiclePane();
-
- controller.setData(vehicle, true);
- controller
- .getRootElement()
- .setOnMouseClicked(
- event -> {
- if (event.getButton().equals(MouseButton.SECONDARY)) {
- createContextMenu(vehicle, vehicleService)
- .show(
- controller.getRootElement(),
- event.getScreenX(),
- event.getScreenY());
- } else {
- if (chosenVehicles.contains(vehicle)) {
- chosenVehicles.remove(vehicle);
- controller.setSelected(false);
- } else {
- chosenVehicles.add(vehicle);
- controller.setSelected(true);
- }
-
- StringBuilder result = new StringBuilder();
- for (int i = 0; i < chosenVehicles.size(); i++) {
- if (i == chosenVehicles.size() - 1) {
- result.append(chosenVehicles.get(i).name());
- } else {
- result.append(chosenVehicles.get(i).name())
- .append(", ");
- }
- }
- if (result.toString().equals("")) {
- lblChosenVehicles.setText("keine ausgewählt");
- } else {
- lblChosenVehicles.setText(result.toString());
- }
- }
- });
-
- fpVehicles.getChildren().add(controller.getRootElement());
- }
- } catch (ServiceException | IOException | InvalidOperationException e) {
- LOG.error("Error while updating list.", e);
-
- Alert alert = new Alert(Alert.AlertType.ERROR);
- alert.setTitle("Fehler");
- alert.setHeaderText("Fehler!");
- 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 ContextMenu createContextMenu(Vehicle data, VehicleService vehicleService) {
- ContextMenu menu = new ContextMenu();
-
- for (Vehicle.Status status : Vehicle.Status.values()) {
- if (status == Vehicle.Status.ABGEMELDET) {
- continue;
- }
-
- MenuItem mi = new MenuItem(status.name());
-
- if (status == Vehicle.Status.FREI_FUNK || status == Vehicle.Status.FREI_WACHE) {
- mi.getStyleClass().add("mi-free");
- } else {
- mi.getStyleClass().add("mi-other");
- }
-
- mi.setOnAction(
- event -> {
- try {
- vehicleService.update(data.toBuilder().status(status).build());
- this.updateList();
- } catch (InvalidVehicleException | ServiceException e) {
- LOG.error("Error while setting status.", e);
- Alert a = new Alert(AlertType.ERROR, e.getMessage());
- a.show();
- }
- });
-
- menu.getItems().add(mi);
- }
-
- MenuItem abmelden = new MenuItem("abmelden");
-
- abmelden.setOnAction(
- event -> {
- try {
- List<Registration> registrations = data.registrations();
- assert registrations
- != null; // Otherwise the element shouldn't be in the list.
-
- List<Registration> newRegistrations = new ArrayList<>();
- Instant now = Instant.now();
-
- for (Registration registration : registrations) {
- if (registration.start().isBefore(now)
- && registration.end().isAfter(now)) {
- newRegistrations.add(
- registration
- .toBuilder()
- .end(Instant.now().minus(1, ChronoUnit.SECONDS))
- .build());
- } else newRegistrations.add(registration);
- }
-
- vehicleService.update(
- data.toBuilder()
- .registrations(newRegistrations)
- .status(Vehicle.Status.ABGEMELDET)
- .build());
-
- this.updateList();
- } catch (InvalidVehicleException | ServiceException e) {
- LOG.error("Error while unregistering.", e);
- Alert a = new Alert(AlertType.ERROR, e.getMessage());
- a.show();
- }
- });
-
- menu.getItems().add(abmelden);
- return menu;
- }
-
- @FXML
- protected void createOperationClicked() {
- Vehicle[] vehicles = new Vehicle[chosenVehicles.size()];
- for (int i = 0; i < chosenVehicles.size(); i++) {
- vehicles[i] = chosenVehicles.get(i);
- }
- Operation operation =
- Operation.builder()
- .additionalInfo(txtNote.getText())
- .destination(txtAddress.getText())
- .opCode(txtCode.getText())
- .status(Status.ACTIVE)
- .vehicles(Set.of(vehicles))
- .build();
- try {
- operationService.add(operation);
- } catch (ServiceException | InvalidOperationException e) {
- Alert alert = new Alert(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 gespeichert");
- alert.setContentText("Der Einsatz wurde erfolgreich gespeichert.");
- alert.showAndWait();
- updateList();
- lblChosenVehicles.setText("keine ausgewählt");
- txtAddress.setText("");
- txtCode.setText("");
- txtNote.setText("");
- chosenVehicles = new LinkedList<>();
- }
-
- public void onRegistrationLinkClicked(ActionEvent actionEvent) {
- openNewWindow("RegistrationWindow.fxml");
- }
-
- public void onEmployeeLinkClicked(ActionEvent actionEvent) {
- openNewWindow("listEmployees.fxml");
- }
-
- public void onVehicleLinkClicked(ActionEvent actionEvent) {
- openNewWindow("createCar.fxml");
- }
-
- public void onArchivLinkClicked() {
- openNewArchivWindow();
- }
-
- private void openNewArchivWindow() {
- Stage stage = new Stage();
- try {
- stage.setScene(
- new Scene(
- (Parent)
- fxmlLoader.load(
- getClass()
- .getResourceAsStream(
- "/fxml/ArchiveOperation.fxml"))));
- } catch (IOException e) {
- LOG.error("Could not open new window: {}", e);
- }
- stage.setTitle("Einsatz erstellen");
- stage.centerOnScreen();
- stage.show();
- updateList();
- }
-
- private void openNewWindow(String fxmlFileName) {
-
- Stage stage = new Stage();
- try {
- stage.setScene(
- new Scene(
- (Parent)
- fxmlLoader.load(
- getClass()
- .getResourceAsStream(
- "/fxml/" + fxmlFileName))));
- } catch (IOException e) {
- LOG.error("Could not open new window: {}", e);
- }
-
- stage.setTitle("Ressourcenverwaltung");
- stage.centerOnScreen();
- stage.showAndWait(); // important to call wait so that updateList is executed afterwards
-
- updateList();
- }
-
- void setVisible(boolean b) {
- apInvisible.setVisible(!b);
- }
-
- private void openDetailsWindow(Operation operation) {
- operationDetailsController.initOperation(operation);
- this.setVisible(false);
- }
-
- @FXML
- public void onOperationCodeChanged(KeyEvent keyEvent) {
- if (keyEvent.getCode() == KeyCode.ENTER) {
- updateList();
- }
- }
-}
diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/EmployeeListItemController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/EmployeeListItemController.java
deleted file mode 100644
index 11b5626..0000000
--- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/EmployeeListItemController.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.controller;
-
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee;
-import at.ac.tuwien.sepm.assignment.groupphase.util.SpringFXMLLoader;
-import at.ac.tuwien.sepm.assignment.groupphase.util.SpringFXMLLoader.FXMLWrapper;
-import java.io.IOException;
-import java.util.function.Consumer;
-import javafx.fxml.FXML;
-import javafx.scene.Node;
-import javafx.scene.control.Label;
-import javafx.scene.image.Image;
-import javafx.scene.image.ImageView;
-import org.springframework.context.annotation.Scope;
-import org.springframework.stereotype.Controller;
-
-@Controller
-@Scope("prototype")
-public class EmployeeListItemController {
-
- @FXML private Label lblName;
- @FXML private Label lblQualification;
- @FXML private Label lblPilot;
- @FXML private Label lblDriver;
- @FXML private ImageView imgPilot;
- @FXML private ImageView imgDriver;
- @FXML private ImageView imgQualification;
-
- private Node rootElement;
- private Employee employee;
-
- private Consumer<Employee> consumerEditEmployeeClicked;
-
- @FXML
- public void onEditEmployeeClicked() {
- if (consumerEditEmployeeClicked != null) {
- consumerEditEmployeeClicked.accept(employee);
- }
- }
-
- private void setData(Employee employee) {
- this.employee = employee;
- lblName.setText(employee.name());
- lblQualification.setText(employee.educationLevel().name());
- lblPilot.setText(String.format("%s Pilot", employee.isPilot() ? "ist" : "nicht"));
- lblDriver.setText(String.format("%s Fahrer", employee.isDriver() ? "ist" : "nicht"));
- imgQualification.setImage(new Image("/images/Qualification.png"));
- String imgSrcPilot =
- String.format("/images/%s", employee.isPilot() ? "Pilot.png" : "NotPilot.png");
- imgPilot.setImage(new Image(imgSrcPilot));
- String imgSrcDriver =
- String.format("/images/%s", employee.isDriver() ? "Driver.png" : "NotDriver.png");
- imgDriver.setImage(new Image(imgSrcDriver));
- }
-
- public static EmployeeListItemController createEmployeeListItemController(
- SpringFXMLLoader fxmlLoader, Employee employee) throws IOException {
- EmployeeListItemController controller = createEmployeeListItemController(fxmlLoader);
- controller.setData(employee);
- return controller;
- }
-
- public static EmployeeListItemController createEmployeeListItemController(
- SpringFXMLLoader loader) throws IOException {
- FXMLWrapper<Object, EmployeeListItemController> wrapper =
- loader.loadAndWrap("/fxml/employeeListItem.fxml", EmployeeListItemController.class);
- Node root = (Node) wrapper.getLoadedObject();
- EmployeeListItemController controller = wrapper.getController();
- controller.rootElement = root;
- return controller;
- }
-
- public Node getRootElement() {
- return rootElement;
- }
-
- public Employee getEmployee() {
- return employee;
- }
-
- public void setConsumerEditEmployeeClicked(Consumer<Employee> consumerEditEmployeeClicked) {
- this.consumerEditEmployeeClicked = consumerEditEmployeeClicked;
- }
-}
diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/FilterEmployeesController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/FilterEmployeesController.java
deleted file mode 100644
index 6d6214d..0000000
--- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/FilterEmployeesController.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.controller;
-
-import at.ac.tuwien.sepm.assignment.groupphase.util.SpringFXMLLoader;
-import at.ac.tuwien.sepm.assignment.groupphase.util.SpringFXMLLoader.FXMLWrapper;
-import java.io.IOException;
-import java.util.function.Consumer;
-import javafx.fxml.FXML;
-import javafx.scene.Node;
-import javafx.scene.control.TextField;
-import org.springframework.context.annotation.Scope;
-import org.springframework.stereotype.Controller;
-
-@Controller
-@Scope("prototype")
-public class FilterEmployeesController {
-
- @FXML private TextField inputFilterString;
-
- private Consumer<String> consumerFilterTextChanged;
- private Runnable consumerAddEmployeeClicked;
-
- private Node rootElement;
-
- @FXML
- private void onAddEmployeeClicked() {
- if (consumerAddEmployeeClicked != null) {
- consumerAddEmployeeClicked.run();
- }
- }
-
- @FXML
- private void onFilterTextChanged() {
- if (consumerFilterTextChanged != null) {
- consumerFilterTextChanged.accept(inputFilterString.getText());
- }
- }
-
- public void setOnFilterTextChangedListener(Consumer<String> callback) {
- this.consumerFilterTextChanged = callback;
- }
-
- public void setOnAddEmployeeClickedListener(Runnable callback) {
- this.consumerAddEmployeeClicked = callback;
- }
-
- public static FilterEmployeesController createFilterEmployeesController(
- SpringFXMLLoader fxmlLoader) throws IOException {
- FXMLWrapper<Object, FilterEmployeesController> wrapper =
- fxmlLoader.loadAndWrap(
- "/fxml/filterEmployeesControl.fxml", FilterEmployeesController.class);
- Node root = (Node) wrapper.getLoadedObject();
- FilterEmployeesController controller = wrapper.getController();
- controller.rootElement = root;
- return controller;
- }
-
- public Node getRootElement() {
- return rootElement;
- }
-}
diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/ListEmployeesController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/ListEmployeesController.java
deleted file mode 100644
index 25f1263..0000000
--- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/ListEmployeesController.java
+++ /dev/null
@@ -1,117 +0,0 @@
-package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.controller;
-
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee;
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.EmployeeService;
-import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException;
-import at.ac.tuwien.sepm.assignment.groupphase.util.SpringFXMLLoader;
-import java.io.IOException;
-import java.lang.invoke.MethodHandles;
-import javafx.fxml.FXML;
-import javafx.geometry.Insets;
-import javafx.scene.Node;
-import javafx.scene.layout.AnchorPane;
-import javafx.scene.layout.FlowPane;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Controller;
-
-@Controller
-public class ListEmployeesController {
-
- private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-
- @FXML private AnchorPane containerHeader;
- @FXML private FlowPane flowPaneEmployeeList;
-
- private final EmployeeService employeeService;
- private final SpringFXMLLoader fxmlLoader;
-
- public ListEmployeesController(EmployeeService employeeService, SpringFXMLLoader fxmlLoader) {
- this.employeeService = employeeService;
- this.fxmlLoader = fxmlLoader;
- }
-
- @FXML
- private void initialize() {
- openFilter();
- }
-
- private void openFilter() {
- try {
- FilterEmployeesController filterEmployeesController =
- FilterEmployeesController.createFilterEmployeesController(fxmlLoader);
- containerHeader.getChildren().clear();
- containerHeader.getChildren().add(filterEmployeesController.getRootElement());
- filterEmployeesController.setOnFilterTextChangedListener(this::updateEmployeeList);
- filterEmployeesController.setOnAddEmployeeClickedListener(this::openAddEmployee);
-
- updateEmployeeList();
-
- } catch (IOException e) {
- LOG.error("Could not initialize controller: {}", e);
- }
- }
-
- private void openAddEmployee() {
- openEmployee(null);
- }
-
- private void openEditEmployee(Employee employee) {
- openEmployee(employee);
- }
-
- private void openEmployee(Employee employee) {
- try {
- CreateNewEmployeeController createNewEmployeeController =
- employee == null
- ? CreateNewEmployeeController.createCreateNewEmployeeController(
- fxmlLoader)
- : CreateNewEmployeeController.createCreateNewEmployeeController(
- fxmlLoader, employee);
- containerHeader.getChildren().clear();
- containerHeader.getChildren().add(createNewEmployeeController.getRootElement());
- createNewEmployeeController.setConsumerCancelClicked(this::openFilter);
- createNewEmployeeController.setConsumerCreateClicked(this::openFilter);
- } catch (IOException e) {
- LOG.error("Could not prepare UI for adding employee: {}", e);
- }
- }
-
- private void updateEmployeeList() {
- updateEmployeeList("");
- }
-
- private void updateEmployeeList(String searchString) {
- try {
- flowPaneEmployeeList.getChildren().clear();
- employeeService
- .list()
- .stream()
- .filter(
- employee ->
- searchString.trim().isEmpty()
- || employee.name()
- .toLowerCase()
- .contains(searchString.toLowerCase()))
- .forEach(this::addEmployeeToFlowPane);
- } catch (ServiceException e) {
- LOG.error("Could not fetch employee list: {}", e);
- }
- }
-
- private void addEmployeeToFlowPane(Employee employee) {
- Insets listItemMargins = new Insets(0, 5, 10, 5);
-
- try {
- EmployeeListItemController controller =
- EmployeeListItemController.createEmployeeListItemController(
- fxmlLoader, employee);
- Node rootElement = controller.getRootElement();
- flowPaneEmployeeList.getChildren().add(rootElement);
- FlowPane.setMargin(rootElement, listItemMargins);
- controller.setConsumerEditEmployeeClicked(this::openEditEmployee);
- } catch (IOException e) {
- LOG.error("Could not create a new EmployeeListItem: {}", e);
- }
- }
-}
diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/OperationDetailsController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/OperationDetailsController.java
deleted file mode 100644
index dc7e969..0000000
--- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/OperationDetailsController.java
+++ /dev/null
@@ -1,162 +0,0 @@
-package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.controller;
-
-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.ServiceException;
-import java.util.Collection;
-import java.util.EnumSet;
-import java.util.stream.Collectors;
-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 final OperationService operationService;
- private final VehicleService vehicleService;
- private final CreateOperationController createOperationController;
- @FXML private ListView<Vehicle> lvVehicles;
- @FXML private ListView<Operation> lvActiveOperations;
- @FXML private Label lblChosenVehicles;
- @FXML private Button btnCloseOperation;
- @FXML private Button btnCancelOperation;
- @FXML private Label lblCode, lblAdditionalInfo, lblAddress;
- @FXML private AnchorPane operationDetailsAP;
-
- public OperationDetailsController(
- OperationService operationService,
- VehicleService vehicleService,
- CreateOperationController createOperationController) {
- this.operationService = operationService;
- this.vehicleService = vehicleService;
- this.createOperationController = createOperationController;
- }
-
- @FXML
- private 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 initOperation(Operation operation) {
- fillActiveList();
- this.operation = operation;
- lblCode.setText(operation.opCode());
- Collection<String> vehicleNames =
- operation.vehicles().stream().map(Vehicle::name).collect(Collectors.toList());
- String result = String.join(", ", vehicleNames);
- 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;
- }
- 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;
- }
- 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);
- }
-}
diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/RegistrationWindowController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/RegistrationWindowController.java
deleted file mode 100644
index 4653663..0000000
--- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/RegistrationWindowController.java
+++ /dev/null
@@ -1,213 +0,0 @@
-package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.controller;
-
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee;
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Registration;
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle;
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.Status;
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.EmployeeService;
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.RegistrationService;
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.VehicleService;
-import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidRegistrationException;
-import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidVehicleException;
-import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.LocalTime;
-import java.time.OffsetDateTime;
-import java.util.EnumSet;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-import javafx.beans.property.SimpleStringProperty;
-import javafx.collections.FXCollections;
-import javafx.collections.ObservableList;
-import javafx.fxml.FXML;
-import javafx.scene.control.Alert;
-import javafx.scene.control.Alert.AlertType;
-import javafx.scene.control.ChoiceBox;
-import javafx.scene.control.Label;
-import javafx.scene.control.TableColumn;
-import javafx.scene.control.TableView;
-import javafx.scene.control.TextField;
-import javafx.stage.Stage;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Controller;
-
-@Controller
-public class RegistrationWindowController {
-
- private static final Logger LOG = LoggerFactory.getLogger(RegistrationWindowController.class);
-
- private final EmployeeService employeeService;
-
- private final VehicleService vehicleService;
-
- private final RegistrationService registrationService;
-
- public RegistrationWindowController(
- EmployeeService employeeService,
- VehicleService vehicleService,
- RegistrationService registrationService) {
- this.employeeService = employeeService;
- this.vehicleService = vehicleService;
- this.registrationService = registrationService;
- }
-
- @FXML private ChoiceBox<Integer> cbStart;
- @FXML private ChoiceBox<Integer> cbEnd;
- @FXML private Label lVehicles;
- @FXML private Label lEmployees;
- @FXML private TextField tfVehicleSearch;
- @FXML private TextField tfEmployeeSearch;
- @FXML private TableView<Vehicle> tvVehicles;
- @FXML private TableView<Employee> tvEmployees;
- @FXML private TableColumn<Vehicle, String> tcVehicles;
- @FXML private TableColumn<Employee, String> tcEmployees;
-
- private Vehicle chosenVehicle;
- private List<Employee> chosenEmployees = new LinkedList<>();
-
- @FXML
- private void initialize() {
- // will have to be replaced for FlowPane
- try {
- Set<Vehicle> vehicles = vehicleService.list(EnumSet.of(Status.ABGEMELDET));
- tcVehicles.setCellValueFactory(x -> new SimpleStringProperty(x.getValue().name()));
- tvVehicles.setItems(FXCollections.observableArrayList(vehicles));
- } catch (ServiceException e) {
- LOG.warn(
- "Caught ServiceException while getting vehicles. Showing it to user. Error message: {}",
- e.getMessage());
- Alert alert = new Alert(AlertType.ERROR);
- alert.setTitle("Fahrzeuge - Fehler!");
- alert.setHeaderText("Beim Auflisten der Fahrzeug ist ein Fehler aufgetreten.");
- alert.setContentText(e.getMessage());
- alert.show();
- }
- try {
- Set<Employee> employees = employeeService.list();
- tcEmployees.setCellValueFactory(x -> new SimpleStringProperty(x.getValue().name()));
- tvEmployees.setItems(FXCollections.observableArrayList(employees));
- } catch (ServiceException e) {
- LOG.warn(
- "Caught ServiceException while getting employees. Showing it to user. Error message: {}",
- e.getMessage());
- Alert alert = new Alert(AlertType.ERROR);
- alert.setTitle("Personal - Fehler!");
- alert.setHeaderText("Beim Auflisten des Personals ist ein Fehler aufgetreten.");
- alert.setContentText(e.getMessage());
- alert.show();
- }
- tvVehicles.setOnMousePressed(
- mouseEvent -> {
- if (mouseEvent.isPrimaryButtonDown() && mouseEvent.getClickCount() == 2) {
- chosenVehicle = tvVehicles.getSelectionModel().getSelectedItem();
- if (chosenVehicle == null) {
- return;
- }
- lVehicles.setText(chosenVehicle.name());
- }
- });
- tvEmployees.setOnMousePressed(
- mouseEvent -> {
- if (mouseEvent.isPrimaryButtonDown() && mouseEvent.getClickCount() == 2) {
- Employee selection = tvEmployees.getSelectionModel().getSelectedItem();
- if (selection == null) {
- return;
- } else if (chosenEmployees.contains(selection)) {
- chosenEmployees.remove(selection);
- } else {
- chosenEmployees.add(selection);
- }
-
- StringBuilder text = new StringBuilder();
- for (Employee employee : chosenEmployees) {
- text.append(employee.name()).append("\n");
- }
- lEmployees.setText(text.toString());
- }
- });
- ObservableList<Integer> hours =
- FXCollections.observableArrayList(
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23);
- cbStart.setItems(hours);
- cbStart.setValue(0);
- cbEnd.setItems(hours);
- cbEnd.setValue(12);
- }
-
- public void cancel() {
- LOG.debug("Cancel Button clicked");
- chosenEmployees.clear();
- ((Stage) lVehicles.getScene().getWindow()).close();
- }
-
- public void create() {
- LOG.debug("Create Button clicked");
-
- Set<Registration> registrations = new HashSet<>();
- try {
- if (chosenVehicle == null) {
- throw new InvalidVehicleException("no Vehicle");
- }
- for (Employee employee : chosenEmployees) {
- registrations.add(
- Registration.builder()
- .id(chosenVehicle.id())
- .employee(employee)
- .start(
- LocalDateTime.of(
- LocalDate.now(),
- LocalTime.of(cbStart.getValue(), 0))
- .toInstant(OffsetDateTime.now().getOffset()))
- .end(
- LocalDateTime.of(
- LocalDate.now(),
- LocalTime.of(cbEnd.getValue(), 0))
- .toInstant(OffsetDateTime.now().getOffset()))
- .build());
- }
-
- registrationService.add(chosenVehicle.id(), registrations);
- chosenEmployees.clear();
- ((Stage) lVehicles.getScene().getWindow()).close();
-
- } catch (InvalidVehicleException e) {
- // NOT THROWN ANYWHERE RIGHT NOW
- LOG.info(
- "Caught InvalidVehicleException. Showing it to user. Error message: {}",
- e.getClass().toString(),
- e.getMessage());
- Alert alert = new Alert(AlertType.WARNING);
- alert.setTitle("Ungültiges Fahrzeug");
- alert.setHeaderText("Das spezifizierte Fahrzeug ist nicht gültig.");
- alert.setContentText(e.getMessage());
- alert.show();
- chosenEmployees.clear();
- } catch (ServiceException e) {
- LOG.warn(
- "Caught ServiceException while getting vehicles. Showing it to user. Error message: {}",
- e.getMessage());
- Alert alert = new Alert(AlertType.ERROR);
- alert.setTitle("Anmeldung - Fehler!");
- alert.setHeaderText("Beim Erstellen der Anmeldung ist ein Fehler aufgetreten.");
- alert.setContentText(e.getMessage());
- alert.show();
- chosenEmployees.clear();
- } catch (InvalidRegistrationException e) {
- LOG.info(
- "Caught InvalidRegistrationException. Showing it to user. Error message: {}",
- e.getMessage());
- Alert alert = new Alert(AlertType.WARNING);
- alert.setTitle("Ungültige Eingabe");
- alert.setHeaderText(
- "Die gewählte Kombination von Fahrzeug und Personal ist nicht gültig!");
- alert.setContentText(e.getMessage());
- alert.show();
- chosenEmployees.clear();
- }
- }
-}
diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/VehiclePaneController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/VehiclePaneController.java
deleted file mode 100644
index 6c0932b..0000000
--- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/VehiclePaneController.java
+++ /dev/null
@@ -1,113 +0,0 @@
-package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.controller;
-
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee.EducationLevel;
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Registration;
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle;
-import java.io.IOException;
-import java.time.Instant;
-import java.util.List;
-import java.util.Optional;
-import javafx.fxml.FXML;
-import javafx.fxml.FXMLLoader;
-import javafx.scene.Node;
-import javafx.scene.image.Image;
-import javafx.scene.image.ImageView;
-import javafx.scene.text.Text;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class VehiclePaneController {
-
- private static Logger LOG = LoggerFactory.getLogger(VehiclePaneController.class);
-
- public static VehiclePaneController createVehiclePane() throws IOException {
- FXMLLoader fxmlLoader =
- new FXMLLoader(VehiclePaneController.class.getResource("/fxml/vehiclePane.fxml"));
- Node root = fxmlLoader.load();
- VehiclePaneController result = fxmlLoader.getController();
- result.rootElement = root;
-
- return result;
- }
-
- @FXML private Text txtType;
- @FXML private Text txtNumber;
- @FXML private ImageView ivNEF;
- @FXML private Text txtNEF;
- @FXML private ImageView ivQualification;
- @FXML private Text txtQualification;
- @FXML private Text txtRooftype;
-
- private Node rootElement;
- private Vehicle data;
-
- public Node getRootElement() {
- return rootElement;
- }
-
- public Vehicle getData() {
- return data;
- }
-
- /**
- * * Set the displayed data of this VehiclePane.
- *
- * @param vehicle The data to display.
- * @param showQualification If true, the most recent registration of vehicle will be searched
- * for the highest qualification.
- */
- public void setData(Vehicle vehicle, boolean showQualification) {
- txtType.setText(vehicle.type().name());
- String constrType = vehicle.constructionType().name();
- txtRooftype.setText(
- constrType.substring(0, 1).toUpperCase() + constrType.substring(1).toLowerCase());
- txtNumber.setText("-" + vehicle.id());
- if (vehicle.hasNef()) {
- ivNEF.setImage(new Image("images/NEF.png"));
- txtNEF.setText("hat NEF-Halterung");
- } else {
- ivNEF.setImage(new Image("images/NotNEF.png"));
- txtNEF.setText("keine NEF-Halterung");
- }
- if (showQualification) {
-
- Instant now = Instant.now();
- List<Registration> regs = vehicle.registrations();
-
- if (regs == null) {
- return;
- }
-
- Optional<EducationLevel> edu =
- regs.stream()
- .filter(reg -> reg.start().isBefore(now) && reg.end().isAfter(now))
- .map(reg -> reg.employee().educationLevel())
- .max(EducationLevel::compareTo);
-
- if (!edu.isPresent()) {
- return;
- }
-
- txtQualification.setText(edu.get().name());
- } else {
- txtQualification.setVisible(false);
- txtQualification.setManaged(false);
- ivQualification.setVisible(false);
- ivQualification.setManaged(false);
- }
-
- this.data = vehicle;
- }
-
- public void setSelected(boolean selected) {
- rootElement.getStyleClass().clear();
-
- if (selected) {
- rootElement.getStyleClass().add("bg-yellow");
- rootElement.getStyleClass().add("shadowed");
- } else {
- rootElement.getStyleClass().add("bg-white");
- rootElement.getStyleClass().add("shadowed");
- }
- }
-}