From 63e9950a942c4a6f57cc0b3af4671824ace2b94f Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Thu, 20 Dec 2018 01:32:07 +0000
Subject: [PATCH] Diff view works now also for tree view.

---
 borgbutler-core/src/main/java/de/micromata/borgbutler/data/FileSystemFilter.java      |   10 ++++++++++
 borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/ArchivesRest.java |    2 +-
 2 files changed, 11 insertions(+), 1 deletions(-)

diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/data/FileSystemFilter.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/data/FileSystemFilter.java
index ddbff84..cd971c3 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/data/FileSystemFilter.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/data/FileSystemFilter.java
@@ -3,6 +3,8 @@
 import de.micromata.borgbutler.json.borg.BorgFilesystemItem;
 import lombok.Getter;
 import lombok.Setter;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -102,6 +104,14 @@
      */
     public List<BorgFilesystemItem> reduce(List<BorgFilesystemItem> list) {
         if (mode == FileSystemFilter.Mode.TREE) {
+            if (MapUtils.isEmpty(subDirectories)) {
+                // If matches was not called before, do this now for getting all subdirectories.
+                subDirectories = new HashMap<>();
+                for (BorgFilesystemItem item : list) {
+                    // Needed for building subdirectories...
+                    this.matches(item);
+                }
+            }
             Set<String> set = new HashSet<>();
             List<BorgFilesystemItem> list2 = list;
             list = new ArrayList<>();
diff --git a/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/ArchivesRest.java b/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/ArchivesRest.java
index 14e2a20..2d75037 100644
--- a/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/ArchivesRest.java
+++ b/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/ArchivesRest.java
@@ -95,7 +95,7 @@
             items = DiffTool.extractDifferences(items, diffItems);
             filter.setMaxResultSize(maxSize)
                     .setMode(mode);
-            filter.reduce(items);
+            items = filter.reduce(items);
         }
         return JsonUtils.toJson(items, prettyPrinter);
     }

--
Gitblit v1.10.0