diff --git a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/CheckStatusOfHaaS.java b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/CheckStatusOfHaaS.java index c448de1cdea98a0f9c38e806009cc03f34ace84a..984cde4f40a6c492927e0542c4ca40df15b5cda6 100644 --- a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/CheckStatusOfHaaS.java +++ b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/CheckStatusOfHaaS.java @@ -25,7 +25,7 @@ import net.imagej.ImageJ; * */ @Plugin(type = Command.class, headless = true, menuPath = "Plugins>Check status of HaaS") -public class CheckStatusOfHaaS extends CommandBase implements Command { +public class CheckStatusOfHaaS implements Command { @Parameter private LogService log; diff --git a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/CommandBase.java b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/CommandBase.java deleted file mode 100644 index 835b0ff55d0dec94d00faef60602bd7985998a17..0000000000000000000000000000000000000000 --- a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/CommandBase.java +++ /dev/null @@ -1,21 +0,0 @@ -package cz.it4i.fiji.haas; - -import org.scijava.log.LogService; -import org.scijava.plugin.Parameter; - -class CommandBase { - @Parameter - private LogService _log; - - protected ImageJGate getGate() { - return gate; - } - - private ImageJGate gate = new ImageJGate() { - - @Override - public LogService getLog() { - return _log; - } - }; -} diff --git a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/ImageJGate.java b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/ImageJGate.java deleted file mode 100644 index 1a5ce21a124b8d04d075aadc4fdbdf573f4a2bb7..0000000000000000000000000000000000000000 --- a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/ImageJGate.java +++ /dev/null @@ -1,8 +0,0 @@ -package cz.it4i.fiji.haas; - -import org.scijava.log.LogService; - -interface ImageJGate { - - LogService getLog(); -} 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 895a73edd9c8b4ef4c927571b7e9fc322ab65a2a..f6d891465341260b09e5bb32867f547997ae59e1 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 @@ -13,6 +13,9 @@ import java.util.EnumSet; import java.util.Properties; import java.util.function.Supplier; +import org.scijava.log.LogService; +import org.scijava.plugin.Parameter; + import cz.it4i.fiji.haas_java_client.HaaSClient; import cz.it4i.fiji.haas_java_client.JobInfo; import cz.it4i.fiji.haas_java_client.JobState; @@ -31,6 +34,9 @@ public class Job { private static String JOB_INFO_FILE = ".jobinfo"; + @Parameter + private LogService log; + private Path jobDir; private Supplier<HaaSClient> haasClientSupplier; @@ -79,7 +85,6 @@ public class Job { } synchronized public void updateState() throws IOException { - long jobId = getJobId(); JobState actualState = updateJobInfo().getState(); if (EnumSet.of(JobState.Failed, JobState.Finished, JobState.Canceled).contains(actualState) && state != actualState) { @@ -98,6 +103,11 @@ public class Job { } haasClientSupplier.get().download(getJobId(), jobDir); needsDownload = false; + try { + saveJobinfo(); + } catch (IOException e) { + log.error(e); + } } public JobState getState() { 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 193e41d607b6ecdec64cef0a1a091f3209ebdef3..2a6cd6c5a472fdc64bf06daf70c13539a65d69e6 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 @@ -103,6 +103,11 @@ public class JobManager { return job.getEndTime().getTime().toString(); } + public void downloadData() { + job.download(); + fireValueChangedEvent(); + } + @Override public JobInfo getValue() { return this; diff --git a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/RunWithHaaS.java b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/RunWithHaaS.java index 2728790bda49dfbe12d05ca9e5aa8c55dcaddcd1..bbae55031ff42e984757b7ef06d5ca93d6cf83a2 100644 --- a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/RunWithHaaS.java +++ b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/RunWithHaaS.java @@ -21,7 +21,7 @@ import net.imagej.ImageJ; * */ @Plugin(type = Command.class, headless = true, menuPath = "Plugins>Run with HaaS") -public class RunWithHaaS extends CommandBase implements Command { +public class RunWithHaaS implements Command { @Parameter private LogService log; 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 55b671abde85d5c424512a033eced0ce1ae3ee28..68b31a1e10699736e06fb4c1c25586349e43f3d5 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 @@ -1,7 +1,5 @@ package cz.it4i.fiji.haas.ui; - - import java.util.function.Function; import org.scijava.log.LogService; @@ -19,59 +17,61 @@ import javafx.scene.control.TableView; import javafx.scene.input.ContextMenuEvent; public class CheckStatusOfHaaSController { - - + @Parameter private LogService logService; - + @FXML private TableView<JobInfo> jobs; - + public CheckStatusOfHaaSController() { - + } - + public void addJob(JobInfo job) { jobs.getItems().add(job); } - + public void init() { + initTable(); + initMenu(); + } + + private void initMenu() { ContextMenu cm = new ContextMenu(); MenuItem download = new MenuItem("Download"); + download.setOnAction(ev->jobs.getSelectionModel().getSelectedItem().downloadData()); cm.getItems().add(download); - setCellValueFactory(0,j->j.getId().toString()); - setCellValueFactory(1,j->j.getState().toString() + (j.needsDownload()?" - needs download":"")); - setCellValueFactory(2,j->j.getStartTime().toString()); - setCellValueFactory(3,j->j.getEndTime().toString()); jobs.setContextMenu(cm); jobs.setOnContextMenuRequested(new EventHandler<ContextMenuEvent>() { @Override public void handle(ContextMenuEvent event) { - if(jobs.getSelectionModel().getSelectedCells().size() < 1) { + if (jobs.getSelectionModel().getSelectedCells().size() < 1) { return; } - int row = jobs.getSelectionModel().getSelectedCells().get(0).getRow(); + JobInfo job = jobs.getSelectionModel().getSelectedItem(); - if(0 >= row && row < jobs.getItems().size() && jobs.getItems().get(row).needsDownload()) { + if (job != null && job.needsDownload()) { download.setDisable(false); } else { download.setDisable(true); } - - } }); - logService.info("init"); } - - @SuppressWarnings("unchecked") - private void setCellValueFactory(int index, Function<JobInfo,String> mapper) { - ((TableColumn<JobInfo, String>)jobs.getColumns().get(index)).setCellValueFactory(f->getObservableValue(f, mapper)); - + + private void initTable() { + setCellValueFactory(0, j -> j.getId().toString()); + setCellValueFactory(1, j -> j.getState().toString() + (j.needsDownload() ? " - needs download" : "")); + setCellValueFactory(2, j -> j.getStartTime().toString()); + setCellValueFactory(3, j -> j.getEndTime().toString()); } - private ObservableValue<String> getObservableValue(CellDataFeatures<JobInfo, String> feature, Function<JobInfo,String> mapper) { - return new ObservableValueAdapter<JobInfo,String>(feature.getValue(), mapper); + @SuppressWarnings("unchecked") + private void setCellValueFactory(int index, Function<JobInfo, String> mapper) { + ((TableColumn<JobInfo, String>) jobs.getColumns().get(index)) + .setCellValueFactory(f -> new ObservableValueAdapter<JobInfo, String>(f.getValue(), mapper)); + } }