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/ArchiveFilelistCache.java | 3 +
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgRepository.java | 5 ++
borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java | 2
borgbutler-core/src/test/java/de/micromata/borgbutler/utils/DateUtilsTest.java | 10 ----
borgbutler-core/src/main/java/de/micromata/borgbutler/data/Repository.java | 18 ++++++--
borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java | 47 ++++++++++++++++++-----
borgbutler-core/src/test/java/de/micromata/borgbutler/cache/CacheTest.java | 17 ++++----
7 files changed, 67 insertions(+), 35 deletions(-)
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
index 1a01d23..cca1438 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
@@ -112,7 +112,7 @@
//executor.setExitValue(2);
//ExecuteWatchdog watchdog = new ExecuteWatchdog(60000);
//executor.setWatchdog(watchdog);
- ExecuteResultHandler handler = new DefaultExecuteResultHandler();
+ // ExecuteResultHandler handler = new DefaultExecuteResultHandler();
PumpStreamHandler streamHandler = new PumpStreamHandler(outputStream);
executor.setStreamHandler(streamHandler);
String borgCall = cmdLine.getExecutable() + " " + StringUtils.join(cmdLine.getArguments(), " ");
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ArchiveFilelistCache.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ArchiveFilelistCache.java
index 3e272cc..4b9ef45 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ArchiveFilelistCache.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ArchiveFilelistCache.java
@@ -91,7 +91,8 @@
if (obj instanceof BorgFilesystemItem) {
list[i] = (BorgFilesystemItem) obj;
} else {
- log.error("Can't load archive content. FilesystemItem expected, but received: " + obj.getClass()
+ log.error("Can't load archive content. FilesystemItem expected, but received: "
+ + (obj != null ? obj.getClass() : "null")
+ " at position " + i + ".");
return null;
}
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());
}
}
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/data/Repository.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/data/Repository.java
index 9db8ee3..e6780fe 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/data/Repository.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/data/Repository.java
@@ -1,17 +1,19 @@
package de.micromata.borgbutler.data;
import de.micromata.borgbutler.config.BorgRepoConfig;
+import de.micromata.borgbutler.json.borg.BorgArchive;
import de.micromata.borgbutler.json.borg.BorgCache;
import de.micromata.borgbutler.json.borg.BorgEncryption;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
+import java.util.List;
/**
* Part of Borg json objects to refer objects to repositories.
*/
-public class Repository implements Serializable {
+public class Repository implements Serializable, Cloneable {
private static final long serialVersionUID = 1278802519434516280L;
/**
* A name describing this config. Only used for displaying purposes. This is automatically set with the name
@@ -25,9 +27,6 @@
@Getter
@Setter
private String id;
- /**
- * UTC date.
- */
@Getter
@Setter
private String lastModified;
@@ -45,6 +44,15 @@
@Setter
private BorgEncryption encryption;
- public Repository() {
+ /**
+ * Might be null.
+ */
+ @Getter
+ @Setter
+ private List<BorgArchive> archives;
+
+ @Override
+ public Object clone() throws CloneNotSupportedException {
+ return super.clone();
}
}
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgRepository.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgRepository.java
index a12db4f..94e5062 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgRepository.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgRepository.java
@@ -6,10 +6,13 @@
import lombok.Getter;
import lombok.Setter;
+import java.io.Serializable;
+
/**
* Part of Borg json objects to refer objects to repositories.
*/
-public class BorgRepository {
+public class BorgRepository implements Serializable {
+ private static final long serialVersionUID = 1278802519434516280L;
/**
* A name describing this config. Only used for displaying purposes. This is automatically set with the name
* of the repository configuration.
diff --git a/borgbutler-core/src/test/java/de/micromata/borgbutler/cache/CacheTest.java b/borgbutler-core/src/test/java/de/micromata/borgbutler/cache/CacheTest.java
index 6544eff..d5fdcc4 100644
--- a/borgbutler-core/src/test/java/de/micromata/borgbutler/cache/CacheTest.java
+++ b/borgbutler-core/src/test/java/de/micromata/borgbutler/cache/CacheTest.java
@@ -6,6 +6,7 @@
import de.micromata.borgbutler.data.Repository;
import de.micromata.borgbutler.json.borg.BorgArchive;
import de.micromata.borgbutler.json.borg.BorgFilesystemItem;
+import org.apache.commons.collections4.CollectionUtils;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -33,22 +34,22 @@
}
assertEquals(config.getRepoConfigs().size(), ButlerCache.getInstance().getAllRepositories().size());
}
-/* {
+ {
for (BorgRepoConfig repoConfig : ConfigurationHandler.getConfiguration().getRepoConfigs()) {
- BorgRepoList repoList = ButlerCache.getInstance().getRepoList(repoConfig.getRepo());
+ Repository repository = ButlerCache.getInstance().getRepositoryArchives(repoConfig.getRepo());
}
assertEquals(config.getRepoConfigs().size(), ButlerCache.getInstance().getAllRepositories().size());
- }*/
+ }
List<BorgRepoConfig> repoConfigs = ConfigurationHandler.getConfiguration().getRepoConfigs();
BorgArchive archive = null;
BorgRepoConfig repoConfig = null;
-/* if (CollectionUtils.isNotEmpty(repoConfigs)) {
+ if (CollectionUtils.isNotEmpty(repoConfigs)) {
repoConfig = repoConfigs.get(0);
- BorgRepoList repoList = ButlerCache.getInstance().getRepoList(repoConfig.getRepo());
- if (repoList != null && CollectionUtils.isNotEmpty(repoList.getArchives())) {
- archive = repoList.getArchives().get(0);
+ Repository rerepositoryoList = ButlerCache.getInstance().getRepositoryArchives(repoConfig.getRepo());
+ if (rerepositoryoList != null && CollectionUtils.isNotEmpty(rerepositoryoList.getArchives())) {
+ archive = rerepositoryoList.getArchives().get(0);
}
- }*/
+ }
{
if (archive != null) {
BorgFilesystemItem[] content = ButlerCache.getInstance().getArchiveContent(repoConfig, archive);
diff --git a/borgbutler-core/src/test/java/de/micromata/borgbutler/utils/DateUtilsTest.java b/borgbutler-core/src/test/java/de/micromata/borgbutler/utils/DateUtilsTest.java
index 31425e0..543789c 100644
--- a/borgbutler-core/src/test/java/de/micromata/borgbutler/utils/DateUtilsTest.java
+++ b/borgbutler-core/src/test/java/de/micromata/borgbutler/utils/DateUtilsTest.java
@@ -4,8 +4,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.time.LocalDateTime;
-
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -14,12 +12,6 @@
@Test
void parseTest() {
- LocalDateTime dateTime = DateUtils.get("2018-11-21T22:31:51.000000");
- assertEquals(2018, dateTime.getYear());
- assertEquals(11, dateTime.getMonthValue());
- assertEquals(21, dateTime.getDayOfMonth());
- assertEquals(22, dateTime.getHour());
- assertEquals(31, dateTime.getMinute());
- assertEquals(51, dateTime.getSecond());
+ assertEquals("2018-11-21T22:31:51",DateUtils.get("2018-11-21T22:31:51.000000"));
}
}
--
Gitblit v1.10.0