From 99bc7b95780ee8394da295e66ece26464ed57c8c Mon Sep 17 00:00:00 2001 From: Dominic Rogetzer Date: Fri, 18 May 2018 20:58:07 +0200 Subject: Modify CreateNewEmployeeController to be able to edit employee [#25950] --- .../controller/CreateNewEmployeeController.java | 58 +++++++++++++++++++--- src/main/resources/fxml/createNewEmployee.fxml | 5 +- 2 files changed, 54 insertions(+), 9 deletions(-) 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 index d81f6d7..86a1014 100644 --- 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 @@ -5,19 +5,23 @@ import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee.Ed 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.Hyperlink; +import javafx.scene.control.Label; import javafx.scene.control.TextField; import javafx.stage.Stage; import org.slf4j.Logger; @@ -30,12 +34,16 @@ 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 Hyperlink btnCancel; - @FXML private Button btnCreate; @FXML private TextField inputName; @FXML private ChoiceBox inputQualification; + @FXML private Button btnCreate; + + private Node rootElement; + private Employee employee; + private boolean isEdit; public CreateNewEmployeeController(EmployeeService employeeService) { this.employeeService = employeeService; @@ -66,8 +74,8 @@ public class CreateNewEmployeeController { @FXML public void onCreateClicked() { - Employee employee = - Employee.builder() + employee = + employee.toBuilder() .name(inputName.getText()) .educationLevel(parseEducationLevel()) .birthday(LocalDate.MIN) // TODO: change UI to include birthday field @@ -76,7 +84,11 @@ public class CreateNewEmployeeController { .build(); try { - employeeService.add(employee); + if (isEdit) { + employeeService.update(employee); + } else { + employeeService.add(employee); + } } catch (InvalidEmployeeException e) { LOG.error("Invalid Employee: {}", e); @@ -114,4 +126,38 @@ public class CreateNewEmployeeController { } 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 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; + } } diff --git a/src/main/resources/fxml/createNewEmployee.fxml b/src/main/resources/fxml/createNewEmployee.fxml index 5fa1ca9..4848c09 100644 --- a/src/main/resources/fxml/createNewEmployee.fxml +++ b/src/main/resources/fxml/createNewEmployee.fxml @@ -8,10 +8,9 @@ - - + -