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

repo: removing hass_snakemake_spim project

parent ec52a6d9
No related branches found
No related tags found
No related merge requests found
Showing
with 0 additions and 562 deletions
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cz.it4i.fiji</groupId>
<artifactId>haas-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath> ../haas-parent/pom.xml</relativePath>
</parent>
<artifactId>haas-snakemake-spim</artifactId>
<packaging>jar</packaging>
<name>${license.projectName}</name>
<description>Plugin for starting SPIM automated workflowby IT4I HaaS.</description>
<url>https://code.it4i.cz/fiji/haas-java-client/haas-spim-benchmark</url>
<inceptionYear>2018</inceptionYear>
<organization>
<name>${organization.name}</name>
<url>${organization.url}</url>
</organization>
<licenses>
<license>
<name>${license.name}</name>
<url>${license.url}</url>
<distribution>${license.distribution}</distribution>
</license>
</licenses>
<developers>
<developer>
<id>koz01</id>
<name>Jan Kožusznik</name>
<url>http://www.kozusznik.cz</url>
</developer>
</developers>
<contributors>
<contributor>
<name>None</name>
</contributor>
</contributors>
<mailingLists>
<mailingList>
<name>ImageJ Forum</name>
<archive>http://forum.imagej.net/</archive>
</mailingList>
</mailingLists>
<scm>
<connection>${scm.connection}</connection>
<developerConnection>${scm.developerConnection}</developerConnection>
<tag>${scm.tag}</tag>
<url>${scm.url}</url>
</scm>
<issueManagement>
<system>${issueManagement.system}</system>
<url>${issueManagement.url}</url>
</issueManagement>
<ciManagement>
<system>None</system>
</ciManagement>
<properties>
<license.projectName>SPIM over HaaS</license.projectName>
<license.licenseName>${license.base.licenseName}</license.licenseName>
<license.copyrightOwners>${license.base.copyrightOwners}</license.copyrightOwners>
</properties>
<dependencies>
<dependency>
<groupId>net.imagej</groupId>
<artifactId>imagej</artifactId>
</dependency>
<dependency>
<groupId>cz.it4i.fiji</groupId>
<artifactId>haas-imagej-client</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-jdk14 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package cz.it4i.fiji.haas_snakemake_spim;
import cz.it4i.fiji.haas_java_client.Configuration;
public class Constants extends Configuration {
public Constants() {
super("configuration.properties");
}
public String getProjectId() {
return getValue("PROJECT_ID");
}
public String getPassword() {
return getValue("PASSWORD");
}
public String getUserName() {
return getValue("USER_NAME");
}
public String getPhone() {
return getValue("PHONE");
}
public String getEmail() {
return getValue("EMAIL");
}
}
package cz.it4i.fiji.haas_snakemake_spim;
import cz.it4i.fiji.haas_java_client.Settings;
public interface TestingConstants {
static Settings getSettings() {
Constants constants = new Constants();
long templateId = 2l;
int timeOut = 9600;
long clusterNodeType = 6l;
return new Settings() {
@Override
public String getUserName() {
return constants.getUserName();
}
@Override
public String getPhone() {
return constants.getPhone();
}
@Override
public String getPassword() {
return constants.getPassword();
}
@Override
public String getEmail() {
return constants.getEmail();
}
@Override
public long getTemplateId() {
return templateId;
}
@Override
public int getTimeout() {
return timeOut;
}
@Override
public long getClusterNodeType() {
return clusterNodeType;
}
@Override
public String getProjectId() {
return constants.getProjectId();
}
@Override
public String getJobName() {
return "HaaS-Snakemake-SPIM";
}
};
}
}
\ No newline at end of file
package cz.it4i.fiji.haas_snakemake_spim.commands;
import java.awt.Frame;
import java.io.File;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Collection;
import javax.swing.WindowConstants;
import org.scijava.Context;
import org.scijava.command.Command;
import org.scijava.log.LogService;
import org.scijava.plugin.Parameter;
import org.scijava.plugin.Plugin;
import org.scijava.ui.ApplicationFrame;
import org.scijava.ui.UIService;
import org.scijava.widget.UIComponent;
import cz.it4i.fiji.haas.JobManager;
import cz.it4i.fiji.haas.JobManager.JobInfo;
import cz.it4i.fiji.haas.ui.DummyProgress;
import cz.it4i.fiji.haas.ui.ModalDialogs;
import cz.it4i.fiji.haas.ui.ProgressDialog;
import cz.it4i.fiji.haas_snakemake_spim.TestingConstants;
import cz.it4i.fiji.haas_snakemake_spim.ui.CheckStatusOfHaaSWindow;
import net.imagej.ImageJ;
/**
*
* @author koz01
*
*/
@Plugin(type = Command.class, headless = true, menuPath = "Plugins>Check status of HaaS")
public class CheckStatusOfHaaS implements Command {
@Parameter
private LogService log;
@Parameter(label = "Work directory", persist = true, style = "directory")
private File workDirectory;
@Parameter
private UIService uiService;
@Parameter
private Context context;
private JobManager jobManager;
@Override
public void run() {
jobManager = new JobManager(getWorkingDirectoryPath(), TestingConstants.getSettings());
if (uiService.isHeadless()) {
downloadAll();
} else {
CheckStatusOfHaaSWindow window;
window = ModalDialogs.doModal(new CheckStatusOfHaaSWindow(getFrame(), context),
WindowConstants.DISPOSE_ON_CLOSE);
ProgressDialog dialog = ModalDialogs.doModal(new ProgressDialog(window),
WindowConstants.DO_NOTHING_ON_CLOSE);
dialog.setTitle("Downloading info about jobs");
Collection<JobInfo> jobs = jobManager.getJobs();
int count = 0;
for (JobInfo ji : jobs) {
String item;
dialog.addItem(item = "job id:" + ji.getId());
window.addJob(ji);
dialog.itemDone(item);
dialog.setCount(count, jobs.size());
count++;
}
dialog.done();
}
}
private Frame getFrame() {
ApplicationFrame af = uiService.getDefaultUI().getApplicationFrame();
if (af instanceof Frame) {
return (Frame) af;
} else if (af instanceof UIComponent) {
Object component = ((UIComponent<?>) af).getComponent();
if (component instanceof Frame) {
return (Frame) component;
}
}
return null;
}
private void downloadAll() {
for (JobInfo id : jobManager.getJobs()) {
System.out.println("Job " + id.getId() + " needs download");
jobManager.downloadJob(id.getId(), new DummyProgress());
}
}
private Path getWorkingDirectoryPath() {
return Paths.get(workDirectory.toString());
}
public static void main(final String... args) {
// Launch ImageJ as usual.
final ImageJ ij = new ImageJ();
ij.launch(args);
ij.command().run(CheckStatusOfHaaS.class, true);
}
}
package cz.it4i.fiji.haas_snakemake_spim.commands;
import java.awt.Frame;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Collection;
import java.util.stream.Collectors;
import javax.swing.WindowConstants;
import org.scijava.Context;
import org.scijava.command.Command;
import org.scijava.log.LogService;
import org.scijava.plugin.Parameter;
import org.scijava.plugin.Plugin;
import org.scijava.ui.ApplicationFrame;
import org.scijava.ui.UIService;
import org.scijava.widget.UIComponent;
import cz.it4i.fiji.haas.JobManager;
import cz.it4i.fiji.haas.ui.ModalDialogs;
import cz.it4i.fiji.haas.ui.ProgressDialog;
import cz.it4i.fiji.haas_java_client.HaaSClient;
import cz.it4i.fiji.haas_snakemake_spim.TestingConstants;
import net.imagej.ImageJ;
/**
*
* @author koz01
*
*/
@Plugin(type = Command.class, headless = true, menuPath = "Plugins>Run with HaaS")
public class RunWithHaaS implements Command {
@Parameter
private UIService uiService;
@Parameter
private LogService log;
@Parameter(label = "Work directory", persist = true, style = "directory")
private File workDirectory;
@Parameter(label = "Data directory", persist = true, style = "directory")
private File dataDirectory;
@Parameter
private Context context;
private JobManager jobManager;
@Override
public void run() {
try {
jobManager = new JobManager(getWorkingDirectoryPath(), TestingConstants.getSettings());
ProgressDialog dialog = ModalDialogs.doModal(new ProgressDialog(getFrame(), "Starting job"),
WindowConstants.DO_NOTHING_ON_CLOSE);
jobManager.startJob(
getContent(dataDirectory).stream().map(HaaSClient::getUploadingFile).collect(Collectors.toList()),
dialog);
dialog.done();
} catch (IOException e) {
log.error(e);
}
}
private Path getWorkingDirectoryPath() {
return Paths.get(workDirectory.toString());
}
private Collection<Path> getContent(File dataDirectory) throws IOException {
return Files.list(Paths.get(dataDirectory.toString())).collect(Collectors.toList());
}
private Frame getFrame() {
ApplicationFrame af = uiService.getDefaultUI().getApplicationFrame();
if (af instanceof Frame) {
return (Frame) af;
} else if (af instanceof UIComponent) {
Object component = ((UIComponent<?>) af).getComponent();
if (component instanceof Frame) {
return (Frame) component;
}
}
return null;
}
public static void main(final String... args) {
// Launch ImageJ as usual.
final ImageJ ij = new ImageJ();
ij.launch(args);
ij.command().run(RunWithHaaS.class, true);
}
}
/Constants.java
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.TableColumn?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.layout.BorderPane?>
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="912.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="cz.it4i.fiji.haas_snakemake_spim.ui.CheckStatusOfHaaSController">
<center>
<TableView fx:id="jobs" prefHeight="400.0" prefWidth="675.0" BorderPane.alignment="CENTER">
<columns>
<TableColumn prefWidth="75.0" text="Job Id" />
<TableColumn prefWidth="149.0" text="Status" />
<TableColumn prefWidth="230.0" text="Creation time" />
<TableColumn prefWidth="230.0" text="Start time" />
<TableColumn prefWidth="230.0" text="End Time" />
</columns>
</TableView>
</center>
</BorderPane>
package cz.it4i.fiji.haas_snakemake_spim.ui;
import java.awt.Window;
import java.util.function.Function;
import javax.swing.WindowConstants;
import org.scijava.log.LogService;
import org.scijava.plugin.Parameter;
import cz.it4i.fiji.haas.JobManager.JobInfo;
import cz.it4i.fiji.haas.ui.FXFrame;
import cz.it4i.fiji.haas.ui.ModalDialogs;
import cz.it4i.fiji.haas.ui.ObservableValueAdapter;
import cz.it4i.fiji.haas.ui.ProgressDialog;
import javafx.application.Platform;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.MenuItem;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.input.ContextMenuEvent;
import net.imagej.updater.util.Progress;
public class CheckStatusOfHaaSController implements FXFrame.Controller {
@Parameter
private LogService logService;
@FXML
private TableView<JobInfo> jobs;
private Window root;
public CheckStatusOfHaaSController() {
}
public void addJob(JobInfo job) {
jobs.getItems().add(job);
}
public void init(Window root) {
this.root = root;
initTable();
initMenu();
}
private void downloadData(ActionEvent event) {
Progress progress = ModalDialogs.doModal(new ProgressDialog(root, "Downloading data"), WindowConstants.DO_NOTHING_ON_CLOSE);
Platform.runLater(() -> jobs.getSelectionModel().getSelectedItem().downloadData(progress));
progress.done();
}
private void initMenu() {
ContextMenu cm = new ContextMenu();
MenuItem download = new MenuItem("Download");
download.setOnAction(this::downloadData);
cm.getItems().add(download);
jobs.setContextMenu(cm);
jobs.setOnContextMenuRequested(new EventHandler<ContextMenuEvent>() {
@Override
public void handle(ContextMenuEvent event) {
if (jobs.getSelectionModel().getSelectedCells().size() < 1) {
return;
}
JobInfo job = jobs.getSelectionModel().getSelectedItem();
if (job != null) {
download.setDisable(false);
} else {
download.setDisable(true);
}
}
});
}
private void initTable() {
setCellValueFactory(0, j -> j.getId().toString());
setCellValueFactory(1, j -> j.getState().toString());
setCellValueFactory(2, j -> j.getCreationTime().toString());
setCellValueFactory(3, j -> j.getStartTime().toString());
setCellValueFactory(4, j -> j.getEndTime().toString());
}
@SuppressWarnings("unchecked")
private void setCellValueFactory(int index, Function<JobInfo, String> mapper) {
((TableColumn<JobInfo, String>) jobs.getColumns().get(index))
.setCellValueFactory(f -> new ObservableValueAdapter<JobInfo, String>(f.getValue(), mapper));
}
}
package cz.it4i.fiji.haas_snakemake_spim.ui;
import java.awt.Frame;
import org.scijava.Context;
import org.scijava.plugin.Parameter;
import cz.it4i.fiji.haas.JobManager.JobInfo;
import cz.it4i.fiji.haas.ui.FXFrame;
import javafx.application.Platform;
public class CheckStatusOfHaaSWindow extends FXFrame<CheckStatusOfHaaSController> {
private static final long serialVersionUID = 1L;
@Parameter
private Context context;
public CheckStatusOfHaaSWindow(Frame applicationFrame, Context context) {
super(applicationFrame, "/cz/it4i/fiji/haas_snakemake_spim/ui/CheckStatusOfHaaS.fxml");
this.context = context;
init(this::initController);
this.setResizable(false);
this.setTitle("Manage status of HaaS jobs");
}
public void addJob(JobInfo job) {
Platform.runLater(new Runnable() {
@Override
public void run() {
getController().addJob(job);
}
});
}
private void initController(CheckStatusOfHaaSController controller) {
context.inject(controller);
}
}
/**
*
*/
/**
* @author koz01
*
*/
package cz.it4i.fiji.haas_snakemake_spim.ui;
\ No newline at end of file
/configuration.properties
PROJECT_ID=DD-17-31
USER_NAME=
PASSWORD=
EMAIL=
PHONE=
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment