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