From b572beb151db60620ab13305c6c9dda78aaf2ae5 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sat, 30 Jan 2021 15:36:00 +0100 Subject: [PATCH] #562 - extended backup state by a third state "unknown": - shown if no backup has run before - adapt localization --- .../budgetmaster/backup/BackupService.java | 8 ++++---- .../budgetmaster/backup/BackupStatus.java | 8 ++++++++ .../budgetmaster/backup/BackupTask.java | 12 ++++++------ .../budgetmaster/backup/GitBackupTask.java | 2 +- .../budgetmaster/backup/LocalBackupTask.java | 1 + .../budgetmaster/backup/LocalGitBackupTask.java | 4 ++-- .../budgetmaster/backup/RemoteGitBackupTask.java | 4 ++-- .../budgetmaster/settings/SettingsController.java | 2 +- src/main/resources/languages/base_de.properties | 9 +++++---- src/main/resources/languages/base_en.properties | 9 +++++---- .../templates/settings/settingsMacros.ftl | 15 +++++++++------ 11 files changed, 44 insertions(+), 30 deletions(-) create mode 100644 src/main/java/de/deadlocker8/budgetmaster/backup/BackupStatus.java diff --git a/src/main/java/de/deadlocker8/budgetmaster/backup/BackupService.java b/src/main/java/de/deadlocker8/budgetmaster/backup/BackupService.java index 6531bdcfc..263abe222 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/backup/BackupService.java +++ b/src/main/java/de/deadlocker8/budgetmaster/backup/BackupService.java @@ -95,19 +95,19 @@ public class BackupService return Optional.empty(); } - public boolean hasErrors() + public BackupStatus getBackupStatus() { final Settings settings = settingsService.getSettings(); if(settings.isAutoBackupActive()) { if(backupTask == null) { - return false; + return BackupStatus.UNKNOWN; } - return backupTask.hasErrors(); + return backupTask.getBackupStatus(); } - return false; + return BackupStatus.UNKNOWN; } } \ No newline at end of file diff --git a/src/main/java/de/deadlocker8/budgetmaster/backup/BackupStatus.java b/src/main/java/de/deadlocker8/budgetmaster/backup/BackupStatus.java new file mode 100644 index 000000000..63ce3a4a2 --- /dev/null +++ b/src/main/java/de/deadlocker8/budgetmaster/backup/BackupStatus.java @@ -0,0 +1,8 @@ +package de.deadlocker8.budgetmaster.backup; + +public enum BackupStatus +{ + UNKNOWN, + OK, + ERROR +} diff --git a/src/main/java/de/deadlocker8/budgetmaster/backup/BackupTask.java b/src/main/java/de/deadlocker8/budgetmaster/backup/BackupTask.java index 5714bed5b..6fbcd15de 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/backup/BackupTask.java +++ b/src/main/java/de/deadlocker8/budgetmaster/backup/BackupTask.java @@ -14,7 +14,7 @@ public abstract class BackupTask implements Runnable protected final DatabaseService databaseService; protected final SettingsService settingsService; private final Path backupFolder; - private boolean hasErrors; + private BackupStatus backupStatus; protected BackupTask(DatabaseService databaseService, SettingsService settingsService) { @@ -24,7 +24,7 @@ public abstract class BackupTask implements Runnable final Path applicationSupportFolder = Main.getApplicationSupportFolder(); this.backupFolder = applicationSupportFolder.resolve("backups"); - this.hasErrors = false; + this.backupStatus = BackupStatus.UNKNOWN; } protected Path getBackupFolder() @@ -32,14 +32,14 @@ public abstract class BackupTask implements Runnable return backupFolder; } - public boolean hasErrors() + public BackupStatus getBackupStatus() { - return hasErrors; + return backupStatus; } - protected void setHasErrors(boolean hasErrors) + public void setBackupStatus(BackupStatus backupStatus) { - this.hasErrors = hasErrors; + this.backupStatus = backupStatus; } public abstract void cleanup(Settings previousSettings, Settings newSettings); diff --git a/src/main/java/de/deadlocker8/budgetmaster/backup/GitBackupTask.java b/src/main/java/de/deadlocker8/budgetmaster/backup/GitBackupTask.java index 429c49ea5..9b67f427d 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/backup/GitBackupTask.java +++ b/src/main/java/de/deadlocker8/budgetmaster/backup/GitBackupTask.java @@ -44,7 +44,7 @@ public abstract class GitBackupTask extends BackupTask // check if database file is successfully added if(!GitHelper.isFileAddedOrChanged(git, DATABASE_FILE_NAME)) { - setHasErrors(true); + setBackupStatus(BackupStatus.ERROR); throw new RuntimeException(MessageFormat.format("Error adding \"{0}\" to git", DATABASE_FILE_NAME)); } diff --git a/src/main/java/de/deadlocker8/budgetmaster/backup/LocalBackupTask.java b/src/main/java/de/deadlocker8/budgetmaster/backup/LocalBackupTask.java index 7b39b272c..10eae1ddd 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/backup/LocalBackupTask.java +++ b/src/main/java/de/deadlocker8/budgetmaster/backup/LocalBackupTask.java @@ -25,6 +25,7 @@ public class LocalBackupTask extends BackupTask { LOGGER.debug(MessageFormat.format("Starting backup with strategy \"{0}\"", AutoBackupStrategy.LOCAL)); databaseService.backupDatabase(getBackupFolder()); + setBackupStatus(BackupStatus.OK); LOGGER.debug("Backup DONE"); } diff --git a/src/main/java/de/deadlocker8/budgetmaster/backup/LocalGitBackupTask.java b/src/main/java/de/deadlocker8/budgetmaster/backup/LocalGitBackupTask.java index 1bd92a097..b046cee25 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/backup/LocalGitBackupTask.java +++ b/src/main/java/de/deadlocker8/budgetmaster/backup/LocalGitBackupTask.java @@ -48,14 +48,14 @@ public class LocalGitBackupTask extends GitBackupTask final Git git = new Git(repository); addAndCommitChanges(git); - setHasErrors(false); + setBackupStatus(BackupStatus.OK); LOGGER.debug("Backup DONE"); } } catch(IOException | GitAPIException e) { e.printStackTrace(); - setHasErrors(true); + setBackupStatus(BackupStatus.ERROR); } } diff --git a/src/main/java/de/deadlocker8/budgetmaster/backup/RemoteGitBackupTask.java b/src/main/java/de/deadlocker8/budgetmaster/backup/RemoteGitBackupTask.java index 1816ae3f7..83327d847 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/backup/RemoteGitBackupTask.java +++ b/src/main/java/de/deadlocker8/budgetmaster/backup/RemoteGitBackupTask.java @@ -56,7 +56,7 @@ public class RemoteGitBackupTask extends GitBackupTask catch(IOException | GitAPIException | URISyntaxException e) { e.printStackTrace(); - setHasErrors(true); + setBackupStatus(BackupStatus.ERROR); } } @@ -79,7 +79,7 @@ public class RemoteGitBackupTask extends GitBackupTask GitHelper.push(git, credentialsProvider); } - setHasErrors(false); + setBackupStatus(BackupStatus.OK); LOGGER.debug("Backup DONE"); } } diff --git a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java index 4eebe7070..c0a56c261 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java @@ -380,6 +380,6 @@ public class SettingsController extends BaseController final Optional<DateTime> nextBackupTimeOptional = scheduleTaskService.getNextRun(); nextBackupTimeOptional.ifPresent(date -> model.addAttribute("nextBackupTime", date)); - model.addAttribute("autoBackupHasErrors", scheduleTaskService.hasErrors()); + model.addAttribute("autoBackupStatus", scheduleTaskService.getBackupStatus()); } } \ No newline at end of file diff --git a/src/main/resources/languages/base_de.properties b/src/main/resources/languages/base_de.properties index 554b1f106..45ce4ce36 100644 --- a/src/main/resources/languages/base_de.properties +++ b/src/main/resources/languages/base_de.properties @@ -213,10 +213,11 @@ settings.backup.auto.strategy.git.remote.help=Einrichtungshilfe settings.backup.auto.strategy.git.remote.help.url=https://github.com/deadlocker8/BudgetMaster/wiki/Automatic-backup settings.backup.auto.files.to.keep=Anzahl aufzubewahrender Backups (0 für unbegrenzt) settings.backup.auto.next=Nächste Ausführung -settings.backup.auto.has.errors=Letztes Backup -settings.backup.auto.has.errors.true=Fehler -settings.backup.auto.has.errors.details=Details finden sich im Log. -settings.backup.auto.has.errors.false=OK +settings.backup.auto.status=Letztes Backup +settings.backup.auto.status.error=Fehler +settings.backup.auto.status.error.details=Details finden sich im Log. +settings.backup.auto.status.ok=OK +settings.backup.auto.status.unknown=unbekannt settings.backup.auto.git.url=Adresse des Git-Servers settings.backup.auto.git.branch.name=Name des Branches settings.backup.auto.git.user.name=Git Nutzername diff --git a/src/main/resources/languages/base_en.properties b/src/main/resources/languages/base_en.properties index 257009a02..2d0802748 100644 --- a/src/main/resources/languages/base_en.properties +++ b/src/main/resources/languages/base_en.properties @@ -213,10 +213,11 @@ settings.backup.auto.strategy.git.remote.help=Configuration help settings.backup.auto.strategy.git.remote.help.url=https://github.com/deadlocker8/BudgetMaster/wiki/Automatic-backup settings.backup.auto.files.to.keep=Number of backups to keep (0 for unlimited) settings.backup.auto.next=Next execution -settings.backup.auto.has.errors=Last backup -settings.backup.auto.has.errors.true=Error -settings.backup.auto.has.errors.details=Log may contain details. -settings.backup.auto.has.errors.false=OK +settings.backup.auto.status=Last backup +settings.backup.auto.status.error=Error +settings.backup.auto.status.error.details=Log may contain details. +settings.backup.auto.status.ok=OK +settings.backup.auto.status.unknown=unknown settings.backup.auto.git.url=Git server address settings.backup.auto.git.branch.name=Git branch name settings.backup.auto.git.user.name=Git user name diff --git a/src/main/resources/templates/settings/settingsMacros.ftl b/src/main/resources/templates/settings/settingsMacros.ftl index e19aad89a..fca96559f 100644 --- a/src/main/resources/templates/settings/settingsMacros.ftl +++ b/src/main/resources/templates/settings/settingsMacros.ftl @@ -190,16 +190,19 @@ </div> <div class="col s6 m6 l4 right-align"> - <#if autoBackupHasErrors> + <#if autoBackupStatus.name() == "ERROR"> <#assign autoBackupStatusBannerClasses="budgetmaster-red white-text"> - <#assign autoBackupStatusBannerText=locale.getString("settings.backup.auto.has.errors.true")> - <#else> + <#assign autoBackupStatusBannerText=locale.getString("settings.backup.auto.status.error")> + <#elseif autoBackupStatus.name() == "OK"> <#assign autoBackupStatusBannerClasses="budgetmaster-green white-text"> - <#assign autoBackupStatusBannerText=locale.getString("settings.backup.auto.has.errors.false")> + <#assign autoBackupStatusBannerText=locale.getString("settings.backup.auto.status.ok")> + <#elseif autoBackupStatus.name() == "UNKNOWN"> + <#assign autoBackupStatusBannerClasses="budgetmaster-grey black-text"> + <#assign autoBackupStatusBannerText=locale.getString("settings.backup.auto.status.unknown")> </#if> - ${locale.getString("settings.backup.auto.has.errors")}: - <div class="banner ${autoBackupStatusBannerClasses} tooltipped" data-position="bottom" data-tooltip="${locale.getString("settings.backup.auto.has.errors.details")}"> + ${locale.getString("settings.backup.auto.status")}: + <div class="banner ${autoBackupStatusBannerClasses} tooltipped" data-position="bottom" data-tooltip="${locale.getString("settings.backup.auto.status.error.details")}"> ${autoBackupStatusBannerText} </div> </div> -- GitLab