From 42fe5c02ce58075e0a7229b31ff780c22f9847e1 Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Tue, 18 Dec 2018 22:36:54 +0000
Subject: [PATCH] Every archive contains now list of ArchiveShortInfo of all other archives inside the same repo (e. g. for calling diff functionality).
---
borgbutler-core/src/main/java/de/micromata/borgbutler/data/ArchiveShortInfo.java | 61 ++++++++++++++++++++++++++++++
borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java | 14 ++++++-
borgbutler-core/src/main/java/de/micromata/borgbutler/data/Archive.java | 13 ++++++
3 files changed, 86 insertions(+), 2 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 0c8bfbe..0467696 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
@@ -5,6 +5,7 @@
import de.micromata.borgbutler.config.ConfigurationHandler;
import de.micromata.borgbutler.config.Definitions;
import de.micromata.borgbutler.data.Archive;
+import de.micromata.borgbutler.data.ArchiveShortInfo;
import de.micromata.borgbutler.data.Repository;
import de.micromata.borgbutler.json.JsonUtils;
import de.micromata.borgbutler.json.borg.*;
@@ -25,8 +26,6 @@
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
-import java.nio.file.Files;
-import java.nio.file.Path;
import java.time.LocalDateTime;
import java.util.*;
@@ -81,6 +80,7 @@
}
repository.setLastModified(DateUtils.format(repoList.getRepository().getLastModified()))
.setLastCacheRefresh(DateUtils.format(LocalDateTime.now()));
+ List<ArchiveShortInfo> archiveInfoList = new ArrayList<>();
for (BorgArchive borgArchive : repoList.getArchives()) {
Archive archive = new Archive()
.setName(borgArchive.getArchive())
@@ -91,6 +91,15 @@
.setRepoName(repository.getName())
.setRepoDisplayName(repoConfig.getDisplayName());
repository.add(archive);
+ archiveInfoList.add(new ArchiveShortInfo()
+ .setId(archive.getId())
+ .setName(archive.getName())
+ .setRepoId(archive.getRepoId())
+ .setTime(archive.getTime()));
+ }
+ for (Archive archive : repository.getArchives()) {
+ // ArchiveInfoList for comparing current archives with one of all other archives.
+ archive.setArchiveShortInfoList(archiveInfoList);
}
}
@@ -161,6 +170,7 @@
/**
* Stores the file in a subdirectory named with the repos display name.
+ *
* @param restoreHomeDir
* @param repoConfig
* @param archive
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/data/Archive.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/data/Archive.java
index 5d1dd77..7b6afa9 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/data/Archive.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/data/Archive.java
@@ -9,6 +9,7 @@
import org.apache.commons.lang3.StringUtils;
import java.io.Serializable;
+import java.util.List;
/**
*
@@ -81,6 +82,18 @@
@Getter
@Setter
private String hostname;
+ /**
+ * For comparing functionality.
+ */
+ @Getter
+ @Setter
+ private List<ArchiveShortInfo> archiveShortInfoList;
+ /**
+ * Is the file list of this archive loaded and available in Butler's cache.
+ */
+ @Getter
+ @Setter
+ private boolean fileListAlreadyCached;
/**
*
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/data/ArchiveShortInfo.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/data/ArchiveShortInfo.java
new file mode 100644
index 0000000..3110d1a
--- /dev/null
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/data/ArchiveShortInfo.java
@@ -0,0 +1,61 @@
+package de.micromata.borgbutler.data;
+
+import de.micromata.borgbutler.json.borg.BorgArchiveLimits;
+import de.micromata.borgbutler.json.borg.BorgArchiveStats;
+import de.micromata.borgbutler.json.borg.BorgCache;
+import de.micromata.borgbutler.json.borg.BorgEncryption;
+import lombok.Getter;
+import lombok.Setter;
+import org.apache.commons.lang3.StringUtils;
+
+import java.io.Serializable;
+
+/**
+ * Used e. g. for the drop down box for comparing current archive with others.
+ */
+public class ArchiveShortInfo implements Serializable, Comparable<ArchiveShortInfo> {
+ /**
+ * For convenience purposes for the client.
+ */
+ @Getter
+ @Setter
+ private String repoName;
+ @Getter
+ @Setter
+ private String repoId;
+ @Getter
+ @Setter
+ private String name;
+ @Getter
+ @Setter
+ private String id;
+ @Getter
+ @Setter
+ private String time;
+ /**
+ * Is the file list of this archive loaded and available in Butler's cache.
+ */
+ @Getter
+ @Setter
+ private boolean fileListAlreadyCached;
+
+ /**
+ *
+ * @return repoName::archiveName
+ */
+ public String getBorgIdentifier() {
+ return repoName + "::" + name;
+ }
+
+ /**
+ * In reverse order, compares times.
+ *
+ * @param o
+ * @return
+ */
+ @Override
+ public int compareTo(ArchiveShortInfo o) {
+ // Reverse order:
+ return StringUtils.compare(o.time, this.time);
+ }
+}
--
Gitblit v1.10.0