From b9a02dcfbbce3c3b473b2f583e1f83440b58e63f Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Sun, 10 Feb 2019 15:18:51 +0000
Subject: [PATCH] BorgCommandResult...
---
borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java | 25 ++++++++++++++++++-------
borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommandResult.java | 31 +++++++++++++++++++++++++++++++
borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java | 4 +++-
3 files changed, 52 insertions(+), 8 deletions(-)
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommandResult.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommandResult.java
new file mode 100644
index 0000000..7ce779e
--- /dev/null
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommandResult.java
@@ -0,0 +1,31 @@
+package de.micromata.borgbutler;
+
+import de.micromata.borgbutler.jobs.JobResult;
+import lombok.AccessLevel;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * Holder of result object of borg commands. Holds the result object as well as error messages and status.
+ */
+public class BorgCommandResult<T> {
+
+ @Getter
+ @Setter(AccessLevel.PACKAGE)
+ private T object;
+
+ @Getter
+ @Setter(AccessLevel.PACKAGE)
+ private JobResult<String> jobResult;
+
+ public JobResult.Status getStatus() {
+ return jobResult != null ? jobResult.getStatus() : JobResult.Status.ERROR;
+ }
+
+ public String getError() {
+ if (jobResult != null) {
+ return jobResult.getErrorString();
+ }
+ return "Unkown error... (please refer the log files)";
+ }
+}
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
index 5923dc2..b8f20d5 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
@@ -91,18 +91,19 @@
* @param repoConfig
* @return Parsed repo config returned by Borg command (without archives).
*/
- public static Repository info(BorgRepoConfig repoConfig) {
+ public static BorgCommandResult<Repository> info(BorgRepoConfig repoConfig) {
BorgCommand command = new BorgCommand()
.setRepoConfig(repoConfig)
.setCommand("info")
.setParams("--json") // --progress has no effect.
.setDescription("Loading info of repo '" + repoConfig.getDisplayName() + "'.");
- JobResult<String> jobResult = getResult(command);
- if (jobResult == null || jobResult.getStatus() != JobResult.Status.OK) {
- return null;
+ BorgCommandResult<Repository> result = new BorgCommandResult<>();
+ getResult(result, command);
+ if (result.getStatus() != JobResult.Status.OK) {
+ return result;
}
- String result = jobResult.getResultObject();
- BorgRepoInfo repoInfo = JsonUtils.fromJson(BorgRepoInfo.class, result);
+ String resultJson = result.getJobResult().getResultObject();
+ BorgRepoInfo repoInfo = JsonUtils.fromJson(BorgRepoInfo.class, resultJson);
BorgRepository borgRepository = repoInfo.getRepository();
Repository repository = new Repository()
.setId(borgRepository.getId())
@@ -115,7 +116,7 @@
.setSecurityDir(repoInfo.getSecurityDir())
.setLastCacheRefresh(DateUtils.format(LocalDateTime.now()));
DemoRepos.repoWasRead(repoConfig, repository);
- return repository;
+ return result.setObject(repository);
}
/**
@@ -271,6 +272,16 @@
return restoreDir;
}
+ private static void getResult(BorgCommandResult<?> result, BorgCommand command) {
+ BorgJob<Void> job = execute(command);
+ JobResult<String> jobResult = job.getResult();
+ result.setJobResult(jobResult);
+ if (jobResult == null || jobResult.getStatus() == JobResult.Status.ERROR) {
+ jobResult.setErrorString(job.getErrorString(2000));
+ }
+ job.cleanUp();
+ }
+
private static JobResult<String> getResult(BorgCommand command) {
BorgJob<Void> job = execute(command);
JobResult<String> jobResult = job.getResult();
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java
index 15481b2..6a3bc6e 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java
@@ -1,5 +1,6 @@
package de.micromata.borgbutler.cache;
+import de.micromata.borgbutler.BorgCommandResult;
import de.micromata.borgbutler.BorgCommands;
import de.micromata.borgbutler.config.BorgRepoConfig;
import de.micromata.borgbutler.config.Configuration;
@@ -75,7 +76,8 @@
log.warn("Error while deserializing repository (maybe data format was changed). Reloading...");
}
if (repository == null || repository.getLocation() == null) {
- repository = BorgCommands.info(repoConfig);
+ BorgCommandResult<Repository> result = BorgCommands.info(repoConfig);
+ repository = result.getObject();
if (repository != null) {
repoCacheAccess.put(repoConfig.getRepo(), repository);
}
--
Gitblit v1.10.0