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 f5eff4f225c757875d8e87f0b9346b8963d28c9a..895a73edd9c8b4ef4c927571b7e9fc322ab65a2a 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 278df42d228fafd410875624cfbee0c52efb7ffb..e5c81b4b9857a49e3d28f5dd605c565b7cde3ff5 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 7596f26bd38bb4e1ca8e9e763168b24b80fb1828..ae249c9db7d0dc2760784f22f5e091ae63302155 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 73428a1f1eab7b1d2f2d1e573552534a38c71c15..48c4bdeac193741f37d96afce76cba2e09d62b9e 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 0000000000000000000000000000000000000000..702c8b4dfc8d2cf814f8eaa495f6397ba279a113 --- /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 0000000000000000000000000000000000000000..e2d5e13f220e429b17f68193ceb9cb5041fd6caf --- /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 d672f4f9e12edc4614facc7b576bdea1fdf74884..6f29d30ed86cbf75b2a077f92f263e095a95f7d2 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 ee51dea243b17616b5a39321af1d4c25ef7637b2..53231a2f14234a8a6ffb665ea36419dff4e2ae24 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(); }