From d2a12c25fcbea187affa4580bb76efc495c0d893 Mon Sep 17 00:00:00 2001
From: Jan Kozusznik <jan@kozusznik.cz>
Date: Thu, 16 Nov 2017 22:14:22 +0100
Subject: [PATCH] refactoring

---
 .../cz/it4i/fiji/haas/CheckStatusOfHaaS.java  |  2 +-
 .../java/cz/it4i/fiji/haas/CommandBase.java   | 21 --------
 .../java/cz/it4i/fiji/haas/ImageJGate.java    |  8 ---
 .../src/main/java/cz/it4i/fiji/haas/Job.java  | 12 ++++-
 .../java/cz/it4i/fiji/haas/JobManager.java    |  5 ++
 .../java/cz/it4i/fiji/haas/RunWithHaaS.java   |  2 +-
 .../haas/ui/CheckStatusOfHaaSController.java  | 52 +++++++++----------
 7 files changed, 44 insertions(+), 58 deletions(-)
 delete mode 100644 haas-imagej-client/src/main/java/cz/it4i/fiji/haas/CommandBase.java
 delete mode 100644 haas-imagej-client/src/main/java/cz/it4i/fiji/haas/ImageJGate.java

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 c448de1c..984cde4f 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 835b0ff5..00000000
--- 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 1a5ce21a..00000000
--- 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 895a73ed..f6d89146 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 193e41d6..2a6cd6c5 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 2728790b..bbae5503 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 55b671ab..68b31a1e 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));
+
 	}
 }
-- 
GitLab