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