diff options
Diffstat (limited to 'src/main/java/at/ac/tuwien/sepm')
| -rw-r--r-- | src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/uiController/CreateCarController.java | 108 | 
1 files changed, 108 insertions, 0 deletions
diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/uiController/CreateCarController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/uiController/CreateCarController.java new file mode 100644 index 0000000..dcf6ff7 --- /dev/null +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/uiController/CreateCarController.java @@ -0,0 +1,108 @@ +package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.uiController; + + +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.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.stream.Collectors; +import java.util.stream.Stream; +import javafx.collections.FXCollections; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +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.stage.Stage; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Controller; + +@Controller +public class CreateCarController { + +    @FXML private ChoiceBox cmb_Ctyp; +    @FXML private ChoiceBox cmb_typ; +    @FXML private Button btn_cancel; +    @FXML private CheckBox cbx_NEF; + +    private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); +    private final VehicleService vehicleService; + +    public CreateCarController(VehicleService vehicleService) { +        this.vehicleService = vehicleService; +    } +    @FXML +    public 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()); +    } + +    @FXML +    public void onCancelClicked() { +        ((Stage) btn_cancel.getScene().getWindow()).close(); +    } +    @FXML +    public void createCar(ActionEvent actionEvent) { +        Vehicle vehicle = +                Vehicle.builder() +                .constructionType(parseConstructionType()) +                .type(parseType()) +                .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,"Ungültige Eingabe",e.getMessage()); +            return; +        } +        createComplete(AlertType.CONFIRMATION,"Speichern Erfolgreich","Auto wurde erfolgreich angelegt"); +    } +    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(); +    } +}  | 
