ref #9622 , ref #6359 handle progress monitor without setting taskName multiple times...
authorAndreas Müller <a.mueller@bgbm.org>
Mon, 17 May 2021 14:09:55 +0000 (16:09 +0200)
committerAndreas Müller <a.mueller@bgbm.org>
Mon, 17 May 2021 14:09:55 +0000 (16:09 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/util/ProgressMonitorClientManager.java

index 8df84fd07191d5cf91110f8f4535eee2b51a74c0..58bd142a40cbbc661f9de28cf7bcb678c297d17b 100644 (file)
@@ -90,16 +90,10 @@ public class ProgressMonitorClientManager {
             if (remotingMonitor != null && remotingMonitor.isDone()){
                 return remotingMonitor;
             }
-            for(int i=0;i<START_DELAY;i++) {
-                Thread.sleep(10);
-                logger.info("Waiting for monitered work to start ..");
+            for(int i=0;remotingMonitor==null && i<START_DELAY;i++) {
+                Thread.sleep(500);
+                logger.info("Waiting for monitored work to start ..");
                 remotingMonitor = progressMonitorService.getRemotingMonitor(uuid);
-                if (remotingMonitor != null){
-                    if(remotingMonitor.getTotalWork() > 0) {
-                        break;
-                    }
-                    break;
-                }
             }
             if (remotingMonitor == null){
                 return null;
@@ -118,8 +112,8 @@ public class ProgressMonitorClientManager {
                     result = new UpdateResult();
                 }
             }
+
             // start the client monitor
-            monitor.beginTask(remotingMonitor.getTaskName(), remotingMonitor.getTotalWork());
             logger.info("Work to be done: " + remotingMonitor.getTotalWork());
             int editorTotalWorkDone = 0;
             int serverTotalWorkDone = 0;
@@ -166,23 +160,24 @@ public class ProgressMonitorClientManager {
 
                 serverTotalWorkDone = (int) remotingMonitor.getWorkDone();
                 logger.info("Work done from start: " + serverTotalWorkDone);
-                String percentage = "100";
-                if (remotingMonitor.getTotalWork() != 0){
-                    percentage = new DecimalFormat("#.##").format(remotingMonitor.getPercentage());
-                }
 
-                // set dialog text
-                monitor.setTaskName(remotingMonitor.getTaskName());
-                monitor.subTask(" " + percentage + "% done ");
-
-                int worked = 0;
                 if (serverTotalWorkDone > editorTotalWorkDone){
-                    worked = serverTotalWorkDone - editorTotalWorkDone;
+                    int worked = serverTotalWorkDone - editorTotalWorkDone;
+                    if(worked > 0) {
+                        logger.info("Work done since last check: " + worked);
+                        monitor.worked(worked);
+                    }
                 }
-                if(worked > 0) {
-                    logger.info("Work done since last check: " + worked);
-                    monitor.worked(worked);
+
+                // set dialog text
+                String subTaskName = remotingMonitor.getSubTask();
+                String percentage = "100";
+                if (remotingMonitor.getTotalWork() != 0){
+                    percentage = new DecimalFormat("#.##").format(remotingMonitor.getPercentage());
                 }
+                subTaskName = subTaskName + " (" + percentage +"% done)";
+                //Note: do not update taskname as it resets percentage in status line
+                monitor.subTask(subTaskName );
 
                 editorTotalWorkDone = serverTotalWorkDone;
             }