Skip to content
Snippets Groups Projects
Commit cfe12a42 authored by Petr Bainar's avatar Petr Bainar
Browse files

Merge branch 'iss1122_uploadInfo' into 'master'

Iss1122 upload info

See merge request fiji/haas-java-client!21
parents 6b8b19c6 7395b545
No related branches found
No related tags found
1 merge request!21Iss1122 upload info
Showing
with 158 additions and 85 deletions
...@@ -20,6 +20,7 @@ import javafx.fxml.FXMLLoader; ...@@ -20,6 +20,7 @@ import javafx.fxml.FXMLLoader;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;
import javafx.scene.control.TableRow; import javafx.scene.control.TableRow;
import javafx.scene.control.TableView; import javafx.scene.control.TableView;
import javafx.scene.paint.Color;
public interface JavaFXRoutines { public interface JavaFXRoutines {
...@@ -97,12 +98,15 @@ public interface JavaFXRoutines { ...@@ -97,12 +98,15 @@ public interface JavaFXRoutines {
return pred.test(j.getValue()); return pred.test(j.getValue());
} }
static public<T,U extends ObservableValue<T>>void setOnDoubleClickAction(TableView<U> tableView ,ExecutorService executorService,Predicate<T> openAllowed, Consumer<T> r) { static public <T, U extends ObservableValue<T>> void setOnDoubleClickAction(
TableView<U> tableView, ExecutorService executorService,
Predicate<U> openAllowed, Consumer<U> r)
{
tableView.setRowFactory(tv -> { tableView.setRowFactory(tv -> {
TableRow<U> row = new TableRow<>(); TableRow<U> row = new TableRow<>();
row.setOnMouseClicked(event -> { row.setOnMouseClicked(event -> {
if (event.getClickCount() == 2 && (!row.isEmpty())) { if (event.getClickCount() == 2 && (!row.isEmpty())) {
T rowData = row.getItem().getValue(); U rowData = row.getItem();
if (openAllowed.test(rowData)) { if (openAllowed.test(rowData)) {
executorService.execute(() -> r.accept(rowData)); executorService.execute(() -> r.accept(rowData));
} }
...@@ -111,4 +115,9 @@ public interface JavaFXRoutines { ...@@ -111,4 +115,9 @@ public interface JavaFXRoutines {
return row; return row;
}); });
} }
public static String toCss(Color color) {
return "rgb(" + Math.round(color.getRed() * 255.0) + "," + Math.round(color
.getGreen() * 255.0) + "," + Math.round(color.getBlue() * 255.0) + ")";
}
} }
...@@ -92,11 +92,12 @@ public class BenchmarkJobManager implements Closeable { ...@@ -92,11 +92,12 @@ public class BenchmarkJobManager implements Closeable {
public void setDownloadNotifier(Progress progress) { public void setDownloadNotifier(Progress progress) {
job.setDownloadNotifier(downloadNotifier = job.setDownloadNotifier(downloadNotifier =
createDownloadNotifierProcessingResultCSV(convertTo(progress))); createDownloadNotifierProcessingResultCSV(convertToProgressNotifier(
progress)));
} }
public void setUploadNotifier(Progress progress) { public void setUploadNotifier(Progress progress) {
job.setUploadNotifier(convertTo(progress)); job.setUploadNotifier(convertToProgressNotifier(progress));
} }
public synchronized void startJob(Progress progress) throws IOException { public synchronized void startJob(Progress progress) throws IOException {
...@@ -292,7 +293,7 @@ public class BenchmarkJobManager implements Closeable { ...@@ -292,7 +293,7 @@ public class BenchmarkJobManager implements Closeable {
return job.getFileTransferInfo(); return job.getFileTransferInfo();
} }
private ProgressNotifier convertTo(Progress progress) { private ProgressNotifier convertToProgressNotifier(Progress progress) {
return progress == null ? null : new ProgressNotifierAdapter(progress); return progress == null ? null : new ProgressNotifierAdapter(progress);
} }
......
...@@ -130,6 +130,7 @@ public class ObservableBenchmarkJob extends UpdatableObservableValue<BenchmarkJo ...@@ -130,6 +130,7 @@ public class ObservableBenchmarkJob extends UpdatableObservableValue<BenchmarkJo
@Override @Override
public void itemDone(Object item) { public void itemDone(Object item) {
fireValueChangedEvent();
} }
@Override @Override
......
...@@ -149,8 +149,8 @@ public class BenchmarkSPIMControl extends BorderPane implements ...@@ -149,8 +149,8 @@ public class BenchmarkSPIMControl extends BorderPane implements
}), job -> JavaFXRoutines.notNullValue(job, j -> j }), job -> JavaFXRoutines.notNullValue(job, j -> j
.getState() == JobState.Running || j.getState() == JobState.Queued)); .getState() == JobState.Running || j.getState() == JobState.Queued));
menu.addItem("Job dashboard", job -> openJobDetailsWindow(job.getValue()), menu.addItem("Job dashboard", obsBenchmarkJob -> openJobDetailsWindow(
job -> JavaFXRoutines.notNullValue(job, j -> true)); obsBenchmarkJob), job -> JavaFXRoutines.notNullValue(job, j -> true));
menu.addItem("Open job subdirectory", j -> openJobSubdirectory(j menu.addItem("Open job subdirectory", j -> openJobSubdirectory(j
.getValue()), x -> JavaFXRoutines.notNullValue(x, j -> true)); .getValue()), x -> JavaFXRoutines.notNullValue(x, j -> true));
menu.addItem("Open in BigDataViewer", j -> openBigDataViewer(j.getValue()), menu.addItem("Open in BigDataViewer", j -> openBigDataViewer(j.getValue()),
...@@ -333,7 +333,8 @@ public class BenchmarkSPIMControl extends BorderPane implements ...@@ -333,7 +333,8 @@ public class BenchmarkSPIMControl extends BorderPane implements
setCellValueFactory(6, j -> decorateTransfer(registry.get(j) setCellValueFactory(6, j -> decorateTransfer(registry.get(j)
.getDownloadProgress())); .getDownloadProgress()));
JavaFXRoutines.setOnDoubleClickAction(jobs, executorServiceJobState, JavaFXRoutines.setOnDoubleClickAction(jobs, executorServiceJobState,
openJobDetailsWindow -> true, bj -> openJobDetailsWindow(bj)); openJobDetailsWindow -> true, obsBenchmarkJob -> openJobDetailsWindow(
obsBenchmarkJob));
} }
private String decorateTransfer(TransferProgress progress) { private String decorateTransfer(TransferProgress progress) {
...@@ -378,7 +379,7 @@ public class BenchmarkSPIMControl extends BorderPane implements ...@@ -378,7 +379,7 @@ public class BenchmarkSPIMControl extends BorderPane implements
"Doubleclick to open Dashboard"))); "Doubleclick to open Dashboard")));
} }
private void openJobDetailsWindow(BenchmarkJob job) { private void openJobDetailsWindow(ObservableBenchmarkJob job) {
new JobDetailWindow(root, job).setVisible(true); new JobDetailWindow(root, job).setVisible(true);
} }
......
...@@ -3,21 +3,25 @@ package cz.it4i.fiji.haas_spim_benchmark.ui; ...@@ -3,21 +3,25 @@ package cz.it4i.fiji.haas_spim_benchmark.ui;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.function.Function;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import cz.it4i.fiji.haas.ui.CloseableControl; import cz.it4i.fiji.haas.ui.CloseableControl;
import cz.it4i.fiji.haas.ui.JavaFXRoutines; import cz.it4i.fiji.haas.ui.JavaFXRoutines;
import cz.it4i.fiji.haas.ui.UpdatableObservableValue; import cz.it4i.fiji.haas.ui.TableCellAdapter;
import cz.it4i.fiji.haas.ui.UpdatableObservableValue.UpdateStatus;
import cz.it4i.fiji.haas_java_client.FileTransferInfo; import cz.it4i.fiji.haas_java_client.FileTransferInfo;
import cz.it4i.fiji.haas_spim_benchmark.core.BenchmarkJobManager.BenchmarkJob; import cz.it4i.fiji.haas_java_client.FileTransferState;
import javafx.beans.value.ObservableValue; import cz.it4i.fiji.haas_spim_benchmark.core.ObservableBenchmarkJob;
import javafx.beans.InvalidationListener;
import javafx.beans.Observable;
import javafx.beans.value.ObservableValueBase;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableRow;
import javafx.scene.control.TableView; import javafx.scene.control.TableView;
import javafx.scene.layout.BorderPane; import javafx.scene.layout.BorderPane;
import javafx.scene.paint.Color;
public class DataTransferController extends BorderPane implements public class DataTransferController extends BorderPane implements
CloseableControl CloseableControl
...@@ -25,55 +29,110 @@ public class DataTransferController extends BorderPane implements ...@@ -25,55 +29,110 @@ public class DataTransferController extends BorderPane implements
private static final String FXML_FILE_NAME = "DataTransfer.fxml"; private static final String FXML_FILE_NAME = "DataTransfer.fxml";
@SuppressWarnings("unused")
private static Logger log = LoggerFactory.getLogger( private static Logger log = LoggerFactory.getLogger(
cz.it4i.fiji.haas_spim_benchmark.ui.DataTransferController.class); cz.it4i.fiji.haas_spim_benchmark.ui.DataTransferController.class);
@FXML @FXML
private TableView<ObservableValue<FileTransferInfo>> filesToUpload; private TableView<SimpleObservableValue<FileTransferInfo>> files;
private BenchmarkJob job; private ObservableBenchmarkJob job;
private final InvalidationListener listener = new InvalidationListener() {
@Override
public void invalidated(final Observable observable) {
if (!ObservableBenchmarkJob.class.isAssignableFrom(observable
.getClass()))
{
log.debug(
"Invalidated Observable is not of the ObservableBenchmarkJob type.");
return;
}
files.getItems().clear();
final List<SimpleObservableValue<FileTransferInfo>> tempList =
new LinkedList<>();
((ObservableBenchmarkJob) observable).getValue().getFileTransferInfo()
.forEach(i -> {
tempList.add(new SimpleObservableValue<>(i));
});
files.getItems().addAll(tempList);
}
};
public DataTransferController() { public DataTransferController() {
JavaFXRoutines.initRootAndController(FXML_FILE_NAME, this); JavaFXRoutines.initRootAndController(FXML_FILE_NAME, this);
initTable(); initTable();
} }
public void setJob(final BenchmarkJob job) { public void setJob(final ObservableBenchmarkJob job) {
this.job = job; this.job = job;
fillTable(); this.job.addListener(listener);
listener.invalidated(job);
} }
// -- CloseableControl methods -- // -- CloseableControl methods --
@Override @Override
public void close() { public void close() {
// DO NOTHING job.removeListener(listener);
} }
// -- Helper methods -- // -- Helper methods --
private void initTable() { private void initTable() {
setCellValueFactory(0, f -> f.getPathAsString());
setCellValueFactory(1, f -> f.getState().toString());
}
private void setCellValueFactory(final int columnIndex, final int columnIndexPath = 0;
final Function<FileTransferInfo, String> mapper) final int columnIndexState = 1;
{
JavaFXRoutines.setCellValueFactory(filesToUpload, columnIndex, mapper); JavaFXRoutines.setCellValueFactory(files, columnIndexPath, f -> f
.getPathAsString());
JavaFXRoutines.setCellValueFactory(files, columnIndexState, f -> f
.getState());
final TableColumn<SimpleObservableValue<FileTransferInfo>, FileTransferState> stateColumn =
(TableColumn<SimpleObservableValue<FileTransferInfo>, FileTransferState>) files
.getColumns().get(columnIndexState);
stateColumn.setCellFactory(column -> new TableCellAdapter<>((cell, val,
empty) -> {
if (val == null || empty) {
return;
}
TableRow<SimpleObservableValue<FileTransferInfo>> currentRow = cell
.getTableRow();
cell.setText(val.toString());
if (val.equals(FileTransferState.Finished)) {
currentRow.setStyle("-fx-text-background-color: " + JavaFXRoutines
.toCss(Color.rgb(0x41, 0xB2, 0x80)));
}
else {
currentRow.setStyle("-fx-text-background-color: " + JavaFXRoutines
.toCss(Color.rgb(0x30, 0xA2, 0xCC)));
}
}));
} }
private void fillTable() { // -- Private classes --
private class SimpleObservableValue<T> extends ObservableValueBase<T> {
private final T wrappedObject;
final List<ObservableValue<FileTransferInfo>> tempList = new LinkedList<>(); public SimpleObservableValue(final T wrappedObject) {
this.wrappedObject = wrappedObject;
}
job.getFileTransferInfo().forEach(i -> { @Override
tempList.add(new UpdatableObservableValue<>(i, public T getValue() {
x -> UpdateStatus.NotUpdated, x -> x)); return wrappedObject;
}); }
filesToUpload.getItems().addAll(tempList);
} }
} }
...@@ -11,8 +11,8 @@ import cz.it4i.fiji.haas.ui.InitiableControl; ...@@ -11,8 +11,8 @@ import cz.it4i.fiji.haas.ui.InitiableControl;
import cz.it4i.fiji.haas.ui.JavaFXRoutines; import cz.it4i.fiji.haas.ui.JavaFXRoutines;
import cz.it4i.fiji.haas_java_client.JobState; import cz.it4i.fiji.haas_java_client.JobState;
import cz.it4i.fiji.haas_java_client.SynchronizableFileType; import cz.it4i.fiji.haas_java_client.SynchronizableFileType;
import cz.it4i.fiji.haas_spim_benchmark.core.BenchmarkJobManager.BenchmarkJob;
import cz.it4i.fiji.haas_spim_benchmark.core.Constants; import cz.it4i.fiji.haas_spim_benchmark.core.Constants;
import cz.it4i.fiji.haas_spim_benchmark.core.ObservableBenchmarkJob;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.control.Tab; import javafx.scene.control.Tab;
import javafx.scene.control.TabPane; import javafx.scene.control.TabPane;
...@@ -47,13 +47,13 @@ public class JobDetailControl extends TabPane implements CloseableControl, ...@@ -47,13 +47,13 @@ public class JobDetailControl extends TabPane implements CloseableControl,
private final HaaSOutputObservableValueRegistry observableValueRegistry; private final HaaSOutputObservableValueRegistry observableValueRegistry;
private final BenchmarkJob job; private final ObservableBenchmarkJob job;
public JobDetailControl(final BenchmarkJob job) { public JobDetailControl(final ObservableBenchmarkJob job) {
JavaFXRoutines.initRootAndController("JobDetail.fxml", this); JavaFXRoutines.initRootAndController("JobDetail.fxml", this);
progressView.setJob(job); progressView.setJob(job);
observableValueRegistry = new HaaSOutputObservableValueRegistry(job, observableValueRegistry = new HaaSOutputObservableValueRegistry(job
Constants.HAAS_UPDATE_TIMEOUT / .getValue(), Constants.HAAS_UPDATE_TIMEOUT /
Constants.UI_TO_HAAS_FREQUENCY_UPDATE_RATIO); Constants.UI_TO_HAAS_FREQUENCY_UPDATE_RATIO);
errorOutput.setObservable(observableValueRegistry.createObservable( errorOutput.setObservable(observableValueRegistry.createObservable(
SynchronizableFileType.StandardErrorFile)); SynchronizableFileType.StandardErrorFile));
...@@ -70,9 +70,12 @@ public class JobDetailControl extends TabPane implements CloseableControl, ...@@ -70,9 +70,12 @@ public class JobDetailControl extends TabPane implements CloseableControl,
@Override @Override
public void init(final Window parameter) { public void init(final Window parameter) {
if (job.getState() == JobState.Disposed) { if (job.getValue().getState() == JobState.Disposed) {
// TODO: Handle this? // TODO: Handle this?
log.debug("Job " + job.getId() + " state has been resolved as Disposed."); if (log.isInfoEnabled()) {
log.info("Job " + job.getValue().getId() +
" state has been resolved as Disposed.");
}
} }
disableNonPermanentTabs(); disableNonPermanentTabs();
...@@ -100,9 +103,10 @@ public class JobDetailControl extends TabPane implements CloseableControl, ...@@ -100,9 +103,10 @@ public class JobDetailControl extends TabPane implements CloseableControl,
* Checks whether execution details are available * Checks whether execution details are available
*/ */
private boolean areExecutionDetailsAvailable() { private boolean areExecutionDetailsAvailable() {
return job.getState() == JobState.Running || job return job.getValue().getState() == JobState.Running || job.getValue()
.getState() == JobState.Finished || job.getState() == JobState.Failed || .getState() == JobState.Finished || job.getValue()
job.getState() == JobState.Canceled; .getState() == JobState.Failed || job.getValue()
.getState() == JobState.Canceled;
} }
/* /*
......
...@@ -4,17 +4,17 @@ package cz.it4i.fiji.haas_spim_benchmark.ui; ...@@ -4,17 +4,17 @@ package cz.it4i.fiji.haas_spim_benchmark.ui;
import java.awt.Window; import java.awt.Window;
import cz.it4i.fiji.haas.ui.FXFrame; import cz.it4i.fiji.haas.ui.FXFrame;
import cz.it4i.fiji.haas_spim_benchmark.core.BenchmarkJobManager.BenchmarkJob; import cz.it4i.fiji.haas_spim_benchmark.core.ObservableBenchmarkJob;
public class JobDetailWindow extends FXFrame<JobDetailControl> { public class JobDetailWindow extends FXFrame<JobDetailControl> {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public JobDetailWindow(Window parentWindow, BenchmarkJob job) { public JobDetailWindow(Window parentWindow, ObservableBenchmarkJob job) {
super(parentWindow, () -> { super(parentWindow, () -> {
return new JobDetailControl(job); return new JobDetailControl(job);
}); });
setTitle("Job dashboard for job #" + job.getId()); setTitle("Job dashboard for job #" + job.getValue().getId());
} }
} }
...@@ -15,13 +15,14 @@ import cz.it4i.fiji.haas.ui.JavaFXRoutines; ...@@ -15,13 +15,14 @@ import cz.it4i.fiji.haas.ui.JavaFXRoutines;
import cz.it4i.fiji.haas.ui.ShellRoutines; import cz.it4i.fiji.haas.ui.ShellRoutines;
import cz.it4i.fiji.haas.ui.UpdatableObservableValue; import cz.it4i.fiji.haas.ui.UpdatableObservableValue;
import cz.it4i.fiji.haas.ui.UpdatableObservableValue.UpdateStatus; import cz.it4i.fiji.haas.ui.UpdatableObservableValue.UpdateStatus;
import cz.it4i.fiji.haas_spim_benchmark.core.BenchmarkJobManager.BenchmarkJob; import cz.it4i.fiji.haas_spim_benchmark.core.ObservableBenchmarkJob;
import javafx.beans.value.ObservableValue; import javafx.beans.value.ObservableValue;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.control.TableView; import javafx.scene.control.TableView;
import javafx.scene.layout.BorderPane; import javafx.scene.layout.BorderPane;
public class JobPropertiesControl extends BorderPane implements Closeable { public class JobPropertiesControl extends BorderPane implements Closeable {
private static final String FXML_FILE_NAME = "JobProperties.fxml"; private static final String FXML_FILE_NAME = "JobProperties.fxml";
public static final Logger log = LoggerFactory public static final Logger log = LoggerFactory
.getLogger(cz.it4i.fiji.haas_spim_benchmark.ui.JobPropertiesControl.class); .getLogger(cz.it4i.fiji.haas_spim_benchmark.ui.JobPropertiesControl.class);
...@@ -29,7 +30,7 @@ public class JobPropertiesControl extends BorderPane implements Closeable { ...@@ -29,7 +30,7 @@ public class JobPropertiesControl extends BorderPane implements Closeable {
@FXML @FXML
private TableView<ObservableValue<P_Value>> properties; private TableView<ObservableValue<P_Value>> properties;
private BenchmarkJob job; private ObservableBenchmarkJob job;
private final ExecutorService executorServiceUI; private final ExecutorService executorServiceUI;
...@@ -39,7 +40,7 @@ public class JobPropertiesControl extends BorderPane implements Closeable { ...@@ -39,7 +40,7 @@ public class JobPropertiesControl extends BorderPane implements Closeable {
initTable(); initTable();
} }
public void setJob(BenchmarkJob job) { public void setJob(ObservableBenchmarkJob job) {
this.job = job; this.job = job;
fillTable(); fillTable();
} }
...@@ -53,9 +54,9 @@ public class JobPropertiesControl extends BorderPane implements Closeable { ...@@ -53,9 +54,9 @@ public class JobPropertiesControl extends BorderPane implements Closeable {
setCellValueFactory(0, s -> s.getName()); setCellValueFactory(0, s -> s.getName());
setCellValueFactory(1, s -> s.getValueAsString()); setCellValueFactory(1, s -> s.getValueAsString());
JavaFXRoutines.setOnDoubleClickAction(properties, executorServiceUI, JavaFXRoutines.setOnDoubleClickAction(properties, executorServiceUI,
rowData -> rowData.isOpenAllowed(), rowData -> { rowData -> rowData.getValue().isOpenAllowed(), rowData -> {
try { try {
ShellRoutines.openDirectoryInBrowser(rowData.getPath()); ShellRoutines.openDirectoryInBrowser(rowData.getValue().getPath());
} }
catch (UnsupportedOperationException | IOException e) { catch (UnsupportedOperationException | IOException e) {
// TODO: Escalate an error to the end user // TODO: Escalate an error to the end user
...@@ -65,15 +66,17 @@ public class JobPropertiesControl extends BorderPane implements Closeable { ...@@ -65,15 +66,17 @@ public class JobPropertiesControl extends BorderPane implements Closeable {
} }
private void fillTable() { private void fillTable() {
properties.getItems() properties.getItems().add(new UpdatableObservableValue<>(new P_Value(
.add(new UpdatableObservableValue<>( "Input", job.getValue().getInputDirectory(),
new P_Value("Input", job.getInputDirectory(), "Demo data on the Salomon IT4I cluster"), "Demo data on the Salomon IT4I cluster"), x -> UpdateStatus.NotUpdated,
x -> UpdateStatus.NotUpdated, x -> x)); x -> x));
properties.getItems().add(new UpdatableObservableValue<>( properties.getItems().add(new UpdatableObservableValue<>(new P_Value(
new P_Value("Output", job.getOutputDirectory(), "N/A"), x -> UpdateStatus.NotUpdated, x -> x)); "Output", job.getValue().getOutputDirectory(), "N/A"),
x -> UpdateStatus.NotUpdated, x -> x));
properties.getItems().add(new UpdatableObservableValue<>(
new P_Value("Working", job.getDirectory(), "N/A"), x -> UpdateStatus.NotUpdated, x -> x)); properties.getItems().add(new UpdatableObservableValue<>(new P_Value(
"Working", job.getValue().getDirectory(), "N/A"),
x -> UpdateStatus.NotUpdated, x -> x));
} }
...@@ -82,6 +85,7 @@ public class JobPropertiesControl extends BorderPane implements Closeable { ...@@ -82,6 +85,7 @@ public class JobPropertiesControl extends BorderPane implements Closeable {
} }
private class P_Value { private class P_Value {
private final String name; private final String name;
private final Path path; private final Path path;
private final String textIfNull; private final String textIfNull;
......
...@@ -8,23 +8,27 @@ import cz.it4i.fiji.haas.ui.ObservableValueRegistry; ...@@ -8,23 +8,27 @@ import cz.it4i.fiji.haas.ui.ObservableValueRegistry;
import cz.it4i.fiji.haas.ui.UpdatableObservableValue; import cz.it4i.fiji.haas.ui.UpdatableObservableValue;
import cz.it4i.fiji.haas.ui.UpdatableObservableValue.UpdateStatus; import cz.it4i.fiji.haas.ui.UpdatableObservableValue.UpdateStatus;
import cz.it4i.fiji.haas_java_client.JobState; import cz.it4i.fiji.haas_java_client.JobState;
import cz.it4i.fiji.haas_spim_benchmark.core.BenchmarkJobManager.BenchmarkJob; import cz.it4i.fiji.haas_spim_benchmark.core.ObservableBenchmarkJob;
import cz.it4i.fiji.haas_spim_benchmark.core.Task; import cz.it4i.fiji.haas_spim_benchmark.core.Task;
import cz.it4i.fiji.haas_spim_benchmark.core.TaskComputation; import cz.it4i.fiji.haas_spim_benchmark.core.TaskComputation;
public class ObservableTaskRegistry extends ObservableValueRegistry<Task, UpdatableObservableValue<Task>> { public class ObservableTaskRegistry extends
ObservableValueRegistry<Task, UpdatableObservableValue<Task>>
{
private final Supplier<BenchmarkJob> jobSupplier; private final Supplier<ObservableBenchmarkJob> jobSupplier;
public ObservableTaskRegistry(Supplier<BenchmarkJob> jobSupplier,Consumer<Task> removeConsumer) { public ObservableTaskRegistry(Supplier<ObservableBenchmarkJob> jobSupplier,
super(t -> update(t), t -> t.getComputations().stream().map(tc -> tc.getState()).collect(Collectors.toList()), Consumer<Task> removeConsumer)
removeConsumer); {
super(t -> update(t), t -> t.getComputations().stream().map(tc -> tc
.getState()).collect(Collectors.toList()), removeConsumer);
this.jobSupplier = jobSupplier; this.jobSupplier = jobSupplier;
} }
@Override @Override
public void update() { public void update() {
jobSupplier.get().getTasks(); jobSupplier.get().getValue().getTasks();
super.update(); super.update();
} }
......
...@@ -26,9 +26,9 @@ import cz.it4i.fiji.haas.ui.ModalDialogs; ...@@ -26,9 +26,9 @@ import cz.it4i.fiji.haas.ui.ModalDialogs;
import cz.it4i.fiji.haas.ui.TableCellAdapter; import cz.it4i.fiji.haas.ui.TableCellAdapter;
import cz.it4i.fiji.haas.ui.TableViewContextMenu; import cz.it4i.fiji.haas.ui.TableViewContextMenu;
import cz.it4i.fiji.haas_java_client.JobState; import cz.it4i.fiji.haas_java_client.JobState;
import cz.it4i.fiji.haas_spim_benchmark.core.BenchmarkJobManager.BenchmarkJob;
import cz.it4i.fiji.haas_spim_benchmark.core.Constants; import cz.it4i.fiji.haas_spim_benchmark.core.Constants;
import cz.it4i.fiji.haas_spim_benchmark.core.FXFrameExecutorService; import cz.it4i.fiji.haas_spim_benchmark.core.FXFrameExecutorService;
import cz.it4i.fiji.haas_spim_benchmark.core.ObservableBenchmarkJob;
import cz.it4i.fiji.haas_spim_benchmark.core.Task; import cz.it4i.fiji.haas_spim_benchmark.core.Task;
import cz.it4i.fiji.haas_spim_benchmark.core.TaskComputation; import cz.it4i.fiji.haas_spim_benchmark.core.TaskComputation;
import javafx.beans.value.ObservableValue; import javafx.beans.value.ObservableValue;
...@@ -64,18 +64,13 @@ public class SPIMPipelineProgressViewController extends BorderPane implements Cl ...@@ -64,18 +64,13 @@ public class SPIMPipelineProgressViewController extends BorderPane implements Cl
} else { } else {
result = taskExecutionState2Color.get(jobState); result = taskExecutionState2Color.get(jobState);
} }
return toCss(result != null ? result : Color.ORANGE); return JavaFXRoutines.toCss(result != null ? result : Color.ORANGE);
}
private static String toCss(Color color) {
return "rgb(" + Math.round(color.getRed() * 255.0) + "," + Math.round(color.getGreen() * 255.0) + ","
+ Math.round(color.getBlue() * 255.0) + ")";
} }
@FXML @FXML
private TableView<ObservableValue<Task>> tasks; private TableView<ObservableValue<Task>> tasks;
private BenchmarkJob job; private ObservableBenchmarkJob job;
private Timer timer; private Timer timer;
private ObservableTaskRegistry registry; private ObservableTaskRegistry registry;
private final ExecutorService executorServiceWS; private final ExecutorService executorServiceWS;
...@@ -87,13 +82,7 @@ public class SPIMPipelineProgressViewController extends BorderPane implements Cl ...@@ -87,13 +82,7 @@ public class SPIMPipelineProgressViewController extends BorderPane implements Cl
init(); init();
} }
public SPIMPipelineProgressViewController(BenchmarkJob job) { public void setJob(final ObservableBenchmarkJob job) {
executorServiceWS = Executors.newSingleThreadExecutor();
init();
setJob(job);
}
public void setJob(BenchmarkJob job) {
if (this.job != null) { if (this.job != null) {
throw new IllegalStateException("Job already set"); throw new IllegalStateException("Job already set");
} }
...@@ -160,9 +149,10 @@ public class SPIMPipelineProgressViewController extends BorderPane implements Cl ...@@ -160,9 +149,10 @@ public class SPIMPipelineProgressViewController extends BorderPane implements Cl
} }
private void fillTable() { private void fillTable() {
List<Task> processedTasks = job.getTasks(); List<Task> processedTasks = job.getValue().getTasks();
if (processedTasks == null) { if (processedTasks == null) {
timer.schedule(new TimerTask() { timer.schedule(new TimerTask() {
@Override @Override
public void run() { public void run() {
fillTable(); fillTable();
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<center> <center>
<HBox> <HBox>
<children> <children>
<TableView fx:id="filesToUpload" prefHeight="400.0" prefWidth="500.0" HBox.hgrow="ALWAYS"> <TableView fx:id="files" prefHeight="400.0" prefWidth="500.0" HBox.hgrow="ALWAYS">
<columns> <columns>
<TableColumn prefWidth="400.0" text="File" /> <TableColumn prefWidth="400.0" text="File" />
<TableColumn prefWidth="100.0" text="Status" /> <TableColumn prefWidth="100.0" text="Status" />
......
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