From 4a337a1e7b82b9e15aa0904fc7aaeb48b15e15a8 Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Sun, 16 Dec 2018 19:01:22 +0000
Subject: [PATCH] File number for files of archive added (for specifiing in download).
---
borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ArchiveFilelistCache.java | 7 +++++--
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgFilesystemItem.java | 6 ++++++
borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java | 4 +++-
3 files changed, 14 insertions(+), 3 deletions(-)
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 7bf10a7..beb3c2b 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
@@ -97,11 +97,14 @@
int maxSize = filter != null ? filter.getMaxResultSize() : -1;
list = new ArrayList<>();
int counter = 0;
+ int fileNumber = -1;
for (int i = 0; i < size; i++) {
+ ++fileNumber;
obj = inputStream.readObject();
if (obj instanceof BorgFilesystemItem) {
- if (filter == null || filter.matches(((BorgFilesystemItem) obj))) {
- list.add((BorgFilesystemItem) obj);
+ BorgFilesystemItem item = (BorgFilesystemItem) obj;
+ if (filter == null || filter.matches(item)) {
+ list.add(item.setFileNumber(fileNumber));
if (maxSize > 0 && counter++ >= maxSize) break;
}
} else {
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 2e6c6c1..09891b4 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
@@ -238,11 +238,13 @@
archiveFilelistCache.save(repoConfig, archive, list);
items = new ArrayList<>();
int counter = 0;
+ int fileNumber = -1;
boolean search = filter != null && StringUtils.isNotBlank(filter.getSearchString());
int maxSize = filter != null ? filter.getMaxResultSize() : -1;
for (BorgFilesystemItem item : list) {
+ ++fileNumber;
if (filter == null || filter.matches(item)) {
- items.add(item);
+ items.add(item.setFileNumber(fileNumber));
if (maxSize > 0 && counter++ >= maxSize) break;
}
}
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgFilesystemItem.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgFilesystemItem.java
index 789fede..fb6c737 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgFilesystemItem.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/BorgFilesystemItem.java
@@ -41,6 +41,12 @@
private String mtime;
@Getter
private long size;
+ /**
+ * Represents the number of the file in the archive (for downloading). This field is created and only known by BorgButler.
+ */
+ @Getter
+ @Setter
+ private int fileNumber;
@Override
public int compareTo(BorgFilesystemItem o) {
--
Gitblit v1.10.0