From 3b6408569b692bf2c12d8b3e355d3fba5c41a41a Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Sun, 06 Jan 2019 22:08:17 +0000
Subject: [PATCH] BorgQueueStatistics

---
 borgbutler-core/src/main/java/de/micromata/borgbutler/jobs/JobQueue.java |   27 ++++++++++++++++++++-------
 1 files changed, 20 insertions(+), 7 deletions(-)

diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/jobs/JobQueue.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/jobs/JobQueue.java
index 8c9eb47..4b686ae 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/jobs/JobQueue.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/jobs/JobQueue.java
@@ -9,21 +9,34 @@
 import java.util.concurrent.Executors;
 
 public class JobQueue<T> {
-    private static final int MAX_DONE_JOBS_SIZE = 50;
+    private static final int MAX_OLD_JOBS_SIZE = 50;
     private static long jobSequence = 0;
     private Logger log = LoggerFactory.getLogger(JobQueue.class);
     private List<AbstractJob<T>> queue = new ArrayList<>();
-    private List<AbstractJob<T>> doneJobs = new LinkedList<>();
+    /**
+     * Finished, failed and cancelled jobs.
+     */
+    private List<AbstractJob<T>> oldJobs = new LinkedList<>();
     private ExecutorService executorService = Executors.newSingleThreadExecutor();
 
     private static synchronized void setNextJobId(AbstractJob<?> job) {
         job.setUniqueJobNumber(jobSequence++);
     }
 
+    /**
+     * @return the number of running and queued jobs of this queue or 0 if no job is in the queue.
+     */
     public int getQueueSize() {
         return queue.size();
     }
 
+    /**
+     * @return the number of old jobs (done, failed or cancelled) stored. The size of stored old jobs is limited.
+     */
+    public int getOldJobsSize() {
+        return oldJobs.size();
+    }
+
     public Iterator<AbstractJob<T>> getQueueIterator() {
         return Collections.unmodifiableList(queue).iterator();
     }
@@ -93,13 +106,13 @@
                 AbstractJob<T> job = it.next();
                 if (job.isFinished()) {
                     it.remove();
-                    synchronized (doneJobs) {
-                        doneJobs.add(0, job);
+                    synchronized (oldJobs) {
+                        oldJobs.add(0, job);
                     }
                 }
-                synchronized (doneJobs) {
-                    while (doneJobs.size() > MAX_DONE_JOBS_SIZE) {
-                        doneJobs.remove(doneJobs.size() - 1);
+                synchronized (oldJobs) {
+                    while (oldJobs.size() > MAX_OLD_JOBS_SIZE) {
+                        oldJobs.remove(oldJobs.size() - 1);
                     }
                 }
             }

--
Gitblit v1.10.0