From 7d103e1e78fa30a588cd019ed7a20efc6e2444ea Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Tue, 15 Jan 2019 06:28:07 +0000
Subject: [PATCH] Rest: queueStatistics now as part of new system info.

---
 borgbutler-webapp/src/containers/WebApp.jsx                                             |   13 +++---
 borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/SystemInfoRest.java |   30 +++++++++++++++
 borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/JobsRest.java       |   11 -----
 borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/SystemInfo.java     |   20 ++++++++++
 4 files changed, 57 insertions(+), 17 deletions(-)

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 14f1525..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
@@ -66,17 +66,6 @@
         return JsonUtils.toJson(queueList, prettyPrinter);
     }
 
-    @GET
-    @Produces(MediaType.APPLICATION_JSON)
-    @Path("/statistics")
-    /**
-     * @return The total number of jobs queued or running (and other statistics): {@link de.micromata.borgbutler.BorgQueueStatistics}.
-     * @see JsonUtils#toJson(Object, boolean)
-     */
-    public String getStatistics() {
-        return JsonUtils.toJson(BorgQueueExecutor.getInstance().getStatistics());
-    }
-
     private JsonJobQueue getQueue(String repo) {
         BorgQueueExecutor borgQueueExecutor = BorgQueueExecutor.getInstance();
         BorgRepoConfig repoConfig = ConfigurationHandler.getConfiguration().getRepoConfig(repo);
diff --git a/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/SystemInfo.java b/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/SystemInfo.java
new file mode 100644
index 0000000..a819450
--- /dev/null
+++ b/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/SystemInfo.java
@@ -0,0 +1,20 @@
+package de.micromata.borgbutler.server.rest;
+
+import de.micromata.borgbutler.BorgQueueStatistics;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * Statistics of all the job queues, especially the number of total queued and running jobs.
+ * This is used e. g. by the client for showing a badge near to the menu entry "job monitor" with the number
+ * of Jobs in the queues.
+ */
+public class SystemInfo {
+    @Getter
+    @Setter
+    private BorgQueueStatistics queueStatistics;
+
+    @Getter
+    @Setter
+    private boolean configurationOK;
+}
diff --git a/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/SystemInfoRest.java b/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/SystemInfoRest.java
new file mode 100644
index 0000000..8cbec32
--- /dev/null
+++ b/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/SystemInfoRest.java
@@ -0,0 +1,30 @@
+package de.micromata.borgbutler.server.rest;
+
+import de.micromata.borgbutler.BorgQueueExecutor;
+import de.micromata.borgbutler.json.JsonUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+
+@Path("/system")
+public class SystemInfoRest {
+    private static Logger log = LoggerFactory.getLogger(SystemInfoRest.class);
+
+    @GET
+    @Produces(MediaType.APPLICATION_JSON)
+    @Path("info")
+    /**
+     * @return The total number of jobs queued or running (and other statistics): {@link de.micromata.borgbutler.BorgQueueStatistics}.
+     * @see JsonUtils#toJson(Object, boolean)
+     */
+    public String getStatistics() {
+        SystemInfo systemInfonfo = new SystemInfo()
+                .setQueueStatistics(BorgQueueExecutor.getInstance().getStatistics())
+                .setConfigurationOK(false);
+        return JsonUtils.toJson(systemInfonfo);
+    }
+}
diff --git a/borgbutler-webapp/src/containers/WebApp.jsx b/borgbutler-webapp/src/containers/WebApp.jsx
index 639ee35..e830f92 100644
--- a/borgbutler-webapp/src/containers/WebApp.jsx
+++ b/borgbutler-webapp/src/containers/WebApp.jsx
@@ -24,11 +24,11 @@
 
     componentDidMount = () => {
         this.props.loadVersion();
-        this.interval = setInterval(() => this.fetchJobStatistics(), 5000);
+        this.interval = setInterval(() => this.fetchSystemInfo(), 5000);
     };
 
-    fetchJobStatistics = () => {
-        fetch(getRestServiceUrl('jobs/statistics'), {
+    fetchSystemInfo = () => {
+        fetch(getRestServiceUrl('system/info'), {
             method: 'GET',
             headers: {
                 'Accept': 'application/json'
@@ -37,7 +37,7 @@
             .then(response => response.json())
             .then(json => {
                 this.setState({
-                    statistics: json
+                    systemInfo: json
                 });
             })
             .catch();
@@ -45,8 +45,9 @@
 
     render() {
         let jobsBadge = '';
-        if (this.state && this.state.statistics && this.state.statistics.numberOfRunningAndQueuedJobs > 0) {
-            jobsBadge = <Badge color="danger" pill>{this.state.statistics.numberOfRunningAndQueuedJobs}</Badge>;
+        const statistics = (this.state && this.state.systemInfo) ? this.state.systemInfo.queueStatistics : null;
+        if (statistics && statistics.numberOfRunningAndQueuedJobs > 0) {
+            jobsBadge = <Badge color="danger" pill>{statistics.numberOfRunningAndQueuedJobs}</Badge>;
         }
         let routes = [
             ['Start', '/', Start],

--
Gitblit v1.10.0