From dd593d5c9cd0caa998feb0df67dcd2343a90939f Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sat, 30 Jan 2021 18:50:51 +0100
Subject: [PATCH] #562 - check connection: show error cause if available

---
 .../de/deadlocker8/budgetmaster/backup/GitHelper.java |  7 ++++---
 .../budgetmaster/settings/SettingsController.java     | 11 +++++++++--
 src/main/resources/languages/base_de.properties       |  2 +-
 src/main/resources/languages/base_en.properties       |  2 +-
 4 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/src/main/java/de/deadlocker8/budgetmaster/backup/GitHelper.java b/src/main/java/de/deadlocker8/budgetmaster/backup/GitHelper.java
index 9e0291afc..bf4d2dbf5 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/backup/GitHelper.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/backup/GitHelper.java
@@ -14,6 +14,7 @@ import java.io.IOException;
 import java.net.URISyntaxException;
 import java.nio.file.Files;
 import java.nio.file.Path;
+import java.util.Optional;
 import java.util.Set;
 
 public class GitHelper
@@ -87,7 +88,7 @@ public class GitHelper
 		pushCommand.call();
 	}
 
-	public static boolean checkConnection(String uri, CredentialsProvider credentialsProvider)
+	public static Optional<String> checkConnection(String uri, CredentialsProvider credentialsProvider)
 	{
 		try
 		{
@@ -97,10 +98,10 @@ public class GitHelper
 		catch(GitAPIException | IOException e)
 		{
 			e.printStackTrace();
-			return false;
+			return Optional.of(e.getMessage());
 		}
 
-		return true;
+		return Optional.empty();
 	}
 
 	public static boolean isFileModified(Git git, String fileName) throws GitAPIException
diff --git a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java
index fbfa192d6..ccfa4d3ee 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java
@@ -355,9 +355,16 @@ public class SettingsController extends BaseController
 		}
 
 		final CredentialsProvider credentialsProvider = new UsernamePasswordCredentialsProvider(autoBackupGitUserName, autoBackupGitToken);
-		final boolean isValidConnection = GitHelper.checkConnection(autoBackupGitUrl, credentialsProvider);
+		final Optional<String> checkConnectionOptional = GitHelper.checkConnection(autoBackupGitUrl, credentialsProvider);
+		final boolean isValidConnection = checkConnectionOptional.isEmpty();
+		String errorText = "";
+		if(checkConnectionOptional.isPresent())
+		{
+			errorText = checkConnectionOptional.get();
+		}
+
 
-		String localizedMessage = Localization.getString("settings.backup.auto.git.test.fail");
+		String localizedMessage = Localization.getString("settings.backup.auto.git.test.fail", errorText);
 		if(isValidConnection)
 		{
 			localizedMessage = Localization.getString("settings.backup.auto.git.test.success");
diff --git a/src/main/resources/languages/base_de.properties b/src/main/resources/languages/base_de.properties
index 45ce4ce36..3f2651f2f 100644
--- a/src/main/resources/languages/base_de.properties
+++ b/src/main/resources/languages/base_de.properties
@@ -224,7 +224,7 @@ settings.backup.auto.git.user.name=Git Nutzername
 settings.backup.auto.git.token=Git Zugriffstoken
 settings.backup.auto.git.test=Verbindung testen
 settings.backup.auto.git.test.success=Verbindung erfolgreich!
-settings.backup.auto.git.test.fail=Verbindung fehlgeschlagen!
+settings.backup.auto.git.test.fail=Verbindung fehlgeschlagen!\n{0}
 
 settings.database.import=Importieren
 settings.database.export=Exportieren
diff --git a/src/main/resources/languages/base_en.properties b/src/main/resources/languages/base_en.properties
index 2d0802748..d5e7145c0 100644
--- a/src/main/resources/languages/base_en.properties
+++ b/src/main/resources/languages/base_en.properties
@@ -224,7 +224,7 @@ settings.backup.auto.git.user.name=Git user name
 settings.backup.auto.git.token=Git access token
 settings.backup.auto.git.test=Test connection
 settings.backup.auto.git.test.success=Connection successful!
-settings.backup.auto.git.test.fail=Connection failed!
+settings.backup.auto.git.test.fail=Connection failed!\n{0}
 
 settings.database.import=Import
 settings.database.export=Export
-- 
GitLab