From 9104da0af58d2711255bec27e7071d0ef3de053a Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Fri, 28 Dec 2018 11:41:47 +0000
Subject: [PATCH] Job queueing...

---
 borgbutler-core/src/main/java/de/micromata/borgbutler/jobs/AbstractJob.java |   18 ++++++++++++++++--
 1 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/jobs/AbstractJob.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/jobs/AbstractJob.java
index 9941110..5827495 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/jobs/AbstractJob.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/jobs/AbstractJob.java
@@ -6,11 +6,14 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 
 public abstract class AbstractJob<T> {
     private Logger logger = LoggerFactory.getLogger(AbstractJob.class);
+
     public enum Status {DONE, RUNNING, QUEUED, STOPPED, FAILED}
+
     @Getter
     @Setter
     private boolean stopRequested;
@@ -24,17 +27,27 @@
     @Getter
     @Setter
     private String statusText;
-
+    @Getter(AccessLevel.PACKAGE)
+    @Setter(AccessLevel.PACKAGE)
     private Future<T> future;
 
+    public T waitForResult() {
+        try {
+            return future.get();
+        } catch (InterruptedException | ExecutionException ex) {
+            logger.error(ex.getMessage(), ex);
+        }
+        return null;
+    }
+
     protected void failed() {
         if (this.status != Status.RUNNING) {
             logger.error("Internal error, illegal state! You shouldn't set the job status to FAILED if not in status RUNNING: " + this.status);
         }
         this.status = Status.FAILED;
     }
+
     /**
-     *
      * @return true, if the job is done, stopped or failed. Otherwise false (if job is running or queued).
      */
     public boolean isFinished() {
@@ -49,6 +62,7 @@
     /**
      * A job is identified by this id. If a job with the same id is already queued (not yet finished), this job will
      * not be added twice.
+     *
      * @return
      */
     public abstract Object getId();

--
Gitblit v1.10.0