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 ++++++++++++++++++++-------
borgbutler-core/src/main/java/de/micromata/borgbutler/BorgQueueExecutor.java | 27 ++++++-------
2 files changed, 54 insertions(+), 29 deletions(-)
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgQueueExecutor.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgQueueExecutor.java
index 5678da2..a2e1968 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgQueueExecutor.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgQueueExecutor.java
@@ -57,12 +57,15 @@
/**
* For displaying purposes.
*
- * @param repo
+ * @param repoConfig
* @return A list of all jobs of the queue (as copies).
*/
- public List<BorgJob<?>> getJobListCopy(String repo) {
- JobQueue<String> origQueue = getQueue(repo);
+ public List<BorgJob<?>> getJobListCopy(BorgRepoConfig repoConfig) {
+ JobQueue<String> origQueue = getQueue(repoConfig);
List<BorgJob<?>> jobList = new ArrayList<>();
+ if (origQueue == null) {
+ return jobList;
+ }
Iterator<AbstractJob<String>> it = origQueue.getQueueIterator();
while (it.hasNext()) {
AbstractJob<String> origJob = it.next();
@@ -76,16 +79,16 @@
return jobList;
}
- private JobQueue<String> getQueue(String repo) {
+ private JobQueue<String> getQueue(BorgRepoConfig repoConfig) {
synchronized (queueMap) {
- return queueMap.get(getQueueName(repo));
+ return queueMap.get(getQueueName(repoConfig));
}
}
- private JobQueue<String> ensureAndGetQueue(String repo) {
+ private JobQueue<String> ensureAndGetQueue(BorgRepoConfig repoConfig) {
synchronized (queueMap) {
- String queueName = getQueueName(repo);
- JobQueue<String> queue = getQueue(queueName);
+ String queueName = getQueueName(repoConfig);
+ JobQueue<String> queue = getQueue(repoConfig);
if (queue == null) {
queue = new JobQueue<>();
queueMap.put(queueName, queue);
@@ -94,12 +97,8 @@
}
}
- private JobQueue<String> ensureAndGetQueue(BorgRepoConfig config) {
- return ensureAndGetQueue(config != null ? config.getRepo() : null);
- }
-
- private String getQueueName(String repo) {
- return repo != null ? repo : "--NO_REPO--";
+ private String getQueueName(BorgRepoConfig repoConfig) {
+ return repoConfig != null ? repoConfig.getId() : "--NO_REPO--";
}
public BorgJob<Void> execute(BorgCommand command) {
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