From d3b590998816276163520b9271a555cc17ad7953 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sun, 10 Dec 2017 13:26:15 +0100
Subject: [PATCH] Fixed #244 - NullPointerException on startup

---
 .../ui/controller/Controller.java             | 23 +++++++++-------
 .../LocalServerSettingsController.java        | 14 +++++-----
 .../OnlineServerSettingsController.java       | 27 ++++++++++++-------
 3 files changed, 40 insertions(+), 24 deletions(-)

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 70b3dc0f3..efa35e912 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
@@ -289,15 +289,6 @@ public class Controller extends BaseController
 		
 		buttonAbout.setStyle("-fx-background-color: transparent;");
 		buttonAbout.getStyleClass().add("button-hoverable");
-		
-		if(!settings.isComplete())
-		{			
-			Platform.runLater(() -> {
-				toggleAllTabsExceptSettings(true);
-				tabPane.getSelectionModel().select(tabSettings);
-				AlertGenerator.showAlert(AlertType.INFORMATION, Localization.getString(Strings.TITLE_INFO), "", Localization.getString(Strings.INFO_FIRST_START), icon, getStage(), null, false);
-			});
-		}
 	}
 	
 	public void loadSettingsTab()
@@ -324,6 +315,20 @@ public class Controller extends BaseController
 			});			
 		}
 	}
+	
+	public boolean checkSettings()
+	{
+		if(!settings.isComplete())
+		{			
+			Platform.runLater(() -> {
+				toggleAllTabsExceptSettings(true);
+				tabPane.getSelectionModel().select(tabSettings);
+				AlertGenerator.showAlert(AlertType.INFORMATION, Localization.getString(Strings.TITLE_INFO), "", Localization.getString(Strings.INFO_FIRST_START), icon, getStage(), null, false);
+			});
+			return false;
+		}
+		return true;
+	}
 
 	public Image getIcon()
 	{
diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/settings/LocalServerSettingsController.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/settings/LocalServerSettingsController.java
index 9e6bac839..edba3b99c 100644
--- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/settings/LocalServerSettingsController.java
+++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/settings/LocalServerSettingsController.java
@@ -106,7 +106,6 @@ public class LocalServerSettingsController extends SettingsController
 		hboxSettings.prefWidthProperty().bind(scrollPane.widthProperty().subtract(25));
 
 		refreshLabelsUpdate();
-		
 		prefill();
 		checkServerStatus();
 	}
@@ -277,20 +276,22 @@ public class LocalServerSettingsController extends SettingsController
 	@Override
 	public void save()
 	{
-		String clientSecret = textFieldClientSecret.getText().trim();
-		String currency = textFieldCurrency.getText().trim();
-
-		if(clientSecret == null || clientSecret.equals(""))
+		String clientSecret = textFieldClientSecret.getText();
+		String currency = textFieldCurrency.getText();
+		
+		if(clientSecret == null || clientSecret.trim().equals(""))
 		{
 			AlertGenerator.showAlert(AlertType.WARNING, Localization.getString(Strings.TITLE_WARNING), "", Localization.getString(Strings.WARNING_EMPTY_SECRET_CLIENT), controller.getIcon(), controller.getStage(), null, false);
 			return;
 		}
+		clientSecret = clientSecret.trim();
 
-		if(currency == null || currency.equals(""))
+		if(currency == null || currency.trim().equals(""))
 		{
 			AlertGenerator.showAlert(AlertType.WARNING, Localization.getString(Strings.TITLE_WARNING), "", Localization.getString(Strings.WARNING_EMPTY_CURRENCY), controller.getIcon(), controller.getStage(), null, false);
 			return;
 		}
+		currency = currency.trim();
 
 		if(controller.getSettings().isComplete())
 		{
@@ -324,6 +325,7 @@ public class LocalServerSettingsController extends SettingsController
 			controller.setSettings(settings);
 		}
 
+		controller.getSettings().setServerType(ServerType.LOCAL);
 		controller.getSettings().setSecret(HashUtils.hash("BudgetMaster", Helpers.SALT));
 		controller.getSettings().setUrl("https://localhost:9000");
 		ArrayList<String> trustedHosts = new ArrayList<>();
diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/settings/OnlineServerSettingsController.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/settings/OnlineServerSettingsController.java
index 723a0dd2d..44665753d 100644
--- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/settings/OnlineServerSettingsController.java
+++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/settings/OnlineServerSettingsController.java
@@ -105,7 +105,10 @@ public class OnlineServerSettingsController extends SettingsController
 		
 		refreshLabelsUpdate();
 		
-		controller.refresh(controller.getFilterSettings());
+		if(controller.checkSettings())
+		{
+			controller.refresh(controller.getFilterSettings());
+		}
 	}
 	
 	@Override
@@ -166,12 +169,12 @@ public class OnlineServerSettingsController extends SettingsController
 	@Override
 	public void save()
 	{
-		String clientSecret = textFieldClientSecret.getText().trim();
-		String url = textFieldURL.getText().trim();
-		String secret = textFieldSecret.getText().trim();
-		String currency = textFieldCurrency.getText().trim();
+		String clientSecret = textFieldClientSecret.getText();
+		String url = textFieldURL.getText();
+		String secret = textFieldSecret.getText();
+		String currency = textFieldCurrency.getText();
 		
-		if(clientSecret == null || clientSecret.equals(""))
+		if(clientSecret == null || clientSecret.trim().equals(""))
 		{
 			AlertGenerator.showAlert(AlertType.WARNING, 
 									Localization.getString(Strings.TITLE_WARNING), 
@@ -183,8 +186,9 @@ public class OnlineServerSettingsController extends SettingsController
 									false);
 			return;
 		}
+		clientSecret = clientSecret.trim();
 		
-		if(url == null || url.equals(""))
+		if(url == null || url.trim().equals(""))
 		{
 			AlertGenerator.showAlert(AlertType.WARNING, 
 									Localization.getString(Strings.TITLE_WARNING), 
@@ -196,8 +200,9 @@ public class OnlineServerSettingsController extends SettingsController
 									false);
 			return;
 		}
+		url = url.trim();
 
-		if(secret == null || secret.equals(""))
+		if(secret == null || secret.trim().equals(""))
 		{
 			AlertGenerator.showAlert(AlertType.WARNING, 
 									Localization.getString(Strings.TITLE_WARNING), 
@@ -209,8 +214,9 @@ public class OnlineServerSettingsController extends SettingsController
 									false);
 			return;
 		}
+		secret = secret.trim();
 
-		if(currency == null || currency.equals(""))
+		if(currency == null || currency.trim().equals(""))
 		{
 			AlertGenerator.showAlert(AlertType.WARNING, 
 									Localization.getString(Strings.TITLE_WARNING), 
@@ -222,6 +228,7 @@ public class OnlineServerSettingsController extends SettingsController
 									false);
 			return;
 		}
+		currency = currency.trim();
 
 		ArrayList<String> trustedHosts = new ArrayList<>();
 		String trustedHostText = textAreaTrustedHosts.getText();
@@ -253,6 +260,7 @@ public class OnlineServerSettingsController extends SettingsController
 			controller.getSettings().setTrustedHosts(trustedHosts);
 			controller.getSettings().setLanguage(comboBoxLanguage.getValue());
 			controller.getSettings().setAutoUpdateCheckEnabled(checkboxEnableAutoUpdate.isSelected());
+			controller.getSettings().setServerType(ServerType.ONLINE);
 		}
 		else
 		{
@@ -281,6 +289,7 @@ public class OnlineServerSettingsController extends SettingsController
 			settings.setTrustedHosts(trustedHosts);
 			settings.setLanguage(comboBoxLanguage.getValue());
 			settings.setAutoUpdateCheckEnabled(checkboxEnableAutoUpdate.isSelected());
+			settings.setServerType(ServerType.ONLINE);
 			controller.setSettings(settings);
 		}
 
-- 
GitLab