From 73c92f16d5a06228aeccec977ee7b358ed53320e Mon Sep 17 00:00:00 2001
From: Jan Kozusznik <jan@kozusznik.cz>
Date: Wed, 17 Jan 2018 13:43:03 +0100
Subject: [PATCH] modify interface

---
 .../it4i/fiji/haas/BenchmarkJobManager.java   |  2 +-
 .../src/main/java/cz/it4i/fiji/haas/Job.java  | 20 ++++++++--------
 .../java/cz/it4i/fiji/haas/JobManager.java    |  8 +++----
 .../java/cz/it4i/fiji/haas/RunWithHaaS.java   | 10 +++-----
 .../fiji/haas_java_client/HaaSClient.java     | 24 +++++++------------
 .../cz/it4i/fiji/haas_java_client/Run.java    | 14 +++++++++++
 6 files changed, 39 insertions(+), 39 deletions(-)
 create mode 100644 haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/Run.java

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 cb70898a..37b1daa0 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
@@ -41,7 +41,7 @@ public class BenchmarkJobManager {
 
 	public void startJob(long jobId) throws IOException {
 		JobInfo jobInfo = jobs.get(jobId);
-		jobInfo.uploadFilesByName(() -> Arrays.asList(CONFIG_YAML).stream());
+		jobInfo.uploadFilesByName(Arrays.asList(CONFIG_YAML));
 		String outputName = getOutputName(jobInfo.openLocalFile(CONFIG_YAML));
 		jobInfo.submit();
 		jobInfo.setProperty(SPIM_OUTPUT_FILENAME_PATTERN, outputName);
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 9399ccb5..0e92fe7a 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,7 +13,7 @@ import java.util.Properties;
 import java.util.function.Predicate;
 import java.util.function.Supplier;
 import java.util.stream.Collectors;
-import java.util.stream.Stream;
+import java.util.stream.StreamSupport;
 
 import org.scijava.log.LogService;
 import org.scijava.plugin.Parameter;
@@ -98,13 +98,15 @@ public class Job {
 		updateState();
 	}
 
-	public void uploadFiles(Supplier<Stream<UploadingFile>> files) {
+	public void uploadFiles(Iterable<UploadingFile> files) {
 		HaaSClient client = this.haasClientSupplier.get();
 		client.uploadFiles(jobId, files, notifier);
 	}
 
-	public void uploadFilesByName(Supplier<Stream<String>> files) {
-		uploadFiles(() -> files.get().map(name -> HaaSClient.getUploadingFile(jobDir.resolve(name))));
+	public void uploadFilesByName(Iterable<String> files) {
+		Iterable<UploadingFile> uploadingFiles = StreamSupport.stream(files.spliterator(), false)
+				.map((String name) -> HaaSClient.getUploadingFile(jobDir.resolve(name))).collect(Collectors.toList());
+		uploadFiles(uploadingFiles);
 	}
 
 	public void submit() {
@@ -137,7 +139,7 @@ public class Job {
 	}
 
 	public void download() {
-		download(x->true, dummy);
+		download(x -> true, dummy);
 	}
 
 	public Path storeDataInWorkdirectory(UploadingFile uploadingFile) throws IOException {
@@ -180,7 +182,7 @@ public class Job {
 	public Iterable<String> getOutput(Iterable<JobSynchronizableFile> output) {
 		HaaSClient.SynchronizableFiles taskFileOffset = new HaaSClient.SynchronizableFiles();
 		long taskId = (Long) getJobInfo().getTasks().toArray()[0];
-		output.forEach(file->taskFileOffset.addFile(taskId, file.getType(), file.getOffset()));
+		output.forEach(file -> taskFileOffset.addFile(taskId, file.getType(), file.getOffset()));
 		return haasClientSupplier.get().downloadPartsOfJobFiles(jobId, taskFileOffset).stream().map(f -> f.getContent())
 				.collect(Collectors.toList());
 	}
@@ -198,7 +200,7 @@ public class Job {
 	public String getProperty(String name) throws IOException {
 		return loadPropertiesIfExists().getProperty(name);
 	}
-	
+
 	private synchronized void saveJobinfo() throws IOException {
 		Properties prop = loadPropertiesIfExists();
 		if (needsDownload != null) {
@@ -225,7 +227,7 @@ public class Job {
 
 	private Properties loadPropertiesIfExists() throws IOException {
 		Properties prop = new Properties();
-		if(Files.exists(jobDir.resolve(JOB_INFO_FILE))) {
+		if (Files.exists(jobDir.resolve(JOB_INFO_FILE))) {
 			try (InputStream is = Files.newInputStream(jobDir.resolve(JOB_INFO_FILE))) {
 				prop.load(is);
 			}
@@ -292,6 +294,4 @@ public class Job {
 
 	}
 
-	
-
 }
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 e206c5ef..062f6926 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
@@ -9,9 +9,7 @@ import java.util.Collection;
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.function.Predicate;
-import java.util.function.Supplier;
 import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -60,7 +58,7 @@ public class JobManager {
 		};
 	}
 
-	public JobInfo startJob(Supplier<Stream<UploadingFile>> files, Progress progress) throws IOException {
+	public JobInfo startJob(Iterable<UploadingFile> files, Progress progress) throws IOException {
 		JobInfo result = createJob(progress);
 		result.uploadFiles(files);
 		result.submit();
@@ -127,11 +125,11 @@ public class JobManager {
 			this.job = job;
 		}
 
-		public void uploadFiles(Supplier<Stream<UploadingFile>> files) {
+		public void uploadFiles(Iterable<UploadingFile> files) {
 			job.uploadFiles(files);
 		}
 		
-		public void uploadFilesByName(Supplier<Stream<String>> files) {
+		public void uploadFilesByName(Iterable<String> files) {
 			job.uploadFilesByName(files);
 		}
 
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 5bfdc726..5265f178 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
@@ -51,13 +51,9 @@ public class RunWithHaaS implements Command {
 	public void run() {
 		try {
 			jobManager = new JobManager(getWorkingDirectoryPath(), TestingConstants.getSettings());
-			jobManager.startJob(() -> {
-				try {
-					return getContent(dataDirectory).stream().map(HaaSClient::getUploadingFile);
-				} catch (IOException e) {
-					throw new RuntimeException(e);
-				}
-			}, ModalDialogs.doModal(new ProgressDialog(getFrame())));
+			jobManager.startJob(
+					getContent(dataDirectory).stream().map(HaaSClient::getUploadingFile).collect(Collectors.toList()),
+					ModalDialogs.doModal(new ProgressDialog(getFrame())));
 		} catch (IOException e) {
 			log.error(e);
 		}
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 22d31f12..daa379cf 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
@@ -16,9 +16,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.function.Predicate;
-import java.util.function.Supplier;
 import java.util.stream.Collectors;
-import java.util.stream.Stream;
 import java.util.stream.StreamSupport;
 
 import javax.xml.rpc.ServiceException;
@@ -164,10 +162,11 @@ public class HaaSClient {
 	}
 
 	public long start(Iterable<Path> files, String name, Collection<Entry<String, String>> templateParameters) {
-		return start(files, name, templateParameters, dummyNotifier);
+		Iterable<UploadingFile> uploadingFiles = StreamSupport.stream(files.spliterator(), false).map(HaaSClient::getUploadingFile).collect(Collectors.toList());
+		return start(uploadingFiles, name, templateParameters, dummyNotifier);
 	}
 
-	public long start(Supplier<Stream<UploadingFile>> files, String name,
+	public long start(Iterable<UploadingFile> files, String name,
 			Collection<Entry<String, String>> templateParameters, ProgressNotifier notifier) {
 		notifier.setTitle("Starting job");
 		try {
@@ -190,7 +189,7 @@ public class HaaSClient {
 		}
 	}
 
-	public void uploadFiles(long jobId, Supplier<Stream<UploadingFile>> files, ProgressNotifier notifier) {
+	public void uploadFiles(long jobId, Iterable<UploadingFile> files, ProgressNotifier notifier) {
 		try {
 			doUploadFiles(jobId, files, notifier);
 		} catch (ServiceException | JSchException | IOException e) {
@@ -342,16 +341,16 @@ public class HaaSClient {
 		notifier.done();
 	}
 
-	private void doUploadFiles(long jobId, Supplier<Stream<UploadingFile>> files, ProgressNotifier notifier)
+	private void doUploadFiles(long jobId, Iterable<UploadingFile> files, ProgressNotifier notifier)
 			throws RemoteException, ServiceException, JSchException, IOException, UnsupportedEncodingException {
 		FileTransferMethodExt fileTransfer = getFileTransfer().getFileTransferMethod(jobId, getSessionID());
-		List<Long> totalSizes = StreamSupport.stream(files.get().spliterator(), false).map(f -> f.getLength())
+		List<Long> totalSizes = StreamSupport.stream(files.spliterator(), false).map(f -> f.getLength())
 				.collect(Collectors.toList());
 		long totalSize = totalSizes.stream().mapToLong(l -> l.longValue()).sum();
 		TransferFileProgressForHaaSClient progress = new TransferFileProgressForHaaSClient(totalSize, notifier);
 		try (ScpClient scpClient = getScpClient(fileTransfer)) {
 			int index = 0;
-			for (UploadingFile file : (Iterable<UploadingFile>) files.get()::iterator) {
+			for (UploadingFile file : files) {
 				String item;
 				progress.startNewFile(totalSizes.get(index));
 				notifier.addItem(item = "Uploading file: " + file.getName());
@@ -382,14 +381,7 @@ public class HaaSClient {
 		return String.format("Created job: %d\n", jobId);
 	}
 
-	private long start(Iterable<Path> files, String name, Collection<Entry<String, String>> templateParameters,
-			ProgressNotifier notifier) {
-		Supplier<Stream<UploadingFile>> fileStream = () -> StreamSupport.stream(files.spliterator(), false)
-				.map(file -> getUploadingFile(file));
-		return start(fileStream, name, templateParameters, notifier);
-	}
-
-	private List<Long> getSizes(List<String> asList, ScpClient scpClient, ProgressNotifier notifier)
+		private List<Long> getSizes(List<String> asList, ScpClient scpClient, ProgressNotifier notifier)
 			throws JSchException, IOException {
 		List<Long> result = new LinkedList<>();
 
diff --git a/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/Run.java b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/Run.java
new file mode 100644
index 00000000..9e69a403
--- /dev/null
+++ b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/Run.java
@@ -0,0 +1,14 @@
+package cz.it4i.fiji.haas_java_client;
+
+import java.util.stream.Stream;
+
+import java.util.Arrays;
+
+public class Run {
+	public static void main(String[] args) {
+		Stream<String> stream = Arrays.asList("").stream();
+		stream.iterator();
+		stream.iterator();
+	}
+	
+}
-- 
GitLab