From 0c1eeb6acd1a26fa7a56bcf292ea5a240271a0a1 Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Wed, 16 Jan 2019 00:06:39 +0000
Subject: [PATCH] Jobs: created, start and stop time.
---
borgbutler-webapp/src/components/views/jobs/Job.jsx | 10 +++++++++-
borgbutler-core/src/main/java/de/micromata/borgbutler/jobs/AbstractJob.java | 32 ++++++++++++++++++++++++++++----
borgbutler-core/src/main/java/de/micromata/borgbutler/BorgJob.java | 3 +++
borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/queue/JsonJob.java | 12 ++++++++++++
4 files changed, 52 insertions(+), 5 deletions(-)
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgJob.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgJob.java
index 1e13633..da71b43 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgJob.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgJob.java
@@ -130,6 +130,9 @@
if (progressInfo != null) {
clone.setProgressInfo(progressInfo.clone());
}
+ clone.setCreateTime(getCreateTime());
+ clone.setStartTime(getStartTime());
+ clone.setStopTime(getStopTime());
return clone;
}
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 df97791..fc8d054 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
@@ -1,11 +1,13 @@
package de.micromata.borgbutler.jobs;
+import de.micromata.borgbutler.utils.DateUtils;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.time.LocalDateTime;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
@@ -18,7 +20,6 @@
@Setter
private boolean cancellationRequested;
@Getter
- @Setter(AccessLevel.PROTECTED)
private Status status;
@Getter
@Setter
@@ -29,17 +30,36 @@
@Getter
@Setter(AccessLevel.PROTECTED)
private long uniqueJobNumber = -1;
+ @Getter
+ @Setter
+ private String createTime;
+ @Getter
+ @Setter
+ private String startTime;
+ @Getter
+ @Setter
+ private String stopTime;
+
+ protected AbstractJob<T> setStatus(Status status) {
+ if (status == Status.RUNNING && this.status != Status.RUNNING) {
+ this.startTime = DateUtils.format(LocalDateTime.now());
+ } else if (status != Status.RUNNING && this.status == Status.RUNNING) {
+ this.stopTime = DateUtils.format(LocalDateTime.now());
+ }
+ this.status = status;
+ return this;
+ }
public void cancel() {
if (this.getStatus() == Status.QUEUED) {
- this.status = Status.CANCELLED;
+ setStatus(Status.CANCELLED);
}
this.cancellationRequested = true;
cancelRunningProcess();
}
protected void setCancelled() {
- this.status = Status.CANCELLED;
+ setStatus(Status.CANCELLED);
}
/**
@@ -74,7 +94,7 @@
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;
+ setStatus(Status.FAILED);
}
/**
@@ -96,4 +116,8 @@
* @return
*/
public abstract Object getId();
+
+ protected AbstractJob() {
+ this.createTime = DateUtils.format(LocalDateTime.now());
+ }
}
diff --git a/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/queue/JsonJob.java b/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/queue/JsonJob.java
index 119aa9a..0169269 100644
--- a/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/queue/JsonJob.java
+++ b/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/queue/JsonJob.java
@@ -38,6 +38,15 @@
@Getter
@Setter
private String[] environmentVariables;
+ @Getter
+ @Setter
+ private String createTime;
+ @Getter
+ @Setter
+ private String startTime;
+ @Getter
+ @Setter
+ private String stopTime;
public JsonJob() {
}
@@ -55,6 +64,9 @@
this.commandLineAsString = borgJob.getCommandLineAsString();
this.description = borgJob.getDescription();
environmentVariables = borgJob.getCommand().getRepoConfig().getEnvironmentVariables();
+ this.createTime = borgJob.getCreateTime();
+ this.startTime = borgJob.getStartTime();
+ this.stopTime = borgJob.getStopTime();
}
/**
diff --git a/borgbutler-webapp/src/components/views/jobs/Job.jsx b/borgbutler-webapp/src/components/views/jobs/Job.jsx
index c069fd8..2bf71bb 100644
--- a/borgbutler-webapp/src/components/views/jobs/Job.jsx
+++ b/borgbutler-webapp/src/components/views/jobs/Job.jsx
@@ -40,6 +40,14 @@
let content = undefined;
let job = this.props.job;
let cancelDisabled = undefined;
+ let times = ' (created: ' + job.createTime;
+ if (job.startTime) {
+ times += ', started: ' + job.startTime;
+ }
+ if (job.stopTime) {
+ times += ', stopped: ' + job.stopTime;
+ }
+ times += ')';
if ((job.status !== 'RUNNING' && job.status !== 'QUEUED') || job.cancellationRequested) {
cancelDisabled = true;
}
@@ -89,7 +97,7 @@
<tbody>
<tr>
<th>Status</th>
- <td>{job.status}</td>
+ <td>{job.status} {times}</td>
</tr>
<tr>
<th>Command line</th>
--
Gitblit v1.10.0