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