From 19732b785f222871a76f931213587b2c04cc1e10 Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Fri, 14 Dec 2018 21:56:53 +0000
Subject: [PATCH] ...
---
borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java | 58 ++++++++++++++++++++++++++++++++++++++--------------------
1 files changed, 38 insertions(+), 20 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 2598f7c..23cd648 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,11 +7,9 @@
import de.micromata.borgbutler.data.Repository;
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;
@@ -40,24 +38,53 @@
*/
public Repository getRepository(String idOrName) {
BorgRepoConfig repoConfig = ConfigurationHandler.getConfiguration().getRepoConfig(idOrName);
+ if (repoConfig != null) {
+ return getRepository(repoConfig);
+ }
+ List<Repository> repositories = getAllRepositories();
+ if (CollectionUtils.isNotEmpty(repositories)) {
+ for (Repository repository : repositories) {
+ if (StringUtils.equals(idOrName, repository.getName()) || StringUtils.equals(idOrName, repository.getId())) {
+ return repository;
+ }
+ }
+ }
+ log.warn("Repo with id or name '" + idOrName + "' not found.");
+ return null;
+ }
+
+ /**
+ * @param repoConfig
+ * @return Repository without list of archives.
+ */
+ private Repository getRepository(BorgRepoConfig repoConfig) {
Repository repository = repoCacheAccess.get(repoConfig.getRepo());
if (repository == null || repository.getLocation() == null) {
repository = BorgCommands.info(repoConfig);
repoCacheAccess.put(repoConfig.getRepo(), repository);
}
if (repository == null) {
- log.warn("Repo with name '" + idOrName + "' not found.");
+ log.warn("Repo with name '" + repoConfig.getRepo() + "' not found.");
}
return repository;
}
+ private BorgRepoConfig getBorgRepoConfig(String name) {
+ for (BorgRepoConfig repoConfig : ConfigurationHandler.getConfiguration().getRepoConfigs()) {
+ if (StringUtils.equals(repoConfig.getRepo(), name))
+ return repoConfig;
+ }
+ log.error("Repo config with name '" + name + "' not found.");
+ return null;
+ }
+
/**
* @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()) {
- Repository repository = getRepository(repoConfig.getName());
+ Repository repository = getRepository(repoConfig);
if (repository == null) {
continue;
}
@@ -84,25 +111,16 @@
* @return The repository including all archives.
*/
public Repository getRepositoryArchives(String idOrName) {
- BorgRepoConfig repoConfig = ConfigurationHandler.getConfiguration().getRepoConfig(idOrName);
- //ArchiveInfo archiveInfo = BorgCommands.info(repoConfig, repoConfig.getRepo());
- 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.");
+ Repository masterRepository = getRepository(idOrName);
+ if (masterRepository == null) {
return null;
}
- BorgRepoList repoList = BorgCommands.list(repoConfig);
- if (repoList == null) {
- log.warn("Repo with name '" + idOrName + "' not found.");
- return null;
+ Repository repository = repoArchivesCacheAccess.get(masterRepository.getName());
+ if (repository != null) {
+ return repository;
}
- Repository repository = ObjectUtils.clone(plainRepository);
- repository.setArchives(repoList.getArchives());
- repoArchivesCacheAccess.put(repoConfig.getRepo(), repository);
+ repository = BorgCommands.list(getBorgRepoConfig(masterRepository.getName()), masterRepository);
+ repoArchivesCacheAccess.put(repository.getName(), repository);
return repository;
}
--
Gitblit v1.10.0