From f034a71a9357b877edc4f6bc8ceeebce1abec0a8 Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Sat, 15 Dec 2018 05:58:58 +0000
Subject: [PATCH] ...
---
borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java | 9 +++-
borgbutler-webapp/src/components/views/repos/RepoCard.jsx | 2
borgbutler-core/src/main/java/de/micromata/borgbutler/config/ConfigurationHandler.java | 6 +++
borgbutler-core/src/test/java/de/micromata/borgbutler/utils/DateUtilsTest.java | 2
borgbutler-webapp/src/containers/WebApp.jsx | 2
borgbutler-webapp/src/components/views/repos/RepoArchiveListView.jsx | 37 +++++++-----------
borgbutler-core/src/main/java/de/micromata/borgbutler/data/Repository.java | 9 ++++
borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java | 23 +++++------
borgbutler-core/src/main/java/de/micromata/borgbutler/utils/DateUtils.java | 13 +++++-
borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/ReposRest.java | 8 +++
10 files changed, 66 insertions(+), 45 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 2b14b34..9061fed 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
@@ -20,6 +20,7 @@
import java.io.IOException;
import java.io.OutputStream;
+import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -45,11 +46,12 @@
.setId(borgRepository.getId())
.setName(repoConfig.getRepo())
.setDisplayName(repoConfig.getDisplayName())
- .setLastModified(DateUtils.get(borgRepository.getLastModified()))
+ .setLastModified(DateUtils.format(borgRepository.getLastModified()))
.setLocation(borgRepository.getLocation())
.setCache(repoInfo.getCache())
.setEncryption(repoInfo.getEncryption())
- .setSecurityDir(repoInfo.getSecurityDir());
+ .setSecurityDir(repoInfo.getSecurityDir())
+ .setLastCacheRefresh(DateUtils.format(LocalDateTime.now()));
return repository;
}
@@ -72,7 +74,8 @@
log.error("Can't load archives from repo '" + masterRepository.getName() + "'.");
return null;
}
- masterRepository.setLastModified(repoList.getRepository().getLastModified());
+ masterRepository.setLastModified(DateUtils.format(repoList.getRepository().getLastModified()))
+ .setLastCacheRefresh(DateUtils.format(LocalDateTime.now()));
Repository repository = ObjectUtils.clone(masterRepository)
.setArchives(repoList.getArchives());
return repository;
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 23cd648..fe2fa22 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
@@ -69,15 +69,6 @@
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.
*/
@@ -94,9 +85,8 @@
}
public void clearAllCaches() {
- this.repoCacheAccess.clear();
- log.info("Clearing repositories cache (with included archives)...");
- this.repoArchivesCacheAccess.clear();
+ clearRepoCacheAccess();
+ clearRepoArchicesCacheAccess();
log.info("Clearing cache with file lists of archives...");
this.archiveFilelistCache.removeAllCacheFiles();
}
@@ -106,6 +96,11 @@
this.repoCacheAccess.clear();
}
+ public void clearRepoArchicesCacheAccess() {
+ log.info("Clearing repositories cache (with included archives)...");
+ this.repoArchivesCacheAccess.clear();
+ }
+
/**
* @param idOrName
* @return The repository including all archives.
@@ -119,7 +114,9 @@
if (repository != null) {
return repository;
}
- repository = BorgCommands.list(getBorgRepoConfig(masterRepository.getName()), masterRepository);
+ BorgRepoConfig repoConfig = ConfigurationHandler.getConfiguration().getRepoConfig(masterRepository.getName());
+ repository = BorgCommands.list(repoConfig, masterRepository);
+ if (repository == null) return null;
repoArchivesCacheAccess.put(repository.getName(), repository);
return repository;
}
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/config/ConfigurationHandler.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/config/ConfigurationHandler.java
index c85144d..0ca8f06 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/config/ConfigurationHandler.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/config/ConfigurationHandler.java
@@ -3,6 +3,7 @@
import de.micromata.borgbutler.json.JsonUtils;
import lombok.Getter;
import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -34,6 +35,11 @@
try {
String json = FileUtils.readFileToString(configFile, Definitions.STD_CHARSET);
this.configuration = JsonUtils.fromJson(Configuration.class, json);
+ for (BorgRepoConfig repoConfig : this.configuration.getRepoConfigs()) {
+ if (StringUtils.isBlank(repoConfig.getDisplayName())) {
+ repoConfig.setDisplayName(repoConfig.getRepo());
+ }
+ }
} catch (IOException ex) {
log.error("Error while trying to read from config file: " + configFile.getAbsolutePath() + ": " + ex.getMessage(), ex);
return;
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 6246326..4c2fbc7 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
@@ -35,9 +35,18 @@
@Getter
@Setter
private String id;
+ /**
+ * Date given by Borg server.
+ */
@Getter
@Setter
private String lastModified;
+ /**
+ * Last date of getting this object from Borg server.
+ */
+ @Getter
+ @Setter
+ private String lastCacheRefresh;
@Getter
@Setter
private String location;
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/utils/DateUtils.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/utils/DateUtils.java
index 168049d..55278b6 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/utils/DateUtils.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/utils/DateUtils.java
@@ -4,12 +4,21 @@
import java.time.format.DateTimeFormatter;
public class DateUtils {
+ private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
/**
* @param borgDateTime
* @return
*/
- public static String get(String borgDateTime) {
+ public static String format(String borgDateTime) {
LocalDateTime dateTime = LocalDateTime.parse(borgDateTime);
- return dateTime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);
+ return format(dateTime);
+ }
+
+ /**
+ * @param dateTime
+ * @return
+ */
+ public static String format(LocalDateTime dateTime) {
+ return dateTime.format(DATE_TIME_FORMATTER);
}
}
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 543789c..0331d9b 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
@@ -12,6 +12,6 @@
@Test
void parseTest() {
- assertEquals("2018-11-21T22:31:51",DateUtils.get("2018-11-21T22:31:51.000000"));
+ assertEquals("2018-11-21 22:31:51",DateUtils.format("2018-11-21T22:31:51.000000"));
}
}
diff --git a/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/ReposRest.java b/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/ReposRest.java
index e45f177..66d914e 100644
--- a/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/ReposRest.java
+++ b/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/ReposRest.java
@@ -25,6 +25,7 @@
/**
*
* @param id id or name of repo.
+ * @param force If true, a reload of all repositories is forced.
* @param prettyPrinter If true then the json output will be in pretty format.
* @return Repository (without list of archives) as json string.
* @see JsonUtils#toJson(Object, boolean)
@@ -44,7 +45,11 @@
* @return Repository (including list of archives) as json string.
* @see JsonUtils#toJson(Object, boolean)
*/
- public String getRepoArchiveList(@QueryParam("id") String id, @QueryParam("prettyPrinter") boolean prettyPrinter) {
+ public String getRepoArchiveList(@QueryParam("id") String id, @QueryParam("force") boolean force,
+ @QueryParam("prettyPrinter") boolean prettyPrinter) {
+ if (force) {
+ ButlerCache.getInstance().clearRepoArchicesCacheAccess();
+ }
Repository repository = ButlerCache.getInstance().getRepositoryArchives(id);
return JsonUtils.toJson(repository, prettyPrinter);
}
@@ -62,6 +67,7 @@
public String getList(@QueryParam("force") boolean force, @QueryParam("prettyPrinter") boolean prettyPrinter) {
if (force) {
ButlerCache.getInstance().clearRepoCacheAccess();
+ ButlerCache.getInstance().clearRepoArchicesCacheAccess();
}
List<Repository> repositories = ButlerCache.getInstance().getAllRepositories();
if (CollectionUtils.isEmpty(repositories)) {
diff --git a/borgbutler-webapp/src/components/views/repos/RepoArchiveListView.jsx b/borgbutler-webapp/src/components/views/repos/RepoArchiveListView.jsx
index 52608e8..f81f360 100644
--- a/borgbutler-webapp/src/components/views/repos/RepoArchiveListView.jsx
+++ b/borgbutler-webapp/src/components/views/repos/RepoArchiveListView.jsx
@@ -6,9 +6,8 @@
class RepoArchiveListView extends React.Component {
-
- path = getRestServiceUrl('repos');
state = {
+ id: this.props.match.params.id,
isFetching: false
};
@@ -16,13 +15,16 @@
this.fetchRepos();
};
+
fetchRepos = (force) => {
this.setState({
isFetching: true,
- failed: false,
- repos: undefined
+ failed: false
});
- fetch(`${this.path}/list?force=${force}`, {
+ fetch(getRestServiceUrl('repos/repoArchiveList', {
+ id: this.state.id,
+ force: force
+ }), {
method: 'GET',
headers: {
'Accept': 'application/json'
@@ -30,18 +32,9 @@
})
.then(response => response.json())
.then(json => {
- const repos = json.map(repo => {
- return {
- id: repo.id,
- name: repo.name,
- location: repo.location,
- lastModified: repo.last_modified
- };
- });
-
this.setState({
isFetching: false,
- repos
+ repo: json
})
})
.catch(() => this.setState({isFetching: false, failed: true}));
@@ -49,13 +42,12 @@
render = () => {
let content = undefined;
+ const repo = this.state.repo;
+ let pageHeader = '';
if (this.state.isFetching) {
-
content = <i>Loading...</i>;
-
} else if (this.state.failed) {
-
content = <ErrorAlert
title={'Cannot load Repositories'}
description={'Something went wrong during contacting the rest api.'}
@@ -64,10 +56,10 @@
title: 'Try again'
}}
/>;
-
- } else if (this.state.repos) {
-
+ } else if (this.state.repo) {
+ pageHeader = `${repo.displayName}`;
content = <React.Fragment>
+ {repo.displayName}
<div
className={'btn btn-outline-primary refresh-button-right'}
onClick={this.fetchRepos.bind(this, true)}
@@ -77,10 +69,9 @@
</React.Fragment>;
}
-
return <React.Fragment>
<PageHeader>
- Repositories
+ {pageHeader}
</PageHeader>
{content}
</React.Fragment>;
diff --git a/borgbutler-webapp/src/components/views/repos/RepoCard.jsx b/borgbutler-webapp/src/components/views/repos/RepoCard.jsx
index a1697ef..b04cfad 100644
--- a/borgbutler-webapp/src/components/views/repos/RepoCard.jsx
+++ b/borgbutler-webapp/src/components/views/repos/RepoCard.jsx
@@ -26,7 +26,7 @@
{repoText}
</ul>
</CardBody>
- <CardFooter><span className={'lastModified'}>Last modified: {repo.lastModified}</span></CardFooter>
+ <CardFooter><span className={'lastModified'}>Last refresh: {repo.lastCacheRefresh}, last modified: {repo.lastModified}</span></CardFooter>
</Card>
</React.Fragment>
};
diff --git a/borgbutler-webapp/src/containers/WebApp.jsx b/borgbutler-webapp/src/containers/WebApp.jsx
index eb84e03..a134531 100644
--- a/borgbutler-webapp/src/containers/WebApp.jsx
+++ b/borgbutler-webapp/src/containers/WebApp.jsx
@@ -51,7 +51,7 @@
/>
))
}
- <Route path={'/repoArchives/:repoId'} component={RepoArchiveListView}/>
+ <Route path={'/repoArchives/:id'} component={RepoArchiveListView}/>
</Switch>
</div>
<Footer versionInfo={this.props.version}/>
--
Gitblit v1.10.0