From 78d82418ff8fa4212dbdeec904512092f1a5ac67 Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Sat, 15 Dec 2018 23:52:13 +0000
Subject: [PATCH] ...
---
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgArchive2.java | 9 +++
borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java | 22 ++++--
borgbutler-webapp/src/components/views/repos/ArchiveView.jsx | 79 ++++++++++++++++++++++++--
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgArchive.java | 4 -
borgbutler-core/src/main/java/de/micromata/borgbutler/data/Archive.java | 19 ++++++
borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java | 7 ++
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgArchiveLimits.java | 13 ++++
borgbutler-core/src/main/java/de/micromata/borgbutler/utils/DateUtils.java | 3 +
8 files changed, 137 insertions(+), 19 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 75bff07..ef5d6e3 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
@@ -83,7 +83,8 @@
.setStart(DateUtils.format(borgArchive.getStart()))
.setTime(DateUtils.format(borgArchive.getTime()))
.setRepoId(repository.getId())
- .setRepoName(repository.getName());
+ .setRepoName(repository.getName())
+ .setRepoDisplayName(repoConfig.getDisplayName());
repository.add(archive);
}
}
@@ -119,13 +120,18 @@
if (archiveInfo.getArchives().size() > 1) {
log.warn("Archive '" + archiveFullname + "' contains more than one archives!? (Using only first.)");
}
- BorgArchive2 borgArchive2 = archiveInfo.getArchives().get(0);
- archive.setStart(DateUtils.format(borgArchive2.getStart()))
- .setChunkerParams(borgArchive2.getChunkerParams())
- .setCommandLine(borgArchive2.getCommandLine())
- .setComment(borgArchive2.getComment())
- .setStats(borgArchive2.getStats())
- .setUsername(borgArchive2.getUsername());
+ BorgArchive2 borgArchive = archiveInfo.getArchives().get(0);
+ archive.setStart(DateUtils.format(borgArchive.getStart()))
+ .setChunkerParams(borgArchive.getChunkerParams())
+ .setCommandLine(borgArchive.getCommandLine())
+ .setComment(borgArchive.getComment())
+ .setStats(borgArchive.getStats())
+ .setLimits(borgArchive.getLimits())
+ .setHostname(borgArchive.getHostname())
+ .setUsername(borgArchive.getUsername())
+ .setEnd(DateUtils.format(borgArchive.getEnd()))
+ .setDuration(borgArchive.getDuration())
+ ;
}
public static List<BorgFilesystemItem> listArchiveContent(BorgRepoConfig repoConfig, String archiveId) {
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 88e838d..07914e9 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
@@ -57,7 +57,12 @@
* @return Repository.
*/
private Repository getRepository(BorgRepoConfig repoConfig) {
- Repository repository = repoCacheAccess.get(repoConfig.getRepo());
+ Repository repository = null;
+ try {
+ repository = repoCacheAccess.get(repoConfig.getRepo());
+ } catch (Exception ex) {
+ log.warn("Error while deserializing repository (maybe data format was changed). Reloading...");
+ }
if (repository == null || repository.getLocation() == null) {
repository = BorgCommands.info(repoConfig);
repoCacheAccess.put(repoConfig.getRepo(), repository);
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/data/Archive.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/data/Archive.java
index 0d2547a..5d1dd77 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/data/Archive.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/data/Archive.java
@@ -1,5 +1,6 @@
package de.micromata.borgbutler.data;
+import de.micromata.borgbutler.json.borg.BorgArchiveLimits;
import de.micromata.borgbutler.json.borg.BorgArchiveStats;
import de.micromata.borgbutler.json.borg.BorgCache;
import de.micromata.borgbutler.json.borg.BorgEncryption;
@@ -24,6 +25,12 @@
*/
@Getter
@Setter
+ private String repoDisplayName;
+ /**
+ * For convenience purposes for the client.
+ */
+ @Getter
+ @Setter
private String repoId;
@Getter
@Setter
@@ -55,13 +62,25 @@
private String start;
@Getter
@Setter
+ private String end;
+ @Getter
+ @Setter
private String time;
@Getter
@Setter
+ private String duration;
+ @Getter
+ @Setter
private BorgArchiveStats stats;
@Getter
@Setter
+ private BorgArchiveLimits limits;
+ @Getter
+ @Setter
private String username;
+ @Getter
+ @Setter
+ private String hostname;
/**
*
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgArchive.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgArchive.java
index 3af01f3..48ca036 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgArchive.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgArchive.java
@@ -2,7 +2,6 @@
import de.micromata.borgbutler.json.JsonUtils;
import lombok.Getter;
-import lombok.Setter;
import java.io.Serializable;
@@ -20,12 +19,11 @@
@Getter
private String name;
@Getter
- @Setter
private String start;
@Getter
- @Setter
private String time;
+
public String toString() {
return JsonUtils.toJson(this, true);
}
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgArchive2.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgArchive2.java
index 3ed36d9..78c8d59 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgArchive2.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgArchive2.java
@@ -25,9 +25,18 @@
@Getter
private String start;
@Getter
+ private String end;
+ @Getter
+ private String duration;
+ @Getter
private BorgArchiveStats stats;
@Getter
+ private BorgArchiveLimits limits;
+ @Getter
+ private String hostname;
+ @Getter
private String username;
+
public String toString() {
return JsonUtils.toJson(this, true);
}
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgArchiveLimits.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgArchiveLimits.java
new file mode 100644
index 0000000..c9f7f06
--- /dev/null
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgArchiveLimits.java
@@ -0,0 +1,13 @@
+package de.micromata.borgbutler.json.borg;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+
+import java.io.Serializable;
+
+public class BorgArchiveLimits implements Serializable {
+ private static final long serialVersionUID = -3079958893130481516L;
+ @JsonProperty("max_archive_size")
+ @Getter
+ private double maxArchiveSize;
+}
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 55278b6..263b550 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
@@ -10,6 +10,9 @@
* @return
*/
public static String format(String borgDateTime) {
+ if (borgDateTime == null) {
+ return null;
+ }
LocalDateTime dateTime = LocalDateTime.parse(borgDateTime);
return format(dateTime);
}
diff --git a/borgbutler-webapp/src/components/views/repos/ArchiveView.jsx b/borgbutler-webapp/src/components/views/repos/ArchiveView.jsx
index 1beea1a..c26f4c6 100644
--- a/borgbutler-webapp/src/components/views/repos/ArchiveView.jsx
+++ b/borgbutler-webapp/src/components/views/repos/ArchiveView.jsx
@@ -1,7 +1,7 @@
import React from 'react'
import {Table} from 'reactstrap';
import {PageHeader} from '../../general/BootstrapComponents';
-import {getRestServiceUrl} from '../../../utilities/global';
+import {getRestServiceUrl, humanFileSize, humanSeconds} from '../../../utilities/global';
import ErrorAlert from '../../general/ErrorAlert';
import {IconRefresh} from "../../general/IconComponents";
@@ -46,7 +46,7 @@
render = () => {
let content = undefined;
- const archive = this.state.archive;
+ let archive = this.state.archive;
let pageHeader = '';
if (this.state.isFetching) {
@@ -60,9 +60,9 @@
title: 'Try again'
}}
/>;
- } else if (this.state.repo) {
+ } else if (this.state.archive) {
pageHeader = <React.Fragment>
- {archive.id}
+ {archive.repoDisplayName}
<div
className={'btn btn-outline-primary refresh-button-right'}
onClick={this.fetchArchive.bind(this, true)}
@@ -74,9 +74,74 @@
<Table hover>
<tbody>
<tr>
- <th>Archive</th>
- <th>Time</th>
- <th>Id</th>
+ <td>Archive</td>
+ <td>{archive.name}</td>
+ </tr>
+ <tr>
+ <td>Start - end</td>
+ <td>{archive.start} - {archive.end} (Duration: {humanSeconds(archive.duration)})</td>
+ </tr>
+ <tr>
+ <td>Id</td>
+ <td>{archive.id}</td>
+ </tr>
+ <tr>
+ <td>Stats</td>
+ <td>
+ <table className="inline">
+ <tbody>
+ <tr>
+ <td>Compressed size</td>
+ <td>{humanFileSize(archive.stats.compressed_size)}</td>
+ </tr>
+ <tr>
+ <td>Deduplicated size</td>
+ <td>{humanFileSize(archive.stats.deduplicated_size)}</td>
+ </tr>
+ <tr>
+ <td>Original size</td>
+ <td>{humanFileSize(archive.stats.original_size)}</td>
+ </tr>
+ <tr>
+ <td>Nfiles</td>
+ <td>{Number(archive.stats.nfiles).toLocaleString()}</td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td>Comment</td>
+ <td>{archive.comment}</td>
+ </tr>
+ <tr>
+ <td>Command line</td>
+ <td>{archive.commandLine.join(' ')}</td>
+ </tr>
+ <tr>
+ <td>Host name</td>
+ <td>{archive.hostname}</td>
+ </tr>
+ <tr>
+ <td>User name</td>
+ <td>{archive.username}</td>
+ </tr>
+ <tr>
+ <td>Chunker params</td>
+ <td>{archive.chunkerParams.join(', ')}</td>
+ </tr>
+ <tr>
+ <td>Limits</td>
+ <td>
+ <table className="inline">
+ <tbody>
+ <tr>
+ <td>max_archive_size</td>
+ <td>{archive.limits.max_archive_size}</td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
</tr>
</tbody>
</Table>
--
Gitblit v1.10.0