From 9c7157379cfda3a80ac42effcaf9f885fd41435a Mon Sep 17 00:00:00 2001
From: Jan Kozusznik <jan@kozusznik.cz>
Date: Thu, 16 Nov 2017 14:52:16 +0100
Subject: [PATCH] edn time and start time info

---
 .../src/main/java/cz/it4i/fiji/haas/Job.java  | 21 +++++++++++++++++--
 .../java/cz/it4i/fiji/haas/JobManager.java    |  9 ++++++++
 .../it4i/fiji/haas/ui/CheckStatusOfHaaS.fxml  |  9 ++++----
 .../haas/ui/CheckStatusOfHaaSController.java  |  2 ++
 .../cz/it4i/fiji/haas_java_client/.gitignore  |  1 +
 .../haas_java_client/Constants.java.templ     |  8 +++++++
 .../fiji/haas_java_client/HaaSClient.java     | 15 ++++++-------
 .../it4i/fiji/haas_java_client/JobInfo.java   |  5 +++++
 8 files changed, 57 insertions(+), 13 deletions(-)
 create mode 100644 haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/.gitignore
 create mode 100644 haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/Constants.java.templ

diff --git a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/Job.java b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/Job.java
index f5eff4f2..895a73ed 100644
--- a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/Job.java
+++ b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/Job.java
@@ -6,6 +6,7 @@ import java.io.OutputStream;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.StandardOpenOption;
+import java.util.Calendar;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.EnumSet;
@@ -13,6 +14,7 @@ import java.util.Properties;
 import java.util.function.Supplier;
 
 import cz.it4i.fiji.haas_java_client.HaaSClient;
+import cz.it4i.fiji.haas_java_client.JobInfo;
 import cz.it4i.fiji.haas_java_client.JobState;
 
 public class Job {
@@ -41,6 +43,8 @@ public class Job {
 
 	private Long jobId;
 
+	private JobInfo jobInfo;
+
 	public Job(Path path, Collection<Path> files, Supplier<HaaSClient> haasClientSupplier)
 			throws IOException {
 		this(haasClientSupplier);
@@ -48,7 +52,7 @@ public class Job {
 		long id = client.start(files, "TestOutRedirect", Collections.emptyList());
 		jobDir = path.resolve("" + id);
 		Files.createDirectory(jobDir);
-		state = client.obtainJobInfo(id).getState();
+		state = updateJobInfo().getState();
 		saveJobinfo();
 	}
 
@@ -76,7 +80,7 @@ public class Job {
 
 	synchronized public void updateState() throws IOException {
 		long jobId = getJobId();
-		JobState actualState = haasClientSupplier.get().obtainJobInfo(jobId).getState();
+		JobState actualState = updateJobInfo().getState();
 		if (EnumSet.of(JobState.Failed, JobState.Finished, JobState.Canceled).contains(actualState)
 				&& state != actualState) {
 			needsDownload = true;
@@ -84,6 +88,10 @@ public class Job {
 			saveJobinfo();
 		}
 	}
+
+	private JobInfo updateJobInfo() {
+		return jobInfo = haasClientSupplier.get().obtainJobInfo(getJobId());
+	}
 	synchronized public void download() {
 		if(!needsDownload()) {
 			throw new IllegalStateException("Job: " + getJobId() + " dosn't need download");
@@ -95,6 +103,8 @@ public class Job {
 	public JobState getState() {
 		return state;
 	}
+	
+	
 
 	private synchronized void saveJobinfo() throws IOException {
 		try (OutputStream ow = Files.newOutputStream(jobDir.resolve(JOB_INFO_FILE),
@@ -135,4 +145,11 @@ public class Job {
 		return Long.parseLong(path.getFileName().toString());
 	}
 
+	public Calendar getStartTime() {
+		return jobInfo.getStartTime();
+	}
+
+	public Calendar getEndTime() {
+		return jobInfo.getEndTime();
+	}
 }
diff --git a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/JobManager.java b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/JobManager.java
index 278df42d..e5c81b4b 100644
--- a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/JobManager.java
+++ b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/JobManager.java
@@ -3,6 +3,7 @@ package cz.it4i.fiji.haas;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
+import java.util.Calendar;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.LinkedList;
@@ -93,5 +94,13 @@ public class JobManager {
 		public boolean needsDownload() {
 			return job.needsDownload();
 		}
+		
+		public String getStartTime() {
+			return job.getStartTime().getTime().toString();
+		}
+		
+		public String getEndTime() {
+			return job.getEndTime().getTime().toString();
+		}
 	}
 }
diff --git a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/ui/CheckStatusOfHaaS.fxml b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/ui/CheckStatusOfHaaS.fxml
index 7596f26b..ae249c9d 100644
--- a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/ui/CheckStatusOfHaaS.fxml
+++ b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/ui/CheckStatusOfHaaS.fxml
@@ -4,13 +4,14 @@
 <?import javafx.scene.control.TableView?>
 <?import javafx.scene.layout.BorderPane?>
 
-
-<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="cz.it4i.fiji.haas.ui.CheckStatusOfHaaSController">
+<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="730.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="cz.it4i.fiji.haas.ui.CheckStatusOfHaaSController">
    <center>
-      <TableView fx:id="jobs" prefHeight="200.0" prefWidth="200.0" BorderPane.alignment="CENTER">
+      <TableView fx:id="jobs" prefHeight="445.0" prefWidth="623.0" BorderPane.alignment="CENTER">
         <columns>
           <TableColumn prefWidth="75.0" text="Job Id" />
-          <TableColumn prefWidth="145.0" text="Status" />
+          <TableColumn prefWidth="192.0" text="Status" />
+            <TableColumn prefWidth="227.0" text="Start time" />
+            <TableColumn prefWidth="235.0" text="End Time" />
         </columns>
       </TableView>
    </center>
diff --git a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/ui/CheckStatusOfHaaSController.java b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/ui/CheckStatusOfHaaSController.java
index 73428a1f..48c4bdea 100644
--- a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/ui/CheckStatusOfHaaSController.java
+++ b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/ui/CheckStatusOfHaaSController.java
@@ -44,6 +44,8 @@ public class CheckStatusOfHaaSController {
 		cm.getItems().add(download);
 		((TableColumn<JobInfo, String>)jobs.getColumns().get(0)).setCellValueFactory(new PropertyValueFactory<JobInfo,String>("id"));
 		((TableColumn<JobInfo, String>)jobs.getColumns().get(1)).setCellValueFactory(new P_Factory());
+		((TableColumn<JobInfo, String>)jobs.getColumns().get(2)).setCellValueFactory(new PropertyValueFactory<JobInfo,String>("startTime"));
+		((TableColumn<JobInfo, String>)jobs.getColumns().get(3)).setCellValueFactory(new PropertyValueFactory<JobInfo,String>("endTime"));
 		jobs.setContextMenu(cm);
 		jobs.setOnContextMenuRequested(new EventHandler<ContextMenuEvent>() {
 
diff --git a/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/.gitignore b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/.gitignore
new file mode 100644
index 00000000..702c8b4d
--- /dev/null
+++ b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/.gitignore
@@ -0,0 +1 @@
+/Constants.java
diff --git a/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/Constants.java.templ b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/Constants.java.templ
new file mode 100644
index 00000000..e2d5e13f
--- /dev/null
+++ b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/Constants.java.templ
@@ -0,0 +1,8 @@
+package cz.it4i.fiji.haas_java_client;
+
+interface Constants {
+	String USER_NAME = "";
+	String PASSWORD = "";
+	String EMAIL = "";
+	String PHONE = "";
+}
\ No newline at end of file
diff --git a/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/HaaSClient.java b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/HaaSClient.java
index d672f4f9..6f29d30e 100644
--- a/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/HaaSClient.java
+++ b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/HaaSClient.java
@@ -73,13 +73,6 @@ public class HaaSClient {
 		}
 	}
 
-	private interface Constants {
-		String USER_NAME = "testuser";
-		String PASSWORD = "testpass";
-		String EMAIL = "jan.kozusznik@vsb.cz";
-		String PHONE = "999111000";
-	}
-
 	private String sessionID;
 
 	private UserAndLimitationManagementWsSoap userAndLimitationManagement;
@@ -167,6 +160,14 @@ public class HaaSClient {
 				public JobState getState() {
 					return WS_STATE2STATE.get(info.getState());
 				}
+				
+				public java.util.Calendar getStartTime() {
+					return info.getStartTime();
+				};
+				
+				public java.util.Calendar getEndTime() {
+					return info.getEndTime();
+				};
 			};
 		} catch (RemoteException | ServiceException e) {
 			throw new HaaSClientException(e);
diff --git a/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/JobInfo.java b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/JobInfo.java
index ee51dea2..53231a2f 100644
--- a/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/JobInfo.java
+++ b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/JobInfo.java
@@ -1,5 +1,6 @@
 package cz.it4i.fiji.haas_java_client;
 
+import java.util.Calendar;
 import java.util.Collection;
 
 public interface JobInfo {
@@ -8,4 +9,8 @@ public interface JobInfo {
 	Collection<Long> getTasks();
 	
 	JobState getState();
+	
+	Calendar getStartTime();
+
+	Calendar getEndTime();
 }
-- 
GitLab