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 ++++++++++++++++++-------
 1 files changed, 18 insertions(+), 7 deletions(-)

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();

--
Gitblit v1.10.0