From afdb1082a7b5bf29be6c2dd21b593ef69562764a Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Sun, 16 Dec 2018 14:54:32 +0000
Subject: [PATCH] Archive content from array to list.

---
 borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java |   29 +++++++++++++++++++++++++----
 1 files changed, 25 insertions(+), 4 deletions(-)

diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java
index 6c7d2c9..314a262 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java
@@ -179,16 +179,37 @@
         return archive;
     }
 
-    public BorgFilesystemItem[] getArchiveContent(BorgRepoConfig repoConfig, Archive archive) {
+    public List<BorgFilesystemItem> getArchiveContent(String archiveId) {
+        Archive archive = null;
+        outerLoop:
+        for (Repository repository : getAllRepositories()) {
+            if (repository.getArchives() != null) {
+                for (Archive arch : repository.getArchives()) {
+                    if (StringUtils.equals(archiveId, arch.getId())) {
+                        archive = arch;
+                        break outerLoop;
+                    }
+                }
+            }
+        }
+        if (archive == null) {
+            log.error("Can't find archive with id '" + archiveId + "'. May-be it doesn't exist or the archives of the target repository aren't yet loaded.");
+            return null;
+        }
+        BorgRepoConfig repoConfig = ConfigurationHandler.getConfiguration().getRepoConfig(archive.getRepoId());
+        return getArchiveContent(repoConfig, archive);
+    }
+
+    public List<BorgFilesystemItem> getArchiveContent(BorgRepoConfig repoConfig, Archive archive) {
         if (archive == null || StringUtils.isBlank(archive.getName())) {
             return null;
         }
-        BorgFilesystemItem[] items = archiveFilelistCache.load(repoConfig, archive);
+        List<BorgFilesystemItem> items = archiveFilelistCache.load(repoConfig, archive);
         if (items == null) {
             List<BorgFilesystemItem> list = BorgCommands.listArchiveContent(repoConfig, archive.getName());
             if (CollectionUtils.isNotEmpty(list)) {
                 archiveFilelistCache.save(repoConfig, archive, list);
-                items = list.toArray(new BorgFilesystemItem[0]);
+                items = new ArrayList<>();
             }
         }
         if (items == null) {
@@ -197,7 +218,7 @@
         return items;
     }
 
-    public BorgFilesystemItem[] getArchiveContent(File file) {
+    public List<BorgFilesystemItem> getArchiveContent(File file) {
         return archiveFilelistCache.load(file);
     }
 

--
Gitblit v1.10.0