From bb6d004ab0f471758a72af1e85b2b230ca1003aa Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Wed, 6 Dec 2017 18:04:17 +0100 Subject: [PATCH] #235 - update warning for incompatible local server --- .../ui/controller/Controller.java | 43 ++++++++++++----- .../LocalServerSettingsController.java | 48 +++++++++++++++++-- .../budgetmaster/languages/_de.properties | 10 ++-- .../budgetmaster/languages/_en.properties | 4 +- .../LocalServerException.java | 2 +- .../{ => localserver}/LocalServerHandler.java | 17 ++++++- .../{ => localserver}/LocalServerStatus.java | 2 +- .../budgetmaster/logic/utils/Strings.java | 2 + 8 files changed, 103 insertions(+), 25 deletions(-) rename BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/{ => localserver}/LocalServerException.java (77%) rename BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/{ => localserver}/LocalServerHandler.java (86%) rename BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/{ => localserver}/LocalServerStatus.java (52%) diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/Controller.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/Controller.java index 1d3bef002..79a97e743 100644 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/Controller.java +++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/Controller.java @@ -399,6 +399,12 @@ public class Controller extends BaseController { new DatePickerController(getStage(), this, currentDate); } + + public void forceSettingsTab() + { + toggleAllTabsExceptSettings(true); + tabPane.getSelectionModel().select(tabSettings); + } public void showConnectionErrorAlert(String errorMessage) { @@ -799,18 +805,31 @@ public class Controller extends BaseController VersionInformation serverVersion = connection.getServerVersion(); if(serverVersion.getVersionCode() < Integer.parseInt(Localization.getString(Strings.VERSION_CODE))) { - Platform.runLater(()->{ - AlertGenerator.showAlert(AlertType.WARNING, - Localization.getString(Strings.TITLE_WARNING), - "", - Localization.getString(Strings.WARNING_SERVER_VERSION, serverVersion.getVersionName(), Localization.getString(Strings.VERSION_NAME)), - icon, getStage(), null, false); - - LoadingModal.closeModal(); - categoryHandler = new CategoryHandler(null); - toggleAllTabsExceptSettings(true); - tabPane.getSelectionModel().select(tabSettings); - }); + if(settings.getServerType().equals(ServerType.ONLINE)) + { + Platform.runLater(()->{ + AlertGenerator.showAlert(AlertType.WARNING, + Localization.getString(Strings.TITLE_WARNING), + "", + Localization.getString(Strings.WARNING_SERVER_VERSION, serverVersion.getVersionName(), Localization.getString(Strings.VERSION_NAME)), + icon, getStage(), null, false); + + LoadingModal.closeModal(); + categoryHandler = new CategoryHandler(null); + toggleAllTabsExceptSettings(true); + tabPane.getSelectionModel().select(tabSettings); + }); + } + else + { + Platform.runLater(()->{ + LoadingModal.closeModal(); + categoryHandler = new CategoryHandler(null); + toggleAllTabsExceptSettings(true); + tabPane.getSelectionModel().select(tabSettings); + ((LocalServerSettingsController)settingsController).handleIncompatibleServer(); + }); + } return; } } diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/LocalServerSettingsController.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/LocalServerSettingsController.java index e6cfa96db..9a4e7bdc7 100644 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/LocalServerSettingsController.java +++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/LocalServerSettingsController.java @@ -3,11 +3,11 @@ package de.deadlocker8.budgetmasterclient.ui.controller; import java.io.IOException; import java.util.ArrayList; -import de.deadlocker8.budgetmaster.logic.LocalServerException; -import de.deadlocker8.budgetmaster.logic.LocalServerHandler; -import de.deadlocker8.budgetmaster.logic.LocalServerStatus; import de.deadlocker8.budgetmaster.logic.ServerType; import de.deadlocker8.budgetmaster.logic.Settings; +import de.deadlocker8.budgetmaster.logic.localserver.LocalServerException; +import de.deadlocker8.budgetmaster.logic.localserver.LocalServerHandler; +import de.deadlocker8.budgetmaster.logic.localserver.LocalServerStatus; import de.deadlocker8.budgetmaster.logic.updater.Updater; import de.deadlocker8.budgetmaster.logic.utils.Colors; import de.deadlocker8.budgetmaster.logic.utils.FileHelper; @@ -197,7 +197,7 @@ public class LocalServerSettingsController extends SettingsController Platform.runLater(()->{ LoadingModal.closeModal(); AlertGenerator.showAlert(AlertType.ERROR, Localization.getString(Strings.TITLE_ERROR), "", Localization.getString(Strings.ERROR_LOCAL_SERVER_START, e.getMessage()), controller.getIcon(), controller.getStage(), null, false); - controller.refresh(controller.getFilterSettings()); + controller.forceSettingsTab(); }); return; } @@ -227,6 +227,7 @@ public class LocalServerSettingsController extends SettingsController }); break; case MISSING: + controller.forceSettingsTab(); labelLocalServerStatus.setText(Localization.getString(Strings.LOCAL_SERVER_STATUS_NOT_PRESENT)); buttonLocalServerAction.setText(Localization.getString(Strings.LOCAL_SERVER_ACTION_NOT_PRESENT)); buttonLocalServerAction.setVisible(true); @@ -258,6 +259,8 @@ public class LocalServerSettingsController extends SettingsController }); }); break; + default: + break; } } @@ -341,6 +344,43 @@ public class LocalServerSettingsController extends SettingsController restartHandler.handleRestart(previousLanguage); refreshLabelsUpdate(); } + + public void handleIncompatibleServer() + { + labelLocalServerStatus.setText(Localization.getString(Strings.LOCAL_SERVER_STATUS_INCOMPATIBLE)); + buttonLocalServerAction.setText(Localization.getString(Strings.LOCAL_SERVER_ACTION_INCOMPATIBLE)); + buttonLocalServerAction.setVisible(true); + buttonLocalServerAction.setDisable(false); + + buttonLocalServerAction.setOnAction((event) -> { + buttonLocalServerAction.setDisable(true); + LoadingModal.showModal(Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_DOWNLOAD_LOCAL_SERVER), controller.getStage(), controller.getIcon()); + + Worker.runLater(() -> { + try + { + LocalServerHandler serverHandler = new LocalServerHandler(); + serverHandler.shutdownServer(); + Thread.sleep(3000); + serverHandler.downloadServer(Localization.getString(Strings.VERSION_NAME)); + serverHandler.createServerSettingsIfNotExists(); + Platform.runLater(()->{ + checkServerStatus(); + LoadingModal.closeModal(); + }); + } + catch(Exception e) + { + Logger.error(e); + Platform.runLater(()->{ + LoadingModal.closeModal(); + AlertGenerator.showAlert(AlertType.ERROR, Localization.getString(Strings.TITLE_ERROR), "", Localization.getString(Strings.ERROR_LOCAL_SERVER_DOWNLOAD, e.getMessage()), controller.getIcon(), controller.getStage(), null, false); + buttonLocalServerAction.setDisable(false); + }); + } + }); + }); + } @Override public void applyStyle() diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_de.properties b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_de.properties index 11f0afcdd..6e99f11ac 100644 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_de.properties +++ b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_de.properties @@ -1,6 +1,6 @@ # DEFAULT app.name=BudgetMaster -version.code=13 +version.code=14 version.name=1.8.0_alpha version.date=07.11.17 author=Robert Goldmann @@ -47,8 +47,8 @@ load.database.import=Die Datenbank wird importiert, bitte warten... load.database.delete=Die Datenbank wird gel�scht, bitte warten... load.update=Update wird heruntergeladen, bitte warten... load.search=Buchungen werden gesucht, bitte warten... -load.local.server=Der lokale Server wird gestartet, bitte warten... -load.download.local.server=Der lokale Server wird heruntergeladen, bitte warten... +load.local.server=Starte lokalen Server, bitte warten... +load.download.local.server=Lade lokalen Server herunter, bitte warten... load.local.server.connect=Verbinde mit lokalem Server, bitte warten... load.local.server.retry=Verbinde mit lokalem Server... (Versuch {0}/{1}) @@ -76,6 +76,8 @@ local.server.status.not.started=Server konnte nicht gestartet werden. local.server.action.not.started=Starten local.server.status.not.present=Server nicht gefunden. local.server.action.not.present=Herunterladen +local.server.status.incompatible=Server nicht kompatibel. +local.server.action.incompatible=Aktualisieren # REPORT report.position=Nr. @@ -164,7 +166,7 @@ info.text.update.available.show.changes.detailed=(detaillierte Infos auf GitHub. info.text.update.available.now=Jetzt updaten info.title.start.after.update=Update erfolgreich info.header.text.start.after.update=BudgetMaster wurde erfolgreich auf Version {0} aktualisiert -info.text.start.after.update=Hinweis: Der BudgetMasterServer muss manuell von dir geupdated werden! +info.text.start.after.update=Hinweis: Der BudgetMasterServer muss manuell von dir geupdated werden, sofern es sich um keinen lokalen Server handelt! info.tags=Es erscheinen Vorschl�ge basierend auf bereits verwendeten Tags sobald du zu tippen beginnst.\n\nEnter - F�gt den Inhalt des Eingabefelds als neuen Tag hinzu.\nPfeil nach unten - �ffnet die Vorschl�ge, wenn das Eingabefeld leer ist. # WARNING diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_en.properties b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_en.properties index 188ddef05..40341ea54 100644 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_en.properties +++ b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_en.properties @@ -76,6 +76,8 @@ local.server.status.not.started=Server couldn't be started. local.server.action.not.started=Start local.server.status.not.present=Server not found. local.server.action.not.present=Download +local.server.status.incompatible=Server is incompatible. +local.server.action.incompatible=Update # REPORT report.position=No. @@ -164,7 +166,7 @@ info.text.update.available.show.changes.detailed=(detailed information on GitHub info.text.update.available.now=Update Now info.title.start.after.update=Update successfull info.header.text.start.after.update=Successfully updated BudgetMaster to version {0} -info.text.start.after.update=Note: You have to update the BudgetMasterServer manually! +info.text.start.after.update=Note: You have to update the BudgetMasterServer manually, if it's no local server! info.tags=Suggestions based on already used tags will show up once you start typing.\n\nEnter - Appends the current input field content as a new tag.\nArrow Down - Opens the suggestions if the input field is empty. # WARNING diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/LocalServerException.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/localserver/LocalServerException.java similarity index 77% rename from BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/LocalServerException.java rename to BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/localserver/LocalServerException.java index d1f8712c6..13c3778cb 100644 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/LocalServerException.java +++ b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/localserver/LocalServerException.java @@ -1,4 +1,4 @@ -package de.deadlocker8.budgetmaster.logic; +package de.deadlocker8.budgetmaster.logic.localserver; public class LocalServerException extends Exception { diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/LocalServerHandler.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/localserver/LocalServerHandler.java similarity index 86% rename from BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/LocalServerHandler.java rename to BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/localserver/LocalServerHandler.java index ae0c767ed..3e438320b 100644 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/LocalServerHandler.java +++ b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/localserver/LocalServerHandler.java @@ -1,4 +1,4 @@ -package de.deadlocker8.budgetmaster.logic; +package de.deadlocker8.budgetmaster.logic.localserver; import java.io.File; import java.io.FileNotFoundException; @@ -12,6 +12,7 @@ import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import java.util.ArrayList; +import de.deadlocker8.budgetmaster.logic.Settings; import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection; import de.deadlocker8.budgetmaster.logic.utils.Helpers; import de.deadlocker8.budgetmaster.logic.utils.Strings; @@ -57,6 +58,18 @@ public class LocalServerHandler } } + public void shutdownServer() throws Exception + { + Settings settings = new Settings(); + settings.setUrl("https://localhost:9000"); + settings.setSecret(HashUtils.hash("BudgetMaster", Helpers.SALT)); + ArrayList<String> trustedHosts = new ArrayList<>(); + trustedHosts.add("localhost"); + settings.setTrustedHosts(trustedHosts); + ServerConnection connection = new ServerConnection(settings); + connection.shutdownServer(); + } + public void createServerSettingsIfNotExists() throws FileNotFoundException { File settingsFile = new File(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER) + "/localServer/settings.json"); @@ -88,7 +101,7 @@ public class LocalServerHandler //download into temp directory and file Path target = Paths.get(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER) + "/localServer/BudgetMasterServer.jar"); - download(BUILD_FOLDER.replace("{}", "v" + versionName) + "BudgetMasterServer.jar", target); + download(BUILD_FOLDER.replace("{}", "v" + "1.7.0") + "BudgetMasterServer.jar", target); Logger.debug("Successfully downloaded BudgetMasterServer " + versionName); } diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/LocalServerStatus.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/localserver/LocalServerStatus.java similarity index 52% rename from BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/LocalServerStatus.java rename to BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/localserver/LocalServerStatus.java index ec5084a23..7f36dcd26 100644 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/LocalServerStatus.java +++ b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/localserver/LocalServerStatus.java @@ -1,4 +1,4 @@ -package de.deadlocker8.budgetmaster.logic; +package de.deadlocker8.budgetmaster.logic.localserver; public enum LocalServerStatus { diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/Strings.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/Strings.java index 706a31d75..3ff6304af 100644 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/Strings.java +++ b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/Strings.java @@ -80,6 +80,8 @@ public class Strings public static final String LOCAL_SERVER_ACTION_NOT_STARTED = "local.server.action.not.started"; public static final String LOCAL_SERVER_STATUS_NOT_PRESENT = "local.server.status.not.present"; public static final String LOCAL_SERVER_ACTION_NOT_PRESENT = "local.server.action.not.present"; + public static final String LOCAL_SERVER_STATUS_INCOMPATIBLE = "local.server.status.incompatible"; + public static final String LOCAL_SERVER_ACTION_INCOMPATIBLE = "local.server.action.incompatible"; //REPORT public static final String REPORT_POSITION = "report.position"; -- GitLab