From ab7d4bc1ee10d5d88f42b6b508416c26d6abfda8 Mon Sep 17 00:00:00 2001
From: Jan Kozusznik <jan@kozusznik.cz>
Date: Tue, 16 Jan 2018 13:03:05 +0100
Subject: [PATCH] fix of getJobs method

---
 .../it4i/fiji/haas/BenchmarkJobManager.java   |  4 ++--
 .../cz/it4i/fiji/haas/CheckStatusOfHaaS.java  |  2 +-
 .../src/main/java/cz/it4i/fiji/haas/Job.java  | 12 +++++-----
 .../java/cz/it4i/fiji/haas/JobManager.java    | 24 ++++++++++---------
 .../java/cz/it4i/fiji/haas/RunBenchmark.java  |  2 +-
 5 files changed, 23 insertions(+), 21 deletions(-)

diff --git a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/BenchmarkJobManager.java b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/BenchmarkJobManager.java
index 1e17bb45..0e0f2ee9 100644
--- a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/BenchmarkJobManager.java
+++ b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/BenchmarkJobManager.java
@@ -40,8 +40,8 @@ public class BenchmarkJobManager {
 		return new UploadingFileFromResource("", CONFIG_YAML);
 	}
 
-	public Collection<JobInfo> getJobs() {
-		return jobManager.getJobs();
+	public Collection<JobInfo> getJobs() throws IOException {
+		return jobManager.getJobs(progress);
 	}
 
 }
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 94ed84f0..b03c09ff 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
@@ -53,7 +53,7 @@ public class CheckStatusOfHaaS implements Command {
 				window = ModalDialogs.doModal(new CheckStatusOfHaaSWindow(getFrame(), context));
 				ProgressDialog dialog = ModalDialogs.doModal(new ProgressDialog(window));
 				dialog.setTitle("Downloading info about jobs");
-				Collection<JobInfo> jobs = jobManager.getJobs();
+				Collection<JobInfo> jobs = jobManager.getJobs(dialog);
 				int count = 0;
 				for (JobInfo ji : jobs) {
 					String item;
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 db0c5b31..1ff1eae2 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
@@ -78,18 +78,17 @@ public class Job {
 	private String name;
 
 	public Job(String name, Path basePath, Supplier<HaaSClient> haasClientSupplier, Progress progress) throws IOException {
-		this(haasClientSupplier);
+		this(haasClientSupplier, progress);
 		HaaSClient client = this.haasClientSupplier.get();
-		long id = client.createJob(name, Collections.emptyList(),
-				notifier = new P_ProgressNotifierAdapter(progress));
+		long id = client.createJob(name, Collections.emptyList(),notifier);
 		jobDir = basePath.resolve("" + id);
 		this.name = name;
 		Files.createDirectory(jobDir);
 		updateState();
 	}
 
-	public Job(Path p, Supplier<HaaSClient> haasClientSupplier) throws IOException {
-		this(haasClientSupplier);
+	public Job(Path p, Supplier<HaaSClient> haasClientSupplier, Progress progress) throws IOException {
+		this(haasClientSupplier, progress);
 		jobDir = p;
 		loadJobInfo();
 	}
@@ -108,7 +107,8 @@ public class Job {
 		client.submitJob(jobId, notifier);
 	}
 
-	private Job(Supplier<HaaSClient> haasClientSupplier) {
+	private Job(Supplier<HaaSClient> haasClientSupplier, Progress progress) {
+		notifier = new P_ProgressNotifierAdapter(progress);
 		this.haasClientSupplier = haasClientSupplier;
 	}
 
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 9382ef1e..e0414ad1 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
@@ -27,23 +27,15 @@ public class JobManager {
 
 	private Path workDirectory;
 
-	private Collection<Job> jobs = new LinkedList<>();
+	private Collection<Job> jobs;
 
 	private HaaSClient haasClient;
 
 	private Settings settings;
 
-	public JobManager(Path workDirectory, Settings settings) throws IOException {
+	public JobManager(Path workDirectory, Settings settings){
 		this.workDirectory = workDirectory;
 		this.settings = settings;
-		Files.list(this.workDirectory).filter(p -> Files.isDirectory(p) && Job.isJobPath(p)).forEach(p -> {
-			try {
-				jobs.add(new Job(p, this::getHaasClient));
-			} catch (IOException e) {
-				e.printStackTrace();
-			}
-		});
-
 	}
 
 	public JobInfo createJob(Progress progress) throws IOException {
@@ -73,7 +65,17 @@ public class JobManager {
 		return () -> jobs.stream().filter(j -> j.needsDownload()).map(j -> new JobInfo(j)).iterator();
 	}
 
-	public Collection<JobInfo> getJobs() {
+	public Collection<JobInfo> getJobs(Progress progress) throws IOException {
+		if(jobs == null) {
+			jobs = new LinkedList<>();
+			Files.list(this.workDirectory).filter(p -> Files.isDirectory(p) && Job.isJobPath(p)).forEach(p -> {
+				try {
+					jobs.add(new Job(p, this::getHaasClient, progress));
+				} catch (IOException e) {
+					e.printStackTrace();
+				}
+			});
+		}
 		return jobs.stream().map(j -> new JobInfo(j)).collect(Collectors.toList());
 	}
 
diff --git a/haas-imagej-client/src/test/java/cz/it4i/fiji/haas/RunBenchmark.java b/haas-imagej-client/src/test/java/cz/it4i/fiji/haas/RunBenchmark.java
index 48f89714..da4f5ad3 100644
--- a/haas-imagej-client/src/test/java/cz/it4i/fiji/haas/RunBenchmark.java
+++ b/haas-imagej-client/src/test/java/cz/it4i/fiji/haas/RunBenchmark.java
@@ -38,7 +38,7 @@ public class RunBenchmark {
 				log.info("job: " + ji.getId() + " hasStatus " + ji.getState());
 				if (ji.getState() == JobState.Configuring) {
 					benchmarkJobManager.startJob(ji);
-				} else if (ji.getState() != JobState.Running) {
+				} else if (ji.getState() != JobState.Running && ji.getState() != JobState.Queued) {
 					ji.downloadData(new P_Progress());
 				}
 			}
-- 
GitLab