From 027ddec93cd3afbbf7567c9c67f3d36e94b3fc8d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20Ko=C5=BEusznik?= <jan@kozusznik.cz>
Date: Wed, 2 May 2018 09:58:12 +0200
Subject: [PATCH] feat: format remaining time

---
 .../core/UpdatableBenchmarkJob.java              | 14 +++++++-------
 .../ui/BenchmarkSPIMController.java              |  4 ++--
 .../ui/RemainingTimeFormater.java                |  9 +++++++++
 .../java/cz/it4i/fiji/haas/TestTimeFormater.java | 16 ++++++++++++++++
 4 files changed, 34 insertions(+), 9 deletions(-)
 create mode 100644 haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/ui/RemainingTimeFormater.java
 create mode 100644 haas-spim-benchmark/src/test/java/cz/it4i/fiji/haas/TestTimeFormater.java

diff --git a/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/UpdatableBenchmarkJob.java b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/UpdatableBenchmarkJob.java
index 4c55ae3a..10fcbd22 100644
--- a/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/UpdatableBenchmarkJob.java
+++ b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/UpdatableBenchmarkJob.java
@@ -25,7 +25,7 @@ public class UpdatableBenchmarkJob extends UpdatableObservableValue<BenchmarkJob
 
 	public interface TransferProgress {
 
-		public Long getRemainingSeconds();
+		public Long getRemainingMiliseconds();
 
 		public boolean isDone();
 
@@ -66,7 +66,7 @@ public class UpdatableBenchmarkJob extends UpdatableObservableValue<BenchmarkJob
 		private boolean working;
 		// private boolean done;
 		private long start;
-		private Long remainingSeconds;
+		private Long remainingMiliseconds;
 		private Float remainingPercents;
 		private Supplier<Boolean> doneStatusSupplier;
 		private Consumer<Boolean> doneStatusConsumer;
@@ -80,11 +80,11 @@ public class UpdatableBenchmarkJob extends UpdatableObservableValue<BenchmarkJob
 		public synchronized void setCount(int count, int total) {
 			if (total < -1) {
 				working = false;
-				remainingSeconds = null;
+				remainingMiliseconds = null;
 				remainingPercents = null;
 			} else {
 				long delta = System.currentTimeMillis() - start;
-				remainingSeconds = (long) ((double) delta / count * (total - count)) / 1000;
+				remainingMiliseconds = (long) ((double) delta / count * (total - count));
 				remainingPercents = (((float) total - count) / total * 100);
 			}
 			fireValueChangedEvent();
@@ -106,7 +106,7 @@ public class UpdatableBenchmarkJob extends UpdatableObservableValue<BenchmarkJob
 				setDone(true);
 			}
 			working = false;
-			remainingSeconds = 0l;
+			remainingMiliseconds = 0l;
 			remainingPercents = 0.f;
 			fireValueChangedEvent();
 		}
@@ -117,8 +117,8 @@ public class UpdatableBenchmarkJob extends UpdatableObservableValue<BenchmarkJob
 		}
 
 		@Override
-		public synchronized Long getRemainingSeconds() {
-			return remainingSeconds;
+		public synchronized Long getRemainingMiliseconds() {
+			return remainingMiliseconds;
 		}
 
 		@Override
diff --git a/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/ui/BenchmarkSPIMController.java b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/ui/BenchmarkSPIMController.java
index 0470a0fa..a8e6ef50 100644
--- a/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/ui/BenchmarkSPIMController.java
+++ b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/ui/BenchmarkSPIMController.java
@@ -210,8 +210,8 @@ public class BenchmarkSPIMController extends BorderPane implements CloseableCont
 		if (!progress.isWorking() && !progress.isDone()) {
 			return "";
 		} else if (progress.isWorking()) {
-			Long secs = progress.getRemainingSeconds();
-			return string + "ing - time remains " + (secs != null ? secs : "N/A");
+			Long msecs = progress.getRemainingMiliseconds();
+			return string + "ing - time remains " + (msecs != null ? RemainingTimeFormater.format(msecs) : "N/A");
 		} else if (progress.isDone()) {
 			return string + "ed";
 		}
diff --git a/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/ui/RemainingTimeFormater.java b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/ui/RemainingTimeFormater.java
new file mode 100644
index 00000000..da24c79a
--- /dev/null
+++ b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/ui/RemainingTimeFormater.java
@@ -0,0 +1,9 @@
+package cz.it4i.fiji.haas_spim_benchmark.ui;
+
+public class RemainingTimeFormater {
+
+	public static String format(long duration) {
+		long s = duration / 1000;
+		return String.format("%d:%02d:%02d", s / 3600, (s % 3600) / 60, (s % 60));
+	}
+}
diff --git a/haas-spim-benchmark/src/test/java/cz/it4i/fiji/haas/TestTimeFormater.java b/haas-spim-benchmark/src/test/java/cz/it4i/fiji/haas/TestTimeFormater.java
new file mode 100644
index 00000000..1fabc27c
--- /dev/null
+++ b/haas-spim-benchmark/src/test/java/cz/it4i/fiji/haas/TestTimeFormater.java
@@ -0,0 +1,16 @@
+package cz.it4i.fiji.haas;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import cz.it4i.fiji.haas_spim_benchmark.ui.RemainingTimeFormater;
+
+
+public class TestTimeFormater {
+	
+	public static final Logger log = LoggerFactory.getLogger(cz.it4i.fiji.haas.TestTimeFormater.class);
+	
+	public static void main(String[] args) {
+		log.info( RemainingTimeFormater.format((25*3600 + 5*60 + 6) * 1000 + 200));
+	}
+}
-- 
GitLab