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
};
}
public V addIfAbsent(K key) {
public synchronized V addIfAbsent(K key) {
V uov = map.computeIfAbsent(key, k -> constructObservableValue(k));
return uov;
}
public V get(K key) {
public synchronized V get(K key) {
return map.get(key);
}
public Collection<V> getAllItems() {
public synchronized Collection<V> getAllItems() {
return map.values().stream().map(val -> val).collect(Collectors.toList());
}
......
......@@ -49,9 +49,8 @@ import cz.it4i.fiji.haas_java_client.SynchronizableFileType;
import cz.it4i.fiji.haas_java_client.UploadingFile;
import net.imagej.updater.util.Progress;
public class BenchmarkJobManager implements Closeable{
public class BenchmarkJobManager implements Closeable {
private static Logger log = LoggerFactory
.getLogger(cz.it4i.fiji.haas_spim_benchmark.core.BenchmarkJobManager.class);
......@@ -60,7 +59,7 @@ public class BenchmarkJobManager implements Closeable{
public final class BenchmarkJob implements HaaSOutputHolder {
private final Job job;
public boolean isUseDemoData() {
return job.isUseDemoData();
}
......@@ -89,14 +88,14 @@ public class BenchmarkJobManager implements Closeable{
}
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));
verifiedState = null;
verifiedStateProcessed = false;
running = null;
job.submit();
job.setProperty(SPIM_OUTPUT_FILENAME_PATTERN, outputName);
}
public JobState getState() {
......@@ -111,7 +110,6 @@ public class BenchmarkJobManager implements Closeable{
job.stopUploadData();
}
public synchronized CompletableFuture<JobState> getStateAsync(Executor executor) {
if (running != null) {
return running;
......@@ -126,12 +124,12 @@ public class BenchmarkJobManager implements Closeable{
public void startDownload() throws IOException {
if (job.getState() == JobState.Finished) {
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) {
job.startDownload(downloadFailedData());
}
}
public boolean canBeDownloaded() {
return job.canBeDownloaded();
}
......@@ -390,7 +388,8 @@ public class BenchmarkJobManager implements Closeable{
private SPIMComputationAccessor getComputationAccessor() {
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
public List<String> getActualOutput(List<SynchronizableFileType> content) {
......@@ -429,7 +428,7 @@ public class BenchmarkJobManager implements Closeable{
public void setDownloaded(Boolean val) {
job.setDownloaded(val);
}
public void setUploaded(boolean b) {
job.setUploaded(b);
}
......@@ -459,9 +458,12 @@ public class BenchmarkJobManager implements Closeable{
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.storeDataInWorkdirectory(getUploadingFile());
if (job.isUseDemoData()) {
job.storeDataInWorkdirectory(getConfigYamlFile());
}
return convertJob(job);
}
......@@ -574,8 +576,8 @@ public class BenchmarkJobManager implements Closeable{
public void close() {
jobManager.close();
}
private UploadingFile getUploadingFile() {
private UploadingFile getConfigYamlFile() {
return new UploadingFileFromResource("", Constants.CONFIG_YAML);
}
......
......@@ -3,6 +3,7 @@ package cz.it4i.fiji.haas_spim_benchmark.ui;
import java.awt.Desktop;
import java.awt.Window;
import java.io.IOException;
import java.nio.file.Path;
import java.util.EnumSet;
import java.util.HashSet;
import java.util.LinkedList;
......@@ -102,7 +103,7 @@ public class BenchmarkSPIMController extends BorderPane implements CloseableCont
private void initMenu() {
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 -> {
job.getValue().startJob(p);
job.getValue().update();
......@@ -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));
}
private void createJob() {
private void askForCreateJob() {
NewJobWindow newJobWindow = new NewJobWindow(null);
ModalDialogs.doModal(newJobWindow, WindowConstants.DISPOSE_ON_CLOSE);
newJobWindow.setCreatePressedNotifier(() -> executeWSCallAsync("Creating job", p -> manager
.createJob(wd -> newJobWindow.getInputDirectory(wd), wd -> newJobWindow.getOutputDirectory(wd))));
newJobWindow.setCreatePressedNotifier(() -> executeWSCallAsync("Creating job", false,p -> doCreateJob(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) {
executorServiceUI.execute(() -> {
Desktop desktop = Desktop.getDesktop();
......@@ -184,8 +195,9 @@ public class BenchmarkSPIMController extends BorderPane implements CloseableCont
}
return null;
}, x -> {
if (update)
if (update) {
updateJobs();
}
});
}
......@@ -215,7 +227,7 @@ public class BenchmarkSPIMController extends BorderPane implements CloseableCont
executorServiceFX.execute(() -> {
for (ObservableBenchmarkJob value : registry.getAllItems()) {
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.
Finish editing this message first!
Please register or to comment