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 f6d891465341260b09e5bb32867f547997ae59e1..d6dab95f480dc18aba452bd2b00b5d8d02be97cb 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 @@ -22,10 +22,7 @@ import cz.it4i.fiji.haas_java_client.JobState; public class Job { - private static final String JOB_ID_PROPERTY = "job.id"; - - private static final String JOB_STATE_PROPERTY = "job.state"; - + private static final String JOB_HAS_DATA_TO_DOWNLOAD_PROPERTY = "job.needDownload"; public static boolean isJobPath(Path p) { @@ -36,23 +33,20 @@ public class Job { @Parameter private LogService log; - + private Path jobDir; private Supplier<HaaSClient> haasClientSupplier; private JobState state; - - private Boolean needsDownload; private Long jobId; private JobInfo jobInfo; - public Job(Path path, Collection<Path> files, Supplier<HaaSClient> haasClientSupplier) - throws IOException { + public Job(Path path, Collection<Path> files, Supplier<HaaSClient> haasClientSupplier) throws IOException { this(haasClientSupplier); HaaSClient client = this.haasClientSupplier.get(); long id = client.start(files, "TestOutRedirect", Collections.emptyList()); @@ -85,20 +79,20 @@ public class Job { } synchronized public void updateState() throws IOException { - JobState actualState = updateJobInfo().getState(); - if (EnumSet.of(JobState.Failed, JobState.Finished, JobState.Canceled).contains(actualState) - && state != actualState) { + state = updateJobInfo().getState(); + if (needsDownload == null + && EnumSet.of(JobState.Failed, JobState.Finished, JobState.Canceled).contains(state)) { needsDownload = true; - state = actualState; - saveJobinfo(); } + saveJobinfo(); } private JobInfo updateJobInfo() { return jobInfo = haasClientSupplier.get().obtainJobInfo(getJobId()); } + synchronized public void download() { - if(!needsDownload()) { + if (!needsDownload()) { throw new IllegalStateException("Job: " + getJobId() + " dosn't need download"); } haasClientSupplier.get().download(getJobId(), jobDir); @@ -109,19 +103,15 @@ public class Job { log.error(e); } } - + public JobState getState() { return state; } - - private synchronized void saveJobinfo() throws IOException { try (OutputStream ow = Files.newOutputStream(jobDir.resolve(JOB_INFO_FILE), StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.CREATE)) { Properties prop = new Properties(); - prop.setProperty(JOB_ID_PROPERTY, "" + getJobId()); - prop.setProperty(JOB_STATE_PROPERTY, "" + state); if (needsDownload != null) { prop.setProperty(JOB_HAS_DATA_TO_DOWNLOAD_PROPERTY, needsDownload.toString()); } @@ -133,8 +123,6 @@ public class Job { try (InputStream is = Files.newInputStream(jobDir.resolve(JOB_INFO_FILE))) { Properties prop = new Properties(); prop.load(is); - state = JobState.valueOf(prop.getProperty(JOB_STATE_PROPERTY)); - assert getJobId() == Long.parseLong(prop.getProperty(JOB_ID_PROPERTY)); if (prop.containsKey(JOB_HAS_DATA_TO_DOWNLOAD_PROPERTY)) { needsDownload = Boolean.parseBoolean(prop.getProperty(JOB_HAS_DATA_TO_DOWNLOAD_PROPERTY)); } 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 68b31a1e10699736e06fb4c1c25586349e43f3d5..da719f99d121b1a3672737b450bbdb8bcb665222 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 @@ -6,13 +6,12 @@ import org.scijava.log.LogService; import org.scijava.plugin.Parameter; import cz.it4i.fiji.haas.JobManager.JobInfo; -import javafx.beans.value.ObservableValue; +import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.fxml.FXML; import javafx.scene.control.ContextMenu; import javafx.scene.control.MenuItem; import javafx.scene.control.TableColumn; -import javafx.scene.control.TableColumn.CellDataFeatures; import javafx.scene.control.TableView; import javafx.scene.input.ContextMenuEvent; @@ -37,10 +36,14 @@ public class CheckStatusOfHaaSController { initMenu(); } + private void downloadData(ActionEvent event) { + jobs.getSelectionModel().getSelectedItem().downloadData(); + } + private void initMenu() { ContextMenu cm = new ContextMenu(); MenuItem download = new MenuItem("Download"); - download.setOnAction(ev->jobs.getSelectionModel().getSelectedItem().downloadData()); + download.setOnAction(this::downloadData); cm.getItems().add(download); jobs.setContextMenu(cm); jobs.setOnContextMenuRequested(new EventHandler<ContextMenuEvent>() {