From 909823cee4aff9f12ddceef523f062054a4af428 Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Sat, 08 Dec 2018 09:15:16 +0000
Subject: [PATCH] Parses now json repsonse of borg to Pojo's.
---
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/Stats.java | 25 ++++++++++++
borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java | 10 ++++-
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/RepoInfo.java | 27 +++++++++++++
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/Encryption.java | 8 ++++
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/Repository.java | 14 +++++++
borgbutler-core/src/test/java/de/micromata/borgbutler/BorgCommandsTest.java | 5 ++
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/Cache.java | 10 +++++
7 files changed, 96 insertions(+), 3 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 72ee7bf..a0508c0 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
@@ -3,6 +3,8 @@
import de.micromata.borgbutler.config.BorgRepoConfig;
import de.micromata.borgbutler.config.Configuration;
import de.micromata.borgbutler.config.ConfigurationHandler;
+import de.micromata.borgbutler.json.JsonUtils;
+import de.micromata.borgbutler.json.borg.RepoInfo;
import org.apache.commons.exec.*;
import org.apache.commons.exec.environment.EnvironmentUtils;
import org.apache.commons.io.output.ByteArrayOutputStream;
@@ -17,10 +19,11 @@
public class BorgCommands {
private static Logger log = LoggerFactory.getLogger(BorgCommands.class);
- public static String info(BorgRepoConfig repoConfig) {
+ public static RepoInfo info(BorgRepoConfig repoConfig) {
try {
CommandLine cmdLine = new CommandLine(ConfigurationHandler.getConfiguration().getBorgCommand());
cmdLine.addArgument("info");
+ cmdLine.addArgument("--json");
cmdLine.addArgument(repoConfig.getRepo());
DefaultExecutor executor = new DefaultExecutor();
//executor.setExitValue(2);
@@ -32,7 +35,10 @@
executor.setStreamHandler(streamHandler);
log.info("Executing '" + cmdLine.getExecutable() + " " + StringUtils.join(cmdLine.getArguments(), " ") + "'...");
executor.execute(cmdLine, getEnvironment(repoConfig));
- return (outputStream.toString(Charset.forName("UTF-8")));
+ String json = outputStream.toString(Charset.forName("UTF-8"));
+ RepoInfo repoInfo = JsonUtils.fromJson(RepoInfo.class, json);
+ repoInfo.setOriginalJson(json);
+ return repoInfo;
} catch (IOException ex) {
log.error("Error while executing borg command: " + ex.getMessage(), ex);
return null;
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/Cache.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/Cache.java
new file mode 100644
index 0000000..4f5ec81
--- /dev/null
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/Cache.java
@@ -0,0 +1,10 @@
+package de.micromata.borgbutler.json.borg;
+
+import lombok.Getter;
+
+public class Cache {
+ @Getter
+ private String path;
+ @Getter
+ private Stats stats;
+}
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/Encryption.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/Encryption.java
new file mode 100644
index 0000000..8225da4
--- /dev/null
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/Encryption.java
@@ -0,0 +1,8 @@
+package de.micromata.borgbutler.json.borg;
+
+import lombok.Getter;
+
+public class Encryption {
+ @Getter
+ private String mode;
+}
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/RepoInfo.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/RepoInfo.java
new file mode 100644
index 0000000..72bcfd0
--- /dev/null
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/RepoInfo.java
@@ -0,0 +1,27 @@
+package de.micromata.borgbutler.json.borg;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import de.micromata.borgbutler.json.JsonUtils;
+import lombok.Getter;
+import lombok.Setter;
+
+public class RepoInfo {
+ @Getter
+ @JsonProperty("security_dir")
+ private String securityDir;
+ @Getter
+ private Cache cache;
+ @Getter
+ private Encryption encryption;
+ @Getter
+ private Repository repository;
+ @Getter
+ @Setter
+ @JsonIgnore
+ private String originalJson;
+
+ public String toString() {
+ return JsonUtils.toJson(this, true);
+ }
+}
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/Repository.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/Repository.java
new file mode 100644
index 0000000..c0006e4
--- /dev/null
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/Repository.java
@@ -0,0 +1,14 @@
+package de.micromata.borgbutler.json.borg;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+
+public class Repository {
+ @Getter
+ private String id;
+ @Getter
+ @JsonProperty("last_modified")
+ private String lastModified;
+ @Getter
+ private String location;
+}
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/Stats.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/Stats.java
new file mode 100644
index 0000000..e569ad6
--- /dev/null
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/Stats.java
@@ -0,0 +1,25 @@
+package de.micromata.borgbutler.json.borg;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+
+public class Stats {
+ @Getter
+ @JsonProperty("total_chunks")
+ private long totalChunks;
+ @Getter
+ @JsonProperty("total_csize")
+ private long totalCSize;
+ @Getter
+ @JsonProperty("total_size")
+ private long totalSize;
+ @Getter
+ @JsonProperty("total_unique_chunks")
+ private long totalUniqueChunks;
+ @Getter
+ @JsonProperty("unique_csize")
+ private long uniqueCSize;
+ @Getter
+ @JsonProperty("unique_size")
+ private long uniqueSize;
+}
diff --git a/borgbutler-core/src/test/java/de/micromata/borgbutler/BorgCommandsTest.java b/borgbutler-core/src/test/java/de/micromata/borgbutler/BorgCommandsTest.java
index fc25d15..c0f1925 100644
--- a/borgbutler-core/src/test/java/de/micromata/borgbutler/BorgCommandsTest.java
+++ b/borgbutler-core/src/test/java/de/micromata/borgbutler/BorgCommandsTest.java
@@ -3,6 +3,7 @@
import de.micromata.borgbutler.config.BorgRepoConfig;
import de.micromata.borgbutler.config.Configuration;
import de.micromata.borgbutler.config.ConfigurationHandler;
+import de.micromata.borgbutler.json.borg.RepoInfo;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -20,7 +21,9 @@
}
for (BorgRepoConfig repo : config.getRepos()) {
log.info("Processing repo '" + repo + "'");
- log.info(BorgCommands.info(repo));
+ RepoInfo repoInfo = BorgCommands.info(repo);
+ log.info("Repo info: " + repoInfo);
+ log.info("Repo json: " + repoInfo.getOriginalJson());
}
}
}
--
Gitblit v1.10.0