diff --git a/client/app/src/main/java/main/CreateEventController.java b/client/app/src/main/java/main/CreateEventController.java
index 14d52d3..e35e339 100644
--- a/client/app/src/main/java/main/CreateEventController.java
+++ b/client/app/src/main/java/main/CreateEventController.java
@@ -3,10 +3,7 @@ package main;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.Node;
-import javafx.scene.control.CheckBox;
-import javafx.scene.control.ComboBox;
-import javafx.scene.control.DatePicker;
-import javafx.scene.control.TextField;
+import javafx.scene.control.*;
import javafx.stage.Stage;
import res.DataController;
import res.Event;
@@ -29,39 +26,51 @@ public class CreateEventController {
public CheckBox checkBoxIsFullDay;
@FXML
public CheckBox checkBoxIsPrivate;
-
-
- public CreateEventController(){}
-
@FXML
- public void initialize(){}
+ public Label labelError;
- @FXML
- protected void createBtnClick(ActionEvent actionEvent){
- Event event = new Event(
- textName.getText(),
- ComboBoxPriotity.getSelectionModel().getSelectedIndex(),
- checkBoxIsFullDay.isSelected(),
- checkBoxIsPrivate.isSelected(),
- textStart.getText(),
- textEnd.getText(),
- datePickerDate.getValue().atStartOfDay(),
- 1
- );
-
- System.out.println(event.getAsUrlParam());
-
- DataController dataController = new DataController();
- dataController.createEvent(event);
-
- Stage stage = (Stage) ((Node) actionEvent.getSource()).getScene().getWindow();
- stage.close();
+ public CreateEventController() {
}
@FXML
- protected void abortBtnClick(ActionEvent event){
+ public void initialize() {
+ }
+
+
+ @FXML
+ protected void createBtnClick(ActionEvent actionEvent) {
+ try {
+ if(datePickerDate.getValue() == null){
+ throw new IllegalArgumentException("Bitte w\u00e4hle ein Datum aus");
+ }
+
+ Event event = new Event(
+ textName.getText(),
+ ComboBoxPriotity.getSelectionModel().getSelectedIndex(),
+ checkBoxIsFullDay.isSelected(),
+ checkBoxIsPrivate.isSelected(),
+ textStart.getText(),
+ textEnd.getText(),
+ datePickerDate.getValue().atStartOfDay(),
+ 1
+ );
+
+ System.out.println(event.getAsUrlParam());
+
+ DataController dataController = new DataController();
+ dataController.createEvent(event);
+
+ Stage stage = (Stage) ((Node) actionEvent.getSource()).getScene().getWindow();
+ stage.close();
+ } catch (RuntimeException e) {
+ labelError.setText(e.getMessage());
+ }
+ }
+
+ @FXML
+ protected void abortBtnClick(ActionEvent event) {
Stage stage = (Stage) ((Node) event.getSource()).getScene().getWindow();
stage.close();
}
diff --git a/client/app/src/main/java/main/MainController.java b/client/app/src/main/java/main/MainController.java
index 36f3aed..984b955 100644
--- a/client/app/src/main/java/main/MainController.java
+++ b/client/app/src/main/java/main/MainController.java
@@ -69,7 +69,7 @@ public class MainController {
protected void onAddBtnClick() {
try {
FXMLLoader fxmlLoader = new FXMLLoader(MainApplication.class.getResource("create-event.fxml"));
- Scene scene = new Scene(fxmlLoader.load(), 650, 500);
+ Scene scene = new Scene(fxmlLoader.load(), 650, 650);
scene.getStylesheets().add(Objects.requireNonNull(MainApplication.class.getResource("create-event.css")).toExternalForm());
Stage stage = new Stage();
stage.setTitle("Termin erstellen");
diff --git a/client/app/src/main/resources/main/create-event.css b/client/app/src/main/resources/main/create-event.css
index 59602e9..442c669 100644
--- a/client/app/src/main/resources/main/create-event.css
+++ b/client/app/src/main/resources/main/create-event.css
@@ -32,4 +32,15 @@ Label{
.mainButton{
-fx-font-weight: bold;
+}
+
+#labelError{
+ -fx-font-weight: bold;
+ -fx-max-width: 1000px;
+ -fx-text-fill: #ff5555;
+ -fx-padding: 16px;
+ -fx-min-height: 140px;
+ -fx-max-height: 400px;
+ -fx-wrap-text: true;
+ -fx-font-size: 16px;
}
\ No newline at end of file
diff --git a/client/app/src/main/resources/main/create-event.fxml b/client/app/src/main/resources/main/create-event.fxml
index 2ca5917..b3600c8 100644
--- a/client/app/src/main/resources/main/create-event.fxml
+++ b/client/app/src/main/resources/main/create-event.fxml
@@ -22,6 +22,7 @@
+
@@ -51,8 +52,9 @@
+
-
+
diff --git a/client/data/src/main/java/res/DataController.java b/client/data/src/main/java/res/DataController.java
index ddc826d..84e5cad 100644
--- a/client/data/src/main/java/res/DataController.java
+++ b/client/data/src/main/java/res/DataController.java
@@ -29,7 +29,7 @@ public class DataController {
try {
System.out.println(httpRequest.sendPostRequest(ADD_EVENT_ENDPOINT, event.getAsUrlParam()));
} catch (Exception e) {
- e.printStackTrace();
+ throw new RuntimeException("Es konnte keine Verbindung mit dem Server hergestellt werden.");
}
}
diff --git a/client/data/src/main/java/res/Event.java b/client/data/src/main/java/res/Event.java
index 33ee93f..be598c2 100644
--- a/client/data/src/main/java/res/Event.java
+++ b/client/data/src/main/java/res/Event.java
@@ -2,9 +2,14 @@ package res;
import com.sun.jdi.event.StepEvent;
+import java.time.Duration;
+import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
public class Event {
@@ -61,7 +66,23 @@ public class Event {
String end,
LocalDateTime date,
int ownerId
- ) {
+ ) throws IllegalArgumentException{
+ if(name.length() < 3){
+ throw new IllegalArgumentException("Der Name muss eine L\u00e4nge von 3 haben.");
+ }
+ Pattern pattern = Pattern.compile("[A-Za-zÄÖÜäöü0-9 =!?+*/$%€.:,;_<>()-]*");
+ Matcher matcher = pattern.matcher(name);
+ if(!matcher.matches()){
+ throw new IllegalArgumentException("Der Name Darf nur aus Zahlen, Buchstaben und folgenden Sonderzeichen bestehen: =!?+*/$%€.:,;_ <>()-");
+ }
+ if(priority < 0){
+ throw new IllegalArgumentException("Bitte eine Priorit\u00e4t w\u00e4hlen.");
+ }
+ LocalDateTime today = LocalDateTime.now().toLocalDate().atStartOfDay();
+ if(Duration.between(today, date).isNegative()){
+ throw new IllegalArgumentException("Das Datum muss in der Zukunft liegen.");
+ }
+
this.name = name;
this.priority = priority;
this.isFullDay = isFullDay;