From 3a8b25a696e7e7e26ec655275d0af50ace95f2db Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Sun, 30 Dec 2018 05:47:47 +0000
Subject: [PATCH] List archive content: Creating file list on the fly (for saving memory).
---
borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java | 20 ++++++++++----------
1 files changed, 10 insertions(+), 10 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 5cb93d6..aeb5894 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
@@ -19,7 +19,6 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import java.util.Scanner;
/**
* Creates and executes borg commands by calling system's borg application (Borg must be installed).
@@ -174,18 +173,19 @@
.setParams("--json-lines")
.setDescription("Loading list of files of archive '" + archive.getName() + "' of repo '" + repoConfig.getDisplayName() + "'.");
List<BorgFilesystemItem> content = new ArrayList<>();
- JobResult<String> jobResult = execute(command).getResult();
- if (jobResult.getStatus() != JobResult.Status.OK) {
- return content;
- }
- String result = jobResult.getResultObject();
- try (Scanner scanner = new Scanner(result)) {
- while (scanner.hasNextLine()) {
- String json = scanner.nextLine();
- BorgFilesystemItem item = JsonUtils.fromJson(BorgFilesystemItem.class, json);
+ // The returned job might be an already queued or running one!
+ BorgJob job = BorgQueueExecutor.getInstance().execute(new BorgJob(command) {
+ @Override
+ protected void processStdOutLine(String line, int level) {
+ BorgFilesystemItem item = JsonUtils.fromJson(BorgFilesystemItem.class, line);
item.setMtime(DateUtils.format(item.getMtime()));
content.add(item);
}
+ });
+
+ JobResult<String> jobResult = job.getResult();
+ if (jobResult.getStatus() != JobResult.Status.OK) {
+ return content;
}
Collections.sort(content); // Sort by path.
return content;
--
Gitblit v1.10.0