aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/controller/ManageEmployeesController.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/controller/ManageEmployeesController.java')
-rw-r--r--src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/controller/ManageEmployeesController.java120
1 files changed, 120 insertions, 0 deletions
diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/controller/ManageEmployeesController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/controller/ManageEmployeesController.java
new file mode 100644
index 0000000..fa228de
--- /dev/null
+++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/controller/ManageEmployeesController.java
@@ -0,0 +1,120 @@
+package at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.controller;
+
+import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException;
+import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Employee;
+import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.service.EmployeeService;
+import at.ac.tuwien.sepm.assignment.groupphase.util.SpringFXMLLoader;
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.stream.Collectors;
+import javafx.fxml.FXML;
+import javafx.scene.layout.AnchorPane;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+
+@Controller
+public class ManageEmployeesController {
+
+ private static final Logger LOG = LoggerFactory.getLogger(ManageEmployeesController.class);
+ @FXML private AnchorPane listEmployeesAP;
+ @FXML private AnchorPane containerHeader;
+ @FXML private EmployeeListController employeeListController;
+
+ private final EmployeeService employeeService;
+ private final SpringFXMLLoader fxmlLoader;
+
+ private final CreateOperationController createOperationController;
+
+ public ManageEmployeesController(
+ EmployeeService employeeService,
+ SpringFXMLLoader fxmlLoader,
+ CreateOperationController createOperationController) {
+ this.employeeService = employeeService;
+ this.fxmlLoader = fxmlLoader;
+ this.createOperationController = createOperationController;
+ }
+
+ @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("IOException in openFilter().", e);
+ }
+ }
+
+ private void openAddEmployee() {
+ employeeListController.deselectAllEmployees();
+ openEmployee(null);
+ }
+
+ private void openEditEmployee(Employee employee) {
+ employeeListController.deselectAllEmployees();
+ employeeListController.selectEmployee(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("IOException in openEmployee(). ", e);
+ }
+ }
+
+ private void updateEmployeeList() {
+ updateEmployeeList("");
+ }
+
+ private void updateEmployeeList(String searchString) {
+
+ try {
+ employeeListController.setData(
+ employeeService
+ .list()
+ .stream()
+ .filter(
+ employee ->
+ searchString.trim().isEmpty()
+ || employee.name()
+ .toLowerCase()
+ .contains(searchString.toLowerCase()))
+ .collect(Collectors.toCollection(HashSet::new)),
+ this::openEditEmployee);
+
+ } catch (ServiceException e) {
+ LOG.error("ServiceException in updateEmployeeList(). ", e);
+ }
+ }
+
+ public void setVisible(boolean b) {
+ listEmployeesAP.setVisible(b);
+ }
+
+ public void backToMain() {
+ LOG.debug("Hyperlink \"Zurück\" clicked.");
+ this.setVisible(false);
+ createOperationController.setVisible(true);
+ }
+}