aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateCarController.java117
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;
+ }
}