From 53299b4114d02190d306c921d1685ebb3e6ad7c8 Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Sun, 13 Jan 2019 23:33:45 +0000
Subject: [PATCH] Demo mode...

---
 borgbutler-core/src/main/java/de/micromata/borgbutler/jobs/AbstractCommandLineJob.java           |    2 +-
 borgbutler-core/src/main/java/de/micromata/borgbutler/demo/DemoRepos.java                        |   27 +++++++++++++++++++++------
 borgbutler-core/src/main/resources/demodata/archive-info-borgbutlerdemo-2019-01-12_01-00.json.gz |    0 
 borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java                          |    4 ++--
 borgbutler-core/src/main/resources/demodata/archive-list-borgbutlerdemo-2019-01-12_01-00.json.gz |    0 
 borgbutler-core/src/main/java/de/micromata/borgbutler/BorgJob.java                               |    2 +-
 borgbutler-core/src/main/resources/demodata/archive-list-borgbutlerdemo-2019-01-13_01-00.json.gz |    0 
 borgbutler-core/src/main/resources/demodata/archive-info-borgbutlerdemo-2019-01-13_01-00.json.gz |    0 
 8 files changed, 25 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 a5c6355..c5ce9c1 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
@@ -178,7 +178,7 @@
                 .setTotal(archive.getStats().getNfiles());
         BorgJob<List<BorgFilesystemItem>> job = BorgQueueExecutor.getInstance().execute(new BorgJob<List<BorgFilesystemItem>>(command) {
             @Override
-            protected void processStdOutLine(String line, int level) {
+            public void processStdOutLine(String line, int level) {
                 BorgFilesystemItem item = JsonUtils.fromJson(BorgFilesystemItem.class, line);
                 item.setMtime(DateUtils.format(item.getMtime()));
                 payload.add(item);
@@ -190,7 +190,7 @@
         });
         job.payload = new ArrayList<>();
         JobResult<String> jobResult = job.getResult();
-        if (jobResult == null ||jobResult.getStatus() != JobResult.Status.OK) {
+        if (jobResult == null || jobResult.getStatus() != JobResult.Status.OK) {
             return null;
         }
         List<BorgFilesystemItem> items = job.payload;
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgJob.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgJob.java
index 5efda3d..650533a 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgJob.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgJob.java
@@ -107,7 +107,7 @@
     @Override
     public JobResult<String> execute() {
         if (DemoRepos.isDemo(command.getRepoConfig().getRepo())) {
-            return DemoRepos.execute(command);
+            return DemoRepos.execute(this);
         }
         return super.execute();
     }
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/demo/DemoRepos.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/demo/DemoRepos.java
index 3ed2295..32ee46f 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/demo/DemoRepos.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/demo/DemoRepos.java
@@ -1,6 +1,7 @@
 package de.micromata.borgbutler.demo;
 
 import de.micromata.borgbutler.BorgCommand;
+import de.micromata.borgbutler.BorgJob;
 import de.micromata.borgbutler.config.BorgRepoConfig;
 import de.micromata.borgbutler.config.ConfigurationHandler;
 import de.micromata.borgbutler.config.Definitions;
@@ -16,6 +17,7 @@
 import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Scanner;
 
 public class DemoRepos {
     private static Logger log = LoggerFactory.getLogger(DemoRepos.class);
@@ -43,23 +45,36 @@
         return StringUtils.startsWith(idOrName, DEMO_IDENTIFIER);
     }
 
-    public static JobResult<String> execute(BorgCommand command) {
+    public static JobResult<String> execute(BorgJob job) {
+        BorgCommand command = job.getCommand();
         StringBuilder sb = new StringBuilder();
-        if (command.getArchive() != null) {
+        boolean archive = command.getArchive() != null;
+        if (archive) {
             sb.append("archive-");
         } else {
             sb.append("repo-");
         }
         sb.append(command.getCommand());
-        if (command.getArchive() != null) {
+        if (archive) {
             sb.append("-").append(command.getArchive());
         }
         sb.append(".json.gz");
         String file = sb.toString();
+        log.info("Loading demo archive from '" + file + "'...");
         try (InputStream inputStream = new GzipCompressorInputStream(DemoRepos.class.getResourceAsStream("/demodata/" + file))) {
-            StringWriter writer = new StringWriter();
-            IOUtils.copy(inputStream, writer, Definitions.STD_CHARSET);
-            return new JobResult<String>().setResultObject(writer.toString()).setStatus(JobResult.Status.OK);
+            if (archive && "list".equals(command.getCommand())) {
+                try (Scanner scanner = new Scanner(inputStream)) {
+                    while (scanner.hasNextLine()) {
+                        String line = scanner.nextLine();
+                        job.processStdOutLine(line, 0);
+                    }
+                    return new JobResult<String>().setStatus(JobResult.Status.OK);
+                }
+            } else {
+                StringWriter writer = new StringWriter();
+                IOUtils.copy(inputStream, writer, Definitions.STD_CHARSET);
+                return new JobResult<String>().setResultObject(writer.toString()).setStatus(JobResult.Status.OK);
+            }
         } catch (IOException ex) {
             log.error("Error while reading demo file '" + file + "': " + ex.getMessage() + ".");
             return null;
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/jobs/AbstractCommandLineJob.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/jobs/AbstractCommandLineJob.java
index bccf7ea..c7675e3 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/jobs/AbstractCommandLineJob.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/jobs/AbstractCommandLineJob.java
@@ -101,7 +101,7 @@
         return result;
     }
 
-    protected void processStdOutLine(String line, int level) {
+    public void processStdOutLine(String line, int level) {
         //log.info(line);
         try {
             outputStream.write(line.getBytes());
diff --git a/borgbutler-core/src/main/resources/demodata/archive-info-borgbutlerdemo-2019-01-12_01-00.json.gz b/borgbutler-core/src/main/resources/demodata/archive-info-borgbutlerdemo-2019-01-12_01-00.json.gz
new file mode 100644
index 0000000..769e79d
--- /dev/null
+++ b/borgbutler-core/src/main/resources/demodata/archive-info-borgbutlerdemo-2019-01-12_01-00.json.gz
Binary files differ
diff --git a/borgbutler-core/src/main/resources/demodata/archive-info-borgbutlerdemo-2019-01-13_01-00.json.gz b/borgbutler-core/src/main/resources/demodata/archive-info-borgbutlerdemo-2019-01-13_01-00.json.gz
new file mode 100644
index 0000000..69dd0f5
--- /dev/null
+++ b/borgbutler-core/src/main/resources/demodata/archive-info-borgbutlerdemo-2019-01-13_01-00.json.gz
Binary files differ
diff --git a/borgbutler-core/src/main/resources/demodata/archive-list-borgbutlerdemo-2019-01-12_01-00.json.gz b/borgbutler-core/src/main/resources/demodata/archive-list-borgbutlerdemo-2019-01-12_01-00.json.gz
new file mode 100644
index 0000000..00cad35
--- /dev/null
+++ b/borgbutler-core/src/main/resources/demodata/archive-list-borgbutlerdemo-2019-01-12_01-00.json.gz
Binary files differ
diff --git a/borgbutler-core/src/main/resources/demodata/archive-list-borgbutlerdemo-2019-01-13_01-00.json.gz b/borgbutler-core/src/main/resources/demodata/archive-list-borgbutlerdemo-2019-01-13_01-00.json.gz
new file mode 100644
index 0000000..c9321b9
--- /dev/null
+++ b/borgbutler-core/src/main/resources/demodata/archive-list-borgbutlerdemo-2019-01-13_01-00.json.gz
Binary files differ

--
Gitblit v1.10.0