From e70f062550b0c611f076aa784f284a27e0ffe715 Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Sat, 05 Jan 2019 14:15:43 +0000
Subject: [PATCH] Job monitor...

---
 borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/queue/JsonJob.java |   28 +++++++++++++++++++++++++++-
 1 files changed, 27 insertions(+), 1 deletions(-)

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 596e3b6..8430945 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
@@ -1,11 +1,13 @@
 package de.micromata.borgbutler.server.rest.queue;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
 import de.micromata.borgbutler.BorgJob;
 import de.micromata.borgbutler.jobs.AbstractJob;
 import de.micromata.borgbutler.json.borg.ProgressInfo;
 import de.micromata.borgbutler.server.user.UserUtils;
 import lombok.Getter;
 import lombok.Setter;
+import org.apache.commons.lang3.StringUtils;
 
 public class JsonJob {
     @Getter
@@ -48,6 +50,7 @@
 
     /**
      * Builds and sets progressText from the progressInfo object if given.
+     *
      * @return progressText
      */
     public String buildProgressText() {
@@ -59,6 +62,13 @@
             sb.append(progressInfo.getMessage());
         }
         if (progressInfo.getCurrent() > 0) {
+            if (StringUtils.indexOf(progressInfo.getMessage(), '%') < 0) {
+                // No percentage given by borg, try to create an own one:
+                short percentage = getProgressPercent();
+                if (percentage >= 0) {
+                    sb.append(" ").append(percentage).append("%");
+                }
+            }
             sb.append(" (").append(UserUtils.formatNumber(progressInfo.getCurrent()));
             if (progressInfo.getTotal() > 0) {
                 sb.append("/").append(UserUtils.formatNumber(progressInfo.getTotal()));
@@ -68,9 +78,25 @@
         if (progressInfo.isFinished()) {
             sb.append(" (finished)");
         }
-        sb.append(".");
         progressText = sb.toString();
         return progressText;
     }
 
+    /**
+     * If current and total of {@link ProgressInfo} is available, this value is given, otherwise this value is -1.
+     */
+    @JsonProperty
+    public short getProgressPercent() {
+        if (progressInfo == null || progressInfo.getTotal() <= 0) {
+            return -1;
+        }
+        long value = 100 * progressInfo.getCurrent() / progressInfo.getTotal();
+        if (value < 0) {
+            return 0;
+        }
+        if (value >= 100) {
+            return 100;
+        }
+        return (short) value;
+    }
 }

--
Gitblit v1.10.0