From 4dc7ece1a7e00b3fe804b1d64852a2e8abb623b8 Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Sat, 15 Dec 2018 08:03:02 +0000
Subject: [PATCH] Archives are now sorted in reverse order (newest first).

---
 borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java          |    2 +-
 borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgArchive.java |   14 +++++++++++++-
 borgbutler-core/src/main/java/de/micromata/borgbutler/data/Repository.java       |   14 ++++++++++++--
 3 files changed, 26 insertions(+), 4 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 7a89cff..988840a 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
@@ -77,7 +77,7 @@
         masterRepository.setLastModified(DateUtils.format(repoList.getRepository().getLastModified()))
                 .setLastCacheRefresh(DateUtils.format(LocalDateTime.now()));
         Repository repository = ObjectUtils.clone(masterRepository)
-                .setArchives(repoList.getArchives());
+                .addAll(repoList.getArchives());
         if (repository.getArchives() != null) {
             for (BorgArchive archive : repository.getArchives()) {
                 // Reformat Borg date strings.
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/data/Repository.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/data/Repository.java
index 4c2fbc7..5c20f88 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/data/Repository.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/data/Repository.java
@@ -8,7 +8,9 @@
 import lombok.Setter;
 
 import java.io.Serializable;
-import java.util.List;
+import java.util.Collection;
+import java.util.SortedSet;
+import java.util.TreeSet;
 
 /**
  * Part of Borg json objects to refer objects to repositories.
@@ -66,7 +68,15 @@
      */
     @Getter
     @Setter
-    private List<BorgArchive> archives;
+    private SortedSet<BorgArchive> archives;
+
+    public Repository addAll(Collection<BorgArchive> archives) {
+        if (this.archives == null) {
+            this.archives = new TreeSet<>();
+        }
+        this.archives.addAll(archives);
+        return this;
+    }
 
     @Override
     public Object clone() throws CloneNotSupportedException {
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgArchive.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgArchive.java
index 3af01f3..92888ed 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgArchive.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgArchive.java
@@ -3,13 +3,14 @@
 import de.micromata.borgbutler.json.JsonUtils;
 import lombok.Getter;
 import lombok.Setter;
+import org.apache.commons.lang3.StringUtils;
 
 import java.io.Serializable;
 
 /**
  * This object is given by <tt>borg list repo</tt>.
  */
-public class BorgArchive implements Serializable {
+public class BorgArchive implements Serializable, Comparable<BorgArchive> {
     private static final long serialVersionUID = -7872260170265536732L;
     @Getter
     private String archive;
@@ -26,6 +27,17 @@
     @Setter
     private String time;
 
+    /**
+     * In reverse order, compares times.
+     * @param o
+     * @return
+     */
+    @Override
+    public int compareTo(BorgArchive o) {
+        // Reverse order:
+        return StringUtils.compare(o.time, this.time);
+    }
+
     public String toString() {
         return JsonUtils.toJson(this, true);
     }

--
Gitblit v1.10.0