From e9c74d4f90ae553035ab2edd81e336a8d205b3d2 Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Sun, 09 Dec 2018 15:47:48 +0000
Subject: [PATCH] ...
---
borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java | 30 ++++++++++++++++++++++++------
1 files changed, 24 insertions(+), 6 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 1be4dca..00ecb3b 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
@@ -1,8 +1,12 @@
package de.micromata.borgbutler.cache;
import com.fasterxml.jackson.annotation.JsonIgnore;
+import de.micromata.borgbutler.config.BorgRepoConfig;
import de.micromata.borgbutler.config.ConfigurationHandler;
+import de.micromata.borgbutler.json.borg.Archive;
+import de.micromata.borgbutler.json.borg.FilesystemItem;
import lombok.Getter;
+import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -21,6 +25,7 @@
private RepoListCache repoListCache;
private ArchiveListCache archiveListCache;
private List<AbstractElementsCache> caches;
+ private List<ArchiveFileListCache> archiveFileListCaches;
@JsonIgnore
private File cacheDir;
@@ -29,18 +34,30 @@
return instance;
}
- public void read() {
- for (AbstractElementsCache cache : caches) {
- cache.read();
- }
- }
-
public void save() {
for (AbstractElementsCache cache : caches) {
cache.save();
}
}
+ public List<FilesystemItem> getArchiveContent(BorgRepoConfig repoConfig, Archive archive) {
+ if (archive == null || StringUtils.isBlank(archive.getArchive())) {
+ return null;
+ }
+ ArchiveFileListCache cache = null;
+ for (ArchiveFileListCache existingCache : archiveFileListCaches) {
+ if (archive.equals(existingCache.getArchive())) {
+ // Cache is already known:
+ cache = existingCache;
+ break;
+ }
+ }
+ if (cache == null) {
+ cache = new ArchiveFileListCache(cacheDir, repoConfig, archive);
+ }
+ return cache.getContent(repoConfig);
+ }
+
/**
* Removes all cache files and clears all caches.
*/
@@ -67,5 +84,6 @@
caches.add(repoInfoCache = new RepoInfoCache(cacheDir));
caches.add(repoListCache = new RepoListCache(cacheDir));
caches.add(archiveListCache = new ArchiveListCache(cacheDir));
+ archiveFileListCaches = new ArrayList<>();
}
}
--
Gitblit v1.10.0