diff options
-rw-r--r-- | src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateCarController.java | 117 |
1 files changed, 97 insertions, 20 deletions
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 index b6693d0..628f680 100644 --- 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 @@ -8,17 +8,23 @@ import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.Vehicle 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.List; 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.control.Label; +import javafx.scene.layout.FlowPane; import javafx.stage.Stage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -30,10 +36,14 @@ 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; @@ -62,6 +72,7 @@ public class CreateCarController { .map(Enum::toString) .collect(Collectors.toList()))); cmb_typ.setValue(VehicleType.BKTW.toString()); + vehicleListFP(); } @FXML @@ -71,27 +82,56 @@ public class CreateCarController { @FXML public void createCar(ActionEvent actionEvent) { - Vehicle vehicle = - Vehicle.builder() - .constructionType(parseConstructionType()) - .type(parseType()) - .name("") - .status(Status.ABGEMELDET) - .hasNef(cbx_NEF.isSelected()) - .build(); - try { - vehicleService.add(vehicle); - } catch (InvalidVehicleException e) { - LOG.error("Invalid Vehicle: {}", e); - createComplete(AlertType.ERROR, "Ungültige Eingabe", e.getMessage()); - return; - } catch (ServiceException e) { - LOG.error("Exception: {}", e); - createComplete(AlertType.ERROR, "Fehler", e.getMessage()); - return; + + + if (!update) { + Vehicle vehicle = + Vehicle.builder() + .constructionType(parseConstructionType()) + .type(parseType()) + .name("") + .status(Status.ABGEMELDET) + .hasNef(cbx_NEF.isSelected()) + .build(); + try { + vehicleService.add(vehicle); + } catch (InvalidVehicleException e) { + LOG.error("Invalid Vehicle: {}", e); + createComplete(AlertType.ERROR, "Ungültige Eingabe", e.getMessage()); + return; + } catch (ServiceException e) { + LOG.error("Exception: {}", e); + createComplete(AlertType.ERROR, "Fehler", e.getMessage()); + 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()); + return; + } catch (ServiceException e) { + LOG.error("Exception: {}", e); + createComplete(AlertType.ERROR, "Fehler", e.getMessage()); + return; + } } - createComplete( - AlertType.CONFIRMATION, "Speichern Erfolgreich", "Auto wurde erfolgreich angelegt"); + vehicleListFP(); } private ConstructionType parseConstructionType() { @@ -113,4 +153,41 @@ public class CreateCarController { alert.setHeaderText(headerText); alert.showAndWait(); } + + private void vehicleListFP() { + List<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; + } } |