From f218947aa4129f54eb8325bdd3140e5dac0e0ece Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Wed, 09 Jan 2019 21:41:48 +0000
Subject: [PATCH] DiffFileSystemFilter...

---
 borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/ArchivesRest.java |   31 ++++++++++++++++---------------
 1 files changed, 16 insertions(+), 15 deletions(-)

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 b24774b..582715e 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
@@ -1,11 +1,11 @@
 package de.micromata.borgbutler.server.rest;
 
 import de.micromata.borgbutler.BorgCommands;
-import de.micromata.borgbutler.DiffTool;
 import de.micromata.borgbutler.cache.ButlerCache;
 import de.micromata.borgbutler.config.BorgRepoConfig;
 import de.micromata.borgbutler.config.ConfigurationHandler;
 import de.micromata.borgbutler.data.Archive;
+import de.micromata.borgbutler.data.DiffFileSystemFilter;
 import de.micromata.borgbutler.data.FileSystemFilter;
 import de.micromata.borgbutler.data.Repository;
 import de.micromata.borgbutler.json.JsonUtils;
@@ -77,29 +77,30 @@
                                      @QueryParam("diffArchiveId") String diffArchiveId,
                                      @QueryParam("force") boolean force,
                                      @QueryParam("prettyPrinter") boolean prettyPrinter) {
+        boolean diffMode = StringUtils.isNotBlank(diffArchiveId);
         int maxSize = NumberUtils.toInt(maxResultSize, 50);
-        FileSystemFilter filter = new FileSystemFilter()
-                .setSearchString(searchString)
-                .setMaxResultSize(maxSize)
-                .setMode(mode)
+        FileSystemFilter filter = diffMode ? new DiffFileSystemFilter() : new FileSystemFilter();
+        filter.setSearchString(searchString)
                 .setCurrentDirectory(currentDirectory);
         List<BorgFilesystemItem> items = null;
-        if (StringUtils.isBlank(diffArchiveId)) {
+        if (diffMode) {
+            filter.setMode(FileSystemFilter.Mode.FLAT);
+            items = ButlerCache.getInstance().getArchiveContent(archiveId, true, filter);
+            List<BorgFilesystemItem> diffItems = ButlerCache.getInstance().getArchiveContent(diffArchiveId, true,
+                    filter);
+            filter.setMaxResultSize(maxSize)
+                    .setMode(mode);
+            items = ((DiffFileSystemFilter) filter).extractDifferences(items, diffItems);
+            items = filter.reduce(items);
+        } else {
+            filter.setMode(mode)
+                    .setMaxResultSize(maxSize);
             // Get file list (without running diff).
             items = ButlerCache.getInstance().getArchiveContent(archiveId, force,
                     filter);
             if (items == null) {
                 return "[{\"mode\": \"notLoaded\"}]";
             }
-        } else {
-            filter.setMode(FileSystemFilter.Mode.FLAT).setMaxResultSize(-1);
-            items = ButlerCache.getInstance().getArchiveContent(archiveId, true, filter);
-            List<BorgFilesystemItem> diffItems = ButlerCache.getInstance().getArchiveContent(diffArchiveId, true,
-                    filter);
-            items = DiffTool.extractDifferences(items, diffItems);
-            filter.setMaxResultSize(maxSize)
-                    .setMode(mode);
-            items = filter.reduce(items);
         }
         return JsonUtils.toJson(items, prettyPrinter);
     }

--
Gitblit v1.10.0