From cf6687899b11ea0d559dd858c1c6ac61e71f8444 Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Sun, 16 Dec 2018 15:34:55 +0000
Subject: [PATCH] lazy loading of file list.
---
borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java | 25 ++++++++++++++-----------
1 files changed, 14 insertions(+), 11 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 adcae64..2ac9040 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
@@ -7,7 +7,6 @@
import de.micromata.borgbutler.data.Archive;
import de.micromata.borgbutler.data.Repository;
import de.micromata.borgbutler.json.borg.BorgFilesystemItem;
-import de.micromata.borgbutler.utils.DateUtils;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.jcs.JCS;
import org.apache.commons.jcs.access.CacheAccess;
@@ -181,10 +180,16 @@
}
public List<BorgFilesystemItem> getArchiveContent(String archiveId) {
- return getArchiveContent(archiveId, -1);
+ return getArchiveContent(archiveId, true, -1);
}
- public List<BorgFilesystemItem> getArchiveContent(String archiveId, int maxSize) {
+ /**
+ * @param archiveId
+ * @param forceLoad If false, the file list will only get if not yet loaded.
+ * @param maxSize
+ * @return
+ */
+ public List<BorgFilesystemItem> getArchiveContent(String archiveId, boolean forceLoad, int maxSize) {
Archive archive = null;
outerLoop:
for (Repository repository : getAllRepositories()) {
@@ -202,32 +207,30 @@
return null;
}
BorgRepoConfig repoConfig = ConfigurationHandler.getConfiguration().getRepoConfig(archive.getRepoId());
- return getArchiveContent(repoConfig, archive, maxSize);
+ return getArchiveContent(repoConfig, archive, forceLoad, maxSize);
}
/**
- *
* @param repoConfig
* @param archive
* @return
*/
public List<BorgFilesystemItem> getArchiveContent(BorgRepoConfig repoConfig, Archive archive) {
- return getArchiveContent(repoConfig, archive, -1);
+ return getArchiveContent(repoConfig, archive, true, -1);
}
/**
- *
* @param repoConfig
* @param archive
- * @param maxSize Max result size (default is -1 meaning all).
+ * @param maxSize Max result size (default is -1 meaning all).
* @return
*/
- public List<BorgFilesystemItem> getArchiveContent(BorgRepoConfig repoConfig, Archive archive, int maxSize) {
+ public List<BorgFilesystemItem> getArchiveContent(BorgRepoConfig repoConfig, Archive archive, boolean forceLoad, int maxSize) {
if (archive == null || StringUtils.isBlank(archive.getName())) {
return null;
}
List<BorgFilesystemItem> items = archiveFilelistCache.load(repoConfig, archive, maxSize);
- if (items == null) {
+ if (items == null && forceLoad) {
List<BorgFilesystemItem> list = BorgCommands.listArchiveContent(repoConfig, archive.getName());
if (CollectionUtils.isNotEmpty(list)) {
archiveFilelistCache.save(repoConfig, archive, list);
@@ -239,7 +242,7 @@
}
}
}
- if (items == null) {
+ if (items == null && forceLoad) {
log.warn("Repo::archiv with name '" + archive.getBorgIdentifier() + "' not found.");
}
return items;
--
Gitblit v1.10.0