From 5844b5f3ece264b31ddd1e1b447cb4d1dd74f6f7 Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Fri, 14 Dec 2018 20:17:38 +0000
Subject: [PATCH] ...
---
borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java | 47 +++++++++++++++++++++++++++++++++++++----------
1 files changed, 37 insertions(+), 10 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 76d5431..2598f7c 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
@@ -5,10 +5,13 @@
import de.micromata.borgbutler.config.Configuration;
import de.micromata.borgbutler.config.ConfigurationHandler;
import de.micromata.borgbutler.data.Repository;
-import de.micromata.borgbutler.json.borg.*;
+import de.micromata.borgbutler.json.borg.BorgArchive;
+import de.micromata.borgbutler.json.borg.BorgFilesystemItem;
+import de.micromata.borgbutler.json.borg.BorgRepoList;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.jcs.JCS;
import org.apache.commons.jcs.access.CacheAccess;
+import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -24,16 +27,21 @@
private JCSCache jcsCache;
private CacheAccess<String, Repository> repoCacheAccess;
+ private CacheAccess<String, Repository> repoArchivesCacheAccess;
private ArchiveFilelistCache archiveFilelistCache;
public static ButlerCache getInstance() {
return instance;
}
+ /**
+ * @param idOrName
+ * @return Repository without list of archives.
+ */
public Repository getRepository(String idOrName) {
BorgRepoConfig repoConfig = ConfigurationHandler.getConfiguration().getRepoConfig(idOrName);
Repository repository = repoCacheAccess.get(repoConfig.getRepo());
- if (repository == null ||repository.getLocation() == null) {
+ if (repository == null || repository.getLocation() == null) {
repository = BorgCommands.info(repoConfig);
repoCacheAccess.put(repoConfig.getRepo(), repository);
}
@@ -43,6 +51,9 @@
return repository;
}
+ /**
+ * @return the list of all repositories without the list of archives.
+ */
public List<Repository> getAllRepositories() {
List<Repository> repositories = new ArrayList<>();
for (BorgRepoConfig repoConfig : ConfigurationHandler.getConfiguration().getRepoConfigs()) {
@@ -55,8 +66,10 @@
return repositories;
}
- public void clearAllCaches(){
+ public void clearAllCaches() {
this.repoCacheAccess.clear();
+ log.info("Clearing repositories cache (with included archives)...");
+ this.repoArchivesCacheAccess.clear();
log.info("Clearing cache with file lists of archives...");
this.archiveFilelistCache.removeAllCacheFiles();
}
@@ -66,19 +79,32 @@
this.repoCacheAccess.clear();
}
-/* public BorgRepoList getRepoList(String idOrName) {
+ /**
+ * @param idOrName
+ * @return The repository including all archives.
+ */
+ public Repository getRepositoryArchives(String idOrName) {
BorgRepoConfig repoConfig = ConfigurationHandler.getConfiguration().getRepoConfig(idOrName);
//ArchiveInfo archiveInfo = BorgCommands.info(repoConfig, repoConfig.getRepo());
- BorgRepoList repoList = repoListCacheAccess.get(repoConfig.getRepo());
- if (repoList == null) {
- repoList = BorgCommands.list(repoConfig);
- repoListCacheAccess.put(repoConfig.getRepo(), repoList);
+ Repository plainRepository = repoArchivesCacheAccess.get(repoConfig.getRepo());
+ if (plainRepository != null) {
+ return plainRepository;
}
+ plainRepository = repoCacheAccess.get(repoConfig.getRepo());
+ if (plainRepository == null) {
+ log.warn("Repo with name '" + idOrName + "' not found.");
+ return null;
+ }
+ BorgRepoList repoList = BorgCommands.list(repoConfig);
if (repoList == null) {
log.warn("Repo with name '" + idOrName + "' not found.");
+ return null;
}
- return repoList;
- }*/
+ Repository repository = ObjectUtils.clone(plainRepository);
+ repository.setArchives(repoList.getArchives());
+ repoArchivesCacheAccess.put(repoConfig.getRepo(), repository);
+ return repository;
+ }
public BorgFilesystemItem[] getArchiveContent(BorgRepoConfig repoConfig, BorgArchive archive) {
if (archive == null || StringUtils.isBlank(archive.getArchive())) {
@@ -114,6 +140,7 @@
Configuration configuration = ConfigurationHandler.getConfiguration();
this.jcsCache = JCSCache.getInstance();
this.repoCacheAccess = jcsCache.getJCSCache("repositories");
+ this.repoArchivesCacheAccess = jcsCache.getJCSCache("repositoriesArchives");
this.archiveFilelistCache = new ArchiveFilelistCache(getCacheDir(), configuration.getCacheArchiveContentMaxDiscSizeMB());
}
}
--
Gitblit v1.10.0