From 3f61de79937ff7692e22a6b87cc36ed1db56d8bc Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Thu, 20 Dec 2018 01:12:38 +0000
Subject: [PATCH] DiffTool works for flat view (NPE for tree view).
---
borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/ArchivesRest.java | 25 ++++++++++++++++++-------
1 files changed, 18 insertions(+), 7 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 e515bb1..14e2a20 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,6 +1,7 @@
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;
@@ -78,13 +79,23 @@
.setMaxResultSize(maxSize)
.setMode(mode)
.setCurrentDirectory(currentDirectory);
- List<BorgFilesystemItem> items = ButlerCache.getInstance().getArchiveContent(archiveId, force,
- filter);
- if (items == null) {
- return "[{\"mode\": \"notLoaded\"}]";
- }
- if (StringUtils.isNotBlank(diffArchiveId)) {
- log.info("Diff between archives not yet supported.");
+ List<BorgFilesystemItem> items = null;
+ if (StringUtils.isBlank(diffArchiveId)) {
+ // 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);
+ filter.reduce(items);
}
return JsonUtils.toJson(items, prettyPrinter);
}
--
Gitblit v1.10.0