Skip to content
Snippets Groups Projects
Commit 27915516 authored by Jan Kožusznik's avatar Jan Kožusznik
Browse files

fix: correct creation of job in table,

parent 3270ffa1
No related branches found
No related tags found
No related merge requests found
...@@ -30,16 +30,16 @@ public abstract class ObservableValueRegistry<K, V extends UpdatableObservableVa ...@@ -30,16 +30,16 @@ public abstract class ObservableValueRegistry<K, V extends UpdatableObservableVa
}; };
} }
public V addIfAbsent(K key) { public synchronized V addIfAbsent(K key) {
V uov = map.computeIfAbsent(key, k -> constructObservableValue(k)); V uov = map.computeIfAbsent(key, k -> constructObservableValue(k));
return uov; return uov;
} }
public V get(K key) { public synchronized V get(K key) {
return map.get(key); return map.get(key);
} }
public Collection<V> getAllItems() { public synchronized Collection<V> getAllItems() {
return map.values().stream().map(val -> val).collect(Collectors.toList()); return map.values().stream().map(val -> val).collect(Collectors.toList());
} }
......
...@@ -49,9 +49,8 @@ import cz.it4i.fiji.haas_java_client.SynchronizableFileType; ...@@ -49,9 +49,8 @@ import cz.it4i.fiji.haas_java_client.SynchronizableFileType;
import cz.it4i.fiji.haas_java_client.UploadingFile; import cz.it4i.fiji.haas_java_client.UploadingFile;
import net.imagej.updater.util.Progress; import net.imagej.updater.util.Progress;
public class BenchmarkJobManager implements Closeable{ public class BenchmarkJobManager implements Closeable {
private static Logger log = LoggerFactory private static Logger log = LoggerFactory
.getLogger(cz.it4i.fiji.haas_spim_benchmark.core.BenchmarkJobManager.class); .getLogger(cz.it4i.fiji.haas_spim_benchmark.core.BenchmarkJobManager.class);
...@@ -60,7 +59,7 @@ public class BenchmarkJobManager implements Closeable{ ...@@ -60,7 +59,7 @@ public class BenchmarkJobManager implements Closeable{
public final class BenchmarkJob implements HaaSOutputHolder { public final class BenchmarkJob implements HaaSOutputHolder {
private final Job job; private final Job job;
public boolean isUseDemoData() { public boolean isUseDemoData() {
return job.isUseDemoData(); return job.isUseDemoData();
} }
...@@ -89,14 +88,14 @@ public class BenchmarkJobManager implements Closeable{ ...@@ -89,14 +88,14 @@ public class BenchmarkJobManager implements Closeable{
} }
public synchronized void startJob(Progress progress) throws IOException { public synchronized void startJob(Progress progress) throws IOException {
job.uploadFile(Constants.CONFIG_YAML, new P_ProgressNotifierAdapter(progress)); job.uploadFile(Constants.CONFIG_YAML, new P_ProgressNotifierAdapter(progress));
String outputName = getOutputName(job.openLocalFile(Constants.CONFIG_YAML)); String outputName = getOutputName(job.openLocalFile(Constants.CONFIG_YAML));
verifiedState = null; verifiedState = null;
verifiedStateProcessed = false; verifiedStateProcessed = false;
running = null; running = null;
job.submit(); job.submit();
job.setProperty(SPIM_OUTPUT_FILENAME_PATTERN, outputName); job.setProperty(SPIM_OUTPUT_FILENAME_PATTERN, outputName);
} }
public JobState getState() { public JobState getState() {
...@@ -111,7 +110,6 @@ public class BenchmarkJobManager implements Closeable{ ...@@ -111,7 +110,6 @@ public class BenchmarkJobManager implements Closeable{
job.stopUploadData(); job.stopUploadData();
} }
public synchronized CompletableFuture<JobState> getStateAsync(Executor executor) { public synchronized CompletableFuture<JobState> getStateAsync(Executor executor) {
if (running != null) { if (running != null) {
return running; return running;
...@@ -126,12 +124,12 @@ public class BenchmarkJobManager implements Closeable{ ...@@ -126,12 +124,12 @@ public class BenchmarkJobManager implements Closeable{
public void startDownload() throws IOException { public void startDownload() throws IOException {
if (job.getState() == JobState.Finished) { if (job.getState() == JobState.Finished) {
String filePattern = job.getProperty(SPIM_OUTPUT_FILENAME_PATTERN); String filePattern = job.getProperty(SPIM_OUTPUT_FILENAME_PATTERN);
job.startDownload(downloadFinishedData(filePattern) ); job.startDownload(downloadFinishedData(filePattern));
} else if (job.getState() == JobState.Failed || job.getState() == JobState.Canceled) { } else if (job.getState() == JobState.Failed || job.getState() == JobState.Canceled) {
job.startDownload(downloadFailedData()); job.startDownload(downloadFailedData());
} }
} }
public boolean canBeDownloaded() { public boolean canBeDownloaded() {
return job.canBeDownloaded(); return job.canBeDownloaded();
} }
...@@ -390,7 +388,8 @@ public class BenchmarkJobManager implements Closeable{ ...@@ -390,7 +388,8 @@ public class BenchmarkJobManager implements Closeable{
private SPIMComputationAccessor getComputationAccessor() { private SPIMComputationAccessor getComputationAccessor() {
SPIMComputationAccessor result = new SPIMComputationAccessor() { SPIMComputationAccessor result = new SPIMComputationAccessor() {
private final HaaSOutputHolder outputOfSnakemake = new HaaSOutputHolderImpl(list -> job.getOutput(list)); private final HaaSOutputHolder outputOfSnakemake = new HaaSOutputHolderImpl(
list -> job.getOutput(list));
@Override @Override
public List<String> getActualOutput(List<SynchronizableFileType> content) { public List<String> getActualOutput(List<SynchronizableFileType> content) {
...@@ -429,7 +428,7 @@ public class BenchmarkJobManager implements Closeable{ ...@@ -429,7 +428,7 @@ public class BenchmarkJobManager implements Closeable{
public void setDownloaded(Boolean val) { public void setDownloaded(Boolean val) {
job.setDownloaded(val); job.setDownloaded(val);
} }
public void setUploaded(boolean b) { public void setUploaded(boolean b) {
job.setUploaded(b); job.setUploaded(b);
} }
...@@ -459,9 +458,12 @@ public class BenchmarkJobManager implements Closeable{ ...@@ -459,9 +458,12 @@ public class BenchmarkJobManager implements Closeable{
jobManager = new JobManager(params.workingDirectory(), constructSettingsFromParams(params)); jobManager = new JobManager(params.workingDirectory(), constructSettingsFromParams(params));
} }
public BenchmarkJob createJob(Function<Path, Path> inputDirectoryProvider,Function<Path, Path> outputDirectoryProvider) throws IOException { public BenchmarkJob createJob(Function<Path, Path> inputDirectoryProvider,
Function<Path, Path> outputDirectoryProvider) throws IOException {
Job job = jobManager.createJob(inputDirectoryProvider, outputDirectoryProvider); Job job = jobManager.createJob(inputDirectoryProvider, outputDirectoryProvider);
job.storeDataInWorkdirectory(getUploadingFile()); if (job.isUseDemoData()) {
job.storeDataInWorkdirectory(getConfigYamlFile());
}
return convertJob(job); return convertJob(job);
} }
...@@ -574,8 +576,8 @@ public class BenchmarkJobManager implements Closeable{ ...@@ -574,8 +576,8 @@ public class BenchmarkJobManager implements Closeable{
public void close() { public void close() {
jobManager.close(); jobManager.close();
} }
private UploadingFile getUploadingFile() { private UploadingFile getConfigYamlFile() {
return new UploadingFileFromResource("", Constants.CONFIG_YAML); return new UploadingFileFromResource("", Constants.CONFIG_YAML);
} }
......
...@@ -3,6 +3,7 @@ package cz.it4i.fiji.haas_spim_benchmark.ui; ...@@ -3,6 +3,7 @@ package cz.it4i.fiji.haas_spim_benchmark.ui;
import java.awt.Desktop; import java.awt.Desktop;
import java.awt.Window; import java.awt.Window;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Path;
import java.util.EnumSet; import java.util.EnumSet;
import java.util.HashSet; import java.util.HashSet;
import java.util.LinkedList; import java.util.LinkedList;
...@@ -102,7 +103,7 @@ public class BenchmarkSPIMController extends BorderPane implements CloseableCont ...@@ -102,7 +103,7 @@ public class BenchmarkSPIMController extends BorderPane implements CloseableCont
private void initMenu() { private void initMenu() {
TableViewContextMenu<ObservableBenchmarkJob> menu = new TableViewContextMenu<>(jobs); TableViewContextMenu<ObservableBenchmarkJob> menu = new TableViewContextMenu<>(jobs);
menu.addItem("Create job", x -> createJob(), j -> true); menu.addItem("Create job", x -> askForCreateJob(), j -> true);
menu.addItem("Start job", job -> executeWSCallAsync("Starting job", p -> { menu.addItem("Start job", job -> executeWSCallAsync("Starting job", p -> {
job.getValue().startJob(p); job.getValue().startJob(p);
job.getValue().update(); job.getValue().update();
...@@ -150,14 +151,24 @@ public class BenchmarkSPIMController extends BorderPane implements CloseableCont ...@@ -150,14 +151,24 @@ public class BenchmarkSPIMController extends BorderPane implements CloseableCont
menu.addItem("Open working directory", j -> open(j.getValue()), x -> JavaFXRoutines.notNullValue(x, j -> true)); menu.addItem("Open working directory", j -> open(j.getValue()), x -> JavaFXRoutines.notNullValue(x, j -> true));
} }
private void createJob() { private void askForCreateJob() {
NewJobWindow newJobWindow = new NewJobWindow(null); NewJobWindow newJobWindow = new NewJobWindow(null);
ModalDialogs.doModal(newJobWindow, WindowConstants.DISPOSE_ON_CLOSE); ModalDialogs.doModal(newJobWindow, WindowConstants.DISPOSE_ON_CLOSE);
newJobWindow.setCreatePressedNotifier(() -> executeWSCallAsync("Creating job", p -> manager newJobWindow.setCreatePressedNotifier(() -> executeWSCallAsync("Creating job", false,p -> doCreateJob(wd -> newJobWindow.getInputDirectory(wd), wd -> newJobWindow.getOutputDirectory(wd))));
.createJob(wd -> newJobWindow.getInputDirectory(wd), wd -> newJobWindow.getOutputDirectory(wd))));
} }
private void doCreateJob(Function<Path,Path> inputProvider, Function<Path,Path> outputProvider) throws IOException {
BenchmarkJob bj = manager.createJob(inputProvider, outputProvider);
ObservableBenchmarkJob obj = registry.addIfAbsent(bj);
addJobToItems(obj);
jobs.refresh();
}
private synchronized void addJobToItems(ObservableBenchmarkJob obj) {
jobs.getItems().add(obj);
}
private void open(BenchmarkJob j) { private void open(BenchmarkJob j) {
executorServiceUI.execute(() -> { executorServiceUI.execute(() -> {
Desktop desktop = Desktop.getDesktop(); Desktop desktop = Desktop.getDesktop();
...@@ -184,8 +195,9 @@ public class BenchmarkSPIMController extends BorderPane implements CloseableCont ...@@ -184,8 +195,9 @@ public class BenchmarkSPIMController extends BorderPane implements CloseableCont
} }
return null; return null;
}, x -> { }, x -> {
if (update) if (update) {
updateJobs(); updateJobs();
}
}); });
} }
...@@ -215,7 +227,7 @@ public class BenchmarkSPIMController extends BorderPane implements CloseableCont ...@@ -215,7 +227,7 @@ public class BenchmarkSPIMController extends BorderPane implements CloseableCont
executorServiceFX.execute(() -> { executorServiceFX.execute(() -> {
for (ObservableBenchmarkJob value : registry.getAllItems()) { for (ObservableBenchmarkJob value : registry.getAllItems()) {
if (!actual.contains(value)) { if (!actual.contains(value)) {
this.jobs.getItems().add(value); addJobToItems(value);
} }
} }
}); });
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment