From 2265014db342b2cc42aaf5b0dbba77122008cff9 Mon Sep 17 00:00:00 2001 From: Georg-Notebook Date: Tue, 13 Apr 2021 14:52:36 +0200 Subject: [PATCH] Edit Tour/Log Bugfixes --- src/tourplaner/ui/AlertHelper.java | 21 +++++--- src/tourplaner/viewmodels/ViewModel.java | 66 +++++++++++++++++------- 2 files changed, 60 insertions(+), 27 deletions(-) diff --git a/src/tourplaner/ui/AlertHelper.java b/src/tourplaner/ui/AlertHelper.java index 564e7ab..329289b 100644 --- a/src/tourplaner/ui/AlertHelper.java +++ b/src/tourplaner/ui/AlertHelper.java @@ -116,16 +116,21 @@ public class AlertHelper { * @return Null bei keiner eingabe */ public static String inputText(String title, String header, String msg, String content) { - String returnStr = ""; - while (returnStr.isEmpty()) { + String returnStr = null; + while (returnStr == null) { Optional result = inputHelper(title, header, msg, content); + AtomicReference returnText = new AtomicReference<>(""); - result.ifPresent(returnText::set); - returnStr = returnText.get(); - if (returnStr.isEmpty()) { - AlertHelper.warn(ConfigHelper.getLangIniString("tournametitle"), - ConfigHelper.getLangIniString("achtung"), - ConfigHelper.getLangIniString("keintextimfeld")); + if(result.isPresent()) { + result.ifPresent(returnText::set); + returnStr = returnText.get(); + if (returnStr.isEmpty()) { + AlertHelper.warn(ConfigHelper.getLangIniString("tournametitle"), + ConfigHelper.getLangIniString("achtung"), + ConfigHelper.getLangIniString("keintextimfeld")); + } + }else{ + return ""; } } return returnStr; diff --git a/src/tourplaner/viewmodels/ViewModel.java b/src/tourplaner/viewmodels/ViewModel.java index be4859b..46b84ba 100644 --- a/src/tourplaner/viewmodels/ViewModel.java +++ b/src/tourplaner/viewmodels/ViewModel.java @@ -31,6 +31,7 @@ public class ViewModel { /** * Bearbeitet eine bereits bestehende Tour + * prüft ob eine tour ausgewählt ist */ public void editTour(){ if (this.selectedTour == null){ @@ -47,35 +48,49 @@ public class ViewModel { } }); if(aktIndex.intValue() != -1){ - Tour tourToEdit = this.tourData.get(aktIndex.intValue()); - this.tourData.removeIf(tour -> tour.getName().equals(this.selectedTour.getName())); - this.tourNamen.removeIf(tour -> tour.equals(this.selectedTour.getName())); - System.out.println(tourToEdit.getLogs()); - tourNameInput(this.selectedTour.getName()); - tourToEdit.setName(this.neueTourName); - tourStartInput(this.selectedTour.getStart()); - tourToEdit.setStart(this.neueTourStart); - tourZielInput(this.selectedTour.getZiel()); - tourToEdit.setZiel(this.neueTourZiel); - System.out.println(tourToEdit.getName()); - this.tourData.add(new Tour(this.neueTourName, "TBD", "TBD", 0, this.neueTourStart, this.neueTourZiel)); - this.tourNamen.add(this.neueTourName); -// this.tourData.add(tourToEdit); + if(tourNameInputDuplicatCheck(this.selectedTour.getName(), false)) { + if (tourStartInput(this.selectedTour.getStart())) { + if (tourZielInput(this.selectedTour.getZiel())) { + + this.tourData.removeIf(tour -> tour.getName().equals(this.selectedTour.getName())); + this.tourNamen.removeIf(tour -> tour.equals(this.selectedTour.getName())); + this.tourData.add(new Tour(this.neueTourName, "TBD", "TBD", 0, this.neueTourStart, this.neueTourZiel)); + this.tourNamen.add(this.neueTourName); + } + } + } + this.neueTourName = null; + this.neueTourStart = null; + this.neueTourZiel = null; } } } + /** + * Input mit duplications check des Namens und ohne content im input feld + */ + private void tourNameInput(){ + tourNameInputDuplicatCheck("", true); + } + /** * Input des Tour Namen wird so lange durchgeführt, bis er korrekt ist. Das heißt: * er darf nicht schon vorhanden sein und er darf nicht Null sein + * @param checkDuplicate Prüft ob name bereits vorhanden ist + * @param content inhalt des Input fields + * @return false beim schließen des input dialogs */ - private void tourNameInput(String content){ + private boolean tourNameInputDuplicatCheck(String content, boolean checkDuplicate){ while(this.neueTourName == null) { this.neueTourName = AlertHelper.inputText(ConfigHelper.getLangIniString("tournametitle"), ConfigHelper.getLangIniString("tournameheader"), ConfigHelper.getLangIniString("tournamemsg"), content); - if (getTour(this.neueTourName) != null) { + System.out.println(this.neueTourName); + if(this.neueTourName.isEmpty()){ + return false; + } + if (getTour(this.neueTourName) != null && checkDuplicate) { AlertHelper.warn(ConfigHelper.getLangIniString("achtung"), ConfigHelper.getLangIniString("namevergebenheader"), ConfigHelper.getLangIniString("namevergebenmsg1") @@ -84,30 +99,43 @@ public class ViewModel { this.neueTourName = null; } } + return true; } /** * Input der Startpunkt der Tour * Wird erst beendet wenn die eingabe erfolgreich war + * @param content inhalt des Input fields + * @return false beim schließen des input dialogs */ - private void tourStartInput(String content){ + private boolean tourStartInput(String content){ while(this.neueTourStart == null){ this.neueTourStart = AlertHelper.inputText(ConfigHelper.getLangIniString("startpunkttitle"), ConfigHelper.getLangIniString("startpunktheader"), ConfigHelper.getLangIniString("startpunktmsg"), content); + if(this.neueTourStart.isEmpty()){ + return false; + } } + return true; } /** * Input des Zielpunktes der Tour * Wird erst beendet wenn die eingabe erfolgreich war + * @param content inhalt des Input fields + * @return false beim schließen des input dialogs */ - private void tourZielInput(String content){ + private boolean tourZielInput(String content){ while(this.neueTourZiel == null){ this.neueTourZiel = AlertHelper.inputText(ConfigHelper.getLangIniString("zielpunkttitle"), ConfigHelper.getLangIniString("zielpunktheader"), ConfigHelper.getLangIniString("zielpunktmsg"), content); + if(this.neueTourZiel.isEmpty()){ + return false; + } } + return false; } @@ -115,7 +143,7 @@ public class ViewModel { * Fügt eine neue Tour hinzu */ public void addTour(){ - tourNameInput(""); + tourNameInput(); tourStartInput(""); tourZielInput(""); if (getTour(this.neueTourName) == null) {