From df30856171a76eae2b5d9254787d7f5b5935a3aa Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Sun, 06 Jan 2019 01:54:48 +0000
Subject: [PATCH] JobQueue...

---
 borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/JobsRest.java |   56 +++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 41 insertions(+), 15 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 382b331..a74ab74 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
@@ -14,7 +14,10 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.ws.rs.*;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 import java.util.ArrayList;
 import java.util.List;
@@ -28,36 +31,59 @@
     @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.
      * @param prettyPrinter If true then the json output will be in pretty format.
      * @return Job queues as json string.
      * @see JsonUtils#toJson(Object, boolean)
      */
-    public String getJobs(@QueryParam("testMode") boolean testMode, @QueryParam("prettyPrinter") boolean prettyPrinter) {
+    public String getJobs(@QueryParam("repo") String repo,
+                          @QueryParam("testMode") boolean testMode,
+                          @QueryParam("prettyPrinter") boolean prettyPrinter) {
         if (testMode) {
             // Return dynamic test queue:
             return returnTestList(prettyPrinter);
         }
+        boolean validRepo = false;
+        if (StringUtils.isNotBlank(repo) && !"null".equals(repo) && !"undefined".equals(repo)) {
+            validRepo = true;
+        }
         BorgQueueExecutor borgQueueExecutor = BorgQueueExecutor.getInstance();
         List<JsonJobQueue> queueList = new ArrayList<>();
-        for (String repo : borgQueueExecutor.getRepos()) {
-            BorgRepoConfig repoConfig = ConfigurationHandler.getConfiguration().getRepoConfig(repo);
-            String title = repoConfig != null ? repoConfig.getDisplayName() : repo;
-            List<BorgJob<?>> borgJobList = borgQueueExecutor.getJobListCopy(repo);
-            if (CollectionUtils.isEmpty(borgJobList))
-                continue;
-            JsonJobQueue queue = new JsonJobQueue()
-                    .setRepo(title);
-            queueList.add(queue);
-            queue.setJobs(new ArrayList<>(borgJobList.size()));
-            for (BorgJob<?> borgJob : borgJobList) {
-                JsonJob job = new JsonJob(borgJob);
-                queue.getJobs().add(job);
+        if (validRepo) { // Get only the queue of the given repo:
+            JsonJobQueue queue = getQueue(repo);
+            if (queue != null) {
+                queueList.add(queue);
+            }
+        } else { // Get all the queues (of all repos).
+            for (String rep : borgQueueExecutor.getRepos()) {
+                JsonJobQueue queue = getQueue(rep);
+                if (queue != null) {
+                    queueList.add(queue);
+                }
             }
         }
         return JsonUtils.toJson(queueList, prettyPrinter);
     }
 
+    private JsonJobQueue getQueue(String repo) {
+        BorgQueueExecutor borgQueueExecutor = BorgQueueExecutor.getInstance();
+        BorgRepoConfig repoConfig = ConfigurationHandler.getConfiguration().getRepoConfig(repo);
+        if (repoConfig == null) {
+            return null;
+        }
+        List<BorgJob<?>> borgJobList = borgQueueExecutor.getJobListCopy(repoConfig);
+        if (CollectionUtils.isEmpty(borgJobList))
+            return null;
+        JsonJobQueue queue = new JsonJobQueue().setRepo(repoConfig.getDisplayName());
+        queue.setJobs(new ArrayList<>(borgJobList.size()));
+        for (BorgJob<?> borgJob : borgJobList) {
+            JsonJob job = new JsonJob(borgJob);
+            queue.getJobs().add(job);
+        }
+        return queue;
+    }
+
     @Path("/cancel")
     @GET
     /**

--
Gitblit v1.10.0