From 1c087fae322a1b07bb7bd554ee10ff473c47c727 Mon Sep 17 00:00:00 2001
From: Fin Reinhard <fin.reinhard@icloud.com>
Date: Tue, 22 Jan 2019 20:51:03 +0000
Subject: [PATCH] Merge branch 'master' into feature/15-archive-view-url

---
 borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/JobsRest.java |   74 ++++++++++++++++++-------------------
 1 files changed, 36 insertions(+), 38 deletions(-)

diff --git a/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/JobsRest.java b/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/JobsRest.java
index 14f1525..be744f0 100644
--- a/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/JobsRest.java
+++ b/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/JobsRest.java
@@ -26,10 +26,8 @@
 public class JobsRest {
     private static Logger log = LoggerFactory.getLogger(JobsRest.class);
 
-    private static List<JsonJobQueue> testList;
+    private static List<JsonJobQueue> testList, oldJobsTestList;
 
-    @GET
-    @Produces(MediaType.APPLICATION_JSON)
     /**
      * @param repo If given, only the job queue of the given repo will be returned.
      * @param testMode If true, then a test job list is created.
@@ -37,12 +35,16 @@
      * @return Job queues as json string.
      * @see JsonUtils#toJson(Object, boolean)
      */
+    @GET
+    @Produces(MediaType.APPLICATION_JSON)
     public String getJobs(@QueryParam("repo") String repo,
                           @QueryParam("testMode") boolean testMode,
+                          @QueryParam("oldJobs") boolean oldJobs,
                           @QueryParam("prettyPrinter") boolean prettyPrinter) {
+        log.debug("getJobs repo=" + repo + ", oldJobs=" + oldJobs);
         if (testMode) {
             // Return dynamic test queue:
-            return returnTestList(prettyPrinter);
+            return returnTestList(oldJobs, prettyPrinter);
         }
         boolean validRepo = false;
         if (StringUtils.isNotBlank(repo) && !"null".equals(repo) && !"undefined".equals(repo)) {
@@ -51,13 +53,13 @@
         BorgQueueExecutor borgQueueExecutor = BorgQueueExecutor.getInstance();
         List<JsonJobQueue> queueList = new ArrayList<>();
         if (validRepo) { // Get only the queue of the given repo:
-            JsonJobQueue queue = getQueue(repo);
+            JsonJobQueue queue = getQueue(repo, oldJobs);
             if (queue != null) {
                 queueList.add(queue);
             }
         } else { // Get all the queues (of all repos).
             for (String rep : borgQueueExecutor.getRepos()) {
-                JsonJobQueue queue = getQueue(rep);
+                JsonJobQueue queue = getQueue(rep, oldJobs);
                 if (queue != null) {
                     queueList.add(queue);
                 }
@@ -66,24 +68,13 @@
         return JsonUtils.toJson(queueList, prettyPrinter);
     }
 
-    @GET
-    @Produces(MediaType.APPLICATION_JSON)
-    @Path("/statistics")
-    /**
-     * @return The total number of jobs queued or running (and other statistics): {@link de.micromata.borgbutler.BorgQueueStatistics}.
-     * @see JsonUtils#toJson(Object, boolean)
-     */
-    public String getStatistics() {
-        return JsonUtils.toJson(BorgQueueExecutor.getInstance().getStatistics());
-    }
-
-    private JsonJobQueue getQueue(String repo) {
+    private JsonJobQueue getQueue(String repo, boolean oldJobs) {
         BorgQueueExecutor borgQueueExecutor = BorgQueueExecutor.getInstance();
         BorgRepoConfig repoConfig = ConfigurationHandler.getConfiguration().getRepoConfig(repo);
         if (repoConfig == null) {
             return null;
         }
-        List<BorgJob<?>> borgJobList = borgQueueExecutor.getJobListCopy(repoConfig);
+        List<BorgJob<?>> borgJobList = borgQueueExecutor.getJobListCopy(repoConfig, oldJobs);
         if (CollectionUtils.isEmpty(borgJobList))
             return null;
         JsonJobQueue queue = new JsonJobQueue().setRepo(repoConfig.getDisplayName());
@@ -95,11 +86,11 @@
         return queue;
     }
 
-    @Path("/cancel")
-    @GET
     /**
      * @param uniqueJobNumberString The id of the job to cancel.
      */
+    @Path("/cancel")
+    @GET
     public void cancelJob(@QueryParam("uniqueJobNumber") String uniqueJobNumberString) {
         Long uniqueJobNumber = null;
         try {
@@ -114,28 +105,31 @@
     /**
      * Only for test purposes and development.
      *
+     * @param oldJobs
      * @param prettyPrinter
      * @return
      */
-    private String returnTestList(boolean prettyPrinter) {
-        if (testList == null) {
-            testList = new ArrayList<>();
+    private String returnTestList(boolean oldJobs, boolean prettyPrinter) {
+        List<JsonJobQueue> list = oldJobs ? oldJobsTestList : testList;
+        if (list == null) {
+            list = new ArrayList<>();
             long uniqueJobNumber = 100000;
             JsonJobQueue queue = new JsonJobQueue().setRepo("My Computer");
-            addTestJob(queue, "info", "my-macbook", 0, 2342)
-                    .setUniqueJobNumber(uniqueJobNumber++);
-            addTestJob(queue, "list", "my-macbook", -1, -1)
-                    .setUniqueJobNumber(uniqueJobNumber++);
-            testList.add(queue);
+            addTestJob(queue, "info", "my-macbook", 0, 2342, uniqueJobNumber++, oldJobs);
+            addTestJob(queue, "list", "my-macbook", -1, -1, uniqueJobNumber++, oldJobs);
+            list.add(queue);
 
             queue = new JsonJobQueue().setRepo("My Server");
-            addTestJob(queue, "list", "my-server", 0, 1135821)
-                    .setUniqueJobNumber(uniqueJobNumber++);
-            addTestJob(queue, "info", "my-server", -1, -1)
-                    .setUniqueJobNumber(uniqueJobNumber++);
-            testList.add(queue);
-        } else {
-            for (JsonJobQueue jobQueue : testList) {
+            addTestJob(queue, "list", "my-server", 0, 1135821, uniqueJobNumber++, oldJobs);
+            addTestJob(queue, "info", "my-server", -1, -1, uniqueJobNumber++, oldJobs);
+            list.add(queue);
+            if (oldJobs) {
+                oldJobsTestList = list;
+            } else {
+                testList = list;
+            }
+        } else if (!oldJobs) {
+            for (JsonJobQueue jobQueue : list) {
                 for (JsonJob job : jobQueue.getJobs()) {
                     if (job.getStatus() != AbstractJob.Status.RUNNING) continue;
                     long current = job.getProgressInfo().getCurrent();
@@ -158,7 +152,7 @@
                 }
             }
         }
-        return JsonUtils.toJson(testList, prettyPrinter);
+        return JsonUtils.toJson(list, prettyPrinter);
     }
 
     /**
@@ -171,7 +165,7 @@
      * @param total
      * @return
      */
-    private JsonJob addTestJob(JsonJobQueue queue, String operation, String host, long current, long total) {
+    private JsonJob addTestJob(JsonJobQueue queue, String operation, String host, long current, long total, long uniqueNumber, boolean oldJobs) {
         ProgressInfo progressInfo = new ProgressInfo()
                 .setCurrent(current)
                 .setTotal(total);
@@ -196,6 +190,10 @@
         if (queue.getJobs() == null) {
             queue.setJobs(new ArrayList<>());
         }
+        job.setUniqueJobNumber(uniqueNumber);
+        if (oldJobs) {
+            job.setStatus(uniqueNumber % 2 == 0 ? AbstractJob.Status.CANCELLED : AbstractJob.Status.DONE);
+        }
         queue.getJobs().add(job);
         return job;
     }

--
Gitblit v1.10.0