use of org.vcell.workflow.Task in project vcell by virtualcell.
the class WorkflowObjectsTableModel method getValue.
private String getValue(WorkflowObject workflowObject) {
if (workflowObject instanceof Task) {
return "";
} else {
Object data = null;
Class dataType = null;
if (workflowObject instanceof WorkflowDataSource) {
WorkflowDataSource dataHolder = (WorkflowDataSource) workflowObject;
WorkflowDataSource dataSource = taskContext.getWorkflow().getDataSource((DataObject) dataHolder);
data = taskContext.getRepository().getData(dataSource);
dataType = dataHolder.getType();
} else if (workflowObject instanceof DataInput) {
DataInput dataInput = (DataInput) workflowObject;
data = taskContext.getData(dataInput);
dataType = dataInput.getType();
}
if (data instanceof RowColumnResultSet) {
RowColumnResultSet rc = (RowColumnResultSet) data;
int N = rc.getColumnDescriptionsCount();
StringBuffer buffer = new StringBuffer(rc.getRowCount() + " rows of " + N + " {");
int MAX = 3;
for (int i = 0; i < N; i++) {
buffer.append("\"" + rc.getColumnDescriptions(i).getDisplayName() + "\"");
if (i >= MAX - 1) {
buffer.append(", ...");
break;
}
if (i < N - 1) {
buffer.append(", ");
}
}
buffer.append("}");
return buffer.toString();
} else if (data instanceof String) {
return "\"" + (String) data + "\"";
} else if (data instanceof ROI) {
return "ROI \"" + ((ROI) data).getROIName() + "\"";
} else if (data instanceof ROI[]) {
ROI[] rois = (ROI[]) data;
int N = rois.length;
int MAX = 3;
StringBuffer buffer = new StringBuffer("ROI[" + N + "] { ");
for (int i = 0; i < N; i++) {
buffer.append("\"" + rois[i].getROIName() + "\"");
if (i >= MAX - 1) {
buffer.append(", ...");
break;
}
if (i < N - 1) {
buffer.append(", ");
}
}
buffer.append("}");
return buffer.toString();
} else if (data instanceof Image) {
Image image = (Image) data;
return image.getClass().getSimpleName() + " " + image.getISize().toString();
} else if (data instanceof ImageTimeSeries) {
ImageTimeSeries ts = (ImageTimeSeries) data;
int N = ts.getSizeT();
double[] times = ts.getImageTimeStamps();
return ts.getType().getSimpleName() + "[" + N + "] " + ts.getISize() + " times=[" + times[0] + "," + times[N - 1] + "]";
} else if (data != null) {
return data.toString();
} else {
return "null " + dataType.getSimpleName();
}
}
}
use of org.vcell.workflow.Task in project vcell by virtualcell.
the class WorkflowObjectsTableModel method setTaskContext.
public void setTaskContext(TaskContext taskContext) {
if (taskContext != null) {
Workflow workflow = taskContext.getWorkflow();
workflow.removePropertyChangeListener(this);
for (WorkflowParameter<? extends Object> dataHolder : workflow.getParameters()) {
dataHolder.removePropertyChangeListener(this);
}
for (Task task : workflow.getTasks()) {
task.removePropertyChangeListener(this);
}
}
this.taskContext = taskContext;
if (this.taskContext != null) {
Workflow workflow = this.taskContext.getWorkflow();
workflow.addPropertyChangeListener(this);
for (WorkflowParameter<? extends Object> dataHolder : workflow.getParameters()) {
dataHolder.addPropertyChangeListener(this);
}
for (Task task : workflow.getTasks()) {
task.addPropertyChangeListener(this);
}
}
refreshData();
}
use of org.vcell.workflow.Task in project vcell by virtualcell.
the class WorkflowObjectsPanel method tableSelectionChanged.
protected void tableSelectionChanged() {
int[] rows = parametersFunctionsTable.getSelectedRows();
if (rows == null || rows.length == 0) {
showButton.setEnabled(false);
deleteButton.setEnabled(false);
return;
}
boolean bAllTasks = true;
boolean bAllDisplable = true;
for (int r : rows) {
if (r < parametersFunctionsTableModel.getRowCount()) {
WorkflowObject workflowObject = parametersFunctionsTableModel.getValueAt(r);
if (!(workflowObject instanceof Task)) {
bAllTasks = false;
}
if (!hasDisplayData(taskContext, workflowObject)) {
bAllDisplable = false;
}
}
}
deleteButton.setEnabled(bAllTasks);
showButton.setEnabled(bAllDisplable);
}
use of org.vcell.workflow.Task in project vcell by virtualcell.
the class WorkflowJGraphProxy method createGraphJGraphX.
public WorkflowGraph createGraphJGraphX() {
graph = new WorkflowGraph();
graph.getModel().beginUpdate();
graph.setCellsEditable(false);
graph.setCellsCloneable(false);
graph.setCellsMovable(true);
graph.setCellsResizable(false);
graph.setDropEnabled(false);
Object parent = graph.getDefaultParent();
try {
//
// make subgraph for each task ... alot space from [-1:1] in x and center in y
//
int scale = 100;
int taskPosX = 20;
int taskPosXDelta = 240;
int taskPosY = scale / 2;
HashMap<Task, WorkflowObjectCell> taskMap = new HashMap<Task, WorkflowObjectCell>();
for (Task task : context.getWorkflow().getTasks()) {
WorkflowObjectCell taskNode = createGenericCell(task);
taskNode.getGeometry().setX(task.getDiagramStyle().getX(taskPosX));
taskNode.getGeometry().setY(task.getDiagramStyle().getY(taskPosY));
taskMap.put(task, taskNode);
graph.addCell(taskNode);
taskPosX += taskPosXDelta;
}
//
for (Task task : context.getWorkflow().getTasks()) {
for (DataInput<? extends Object> input : task.getInputs()) {
DataObject<? extends Object> dataSource = context.getWorkflow().getConnectorSource(input);
if (dataSource != null) {
WorkflowObjectCell inputTaskNode = taskMap.get(input.getParent());
if (inputTaskNode != null) {
WorkflowObjectCell inputNode = null;
for (int i = 0; i < inputTaskNode.getChildCount(); i++) {
if (inputTaskNode.getChildAt(i).getValue().equals(input.getName())) {
inputNode = (WorkflowObjectCell) inputTaskNode.getChildAt(i);
}
}
if (dataSource instanceof DataOutput) {
DataOutput dataHolder = (DataOutput) dataSource;
Object dataHolderParent = dataHolder.getParent();
if (dataHolderParent instanceof Task) {
WorkflowObjectCell outputTask = taskMap.get((Task) dataHolderParent);
WorkflowObjectCell holderNode = null;
for (int i = 0; i < outputTask.getChildCount(); i++) {
if (outputTask.getChildAt(i).getValue().equals(dataHolder.getName())) {
holderNode = (WorkflowObjectCell) outputTask.getChildAt(i);
}
}
if (holderNode != null) {
// an output of another task
graph.insertEdge(parent, null, null, holderNode, inputNode);
}
}
}
}
}
}
}
} finally {
graph.getModel().endUpdate();
}
graph.addListener(null, graphEventListener);
// graph.getModel().addListener(mxEvent.CHANGE, getEventListener());
return graph;
}
use of org.vcell.workflow.Task in project vcell by virtualcell.
the class WorkflowJGraphProxy method removeCells.
private void removeCells(mxEventObject event) {
// remove an existing connection
Object[] cells = (Object[]) event.getProperty("cells");
// remove edges first
for (Object cellObject : cells) {
if (cellObject instanceof mxCell) {
mxCell cell = (mxCell) cellObject;
if (cell.isEdge()) {
mxICell source = cell.getSource();
mxICell target = cell.getTarget();
if ((source instanceof WorkflowObjectCell) && (source instanceof WorkflowObjectCell)) {
WorkflowObject workflowSourceObject = ((WorkflowObjectCell) source).workflowObject;
WorkflowObject workflowTargetObject = ((WorkflowObjectCell) target).workflowObject;
if (workflowSourceObject instanceof DataOutput && workflowTargetObject instanceof DataInput) {
DataOutput output = (DataOutput) workflowSourceObject;
DataInput input = (DataInput) workflowTargetObject;
if (context.getWorkflow().getConnectorSource(input) == output) {
context.getWorkflow().removeConnector(output, input);
System.out.println("removed edge from " + workflowSourceObject.getPath() + " to " + workflowTargetObject.getPath());
} else {
System.out.println("can't remove edge, edge from " + output.getPath() + " to " + input.getPath() + " not found in workflow");
}
} else {
System.out.println("can't remove edge, edge from " + source.getId() + " to " + target.getId() + " not found in workflow");
}
}
}
}
}
// remove tasks next
for (Object cellObject : cells) {
if (cellObject instanceof mxCell) {
mxCell cell = (mxCell) cellObject;
if (!cell.isEdge() && cell instanceof WorkflowObjectCell) {
WorkflowObject workflowObject = ((WorkflowObjectCell) cell).workflowObject;
if (workflowObject instanceof Task) {
context.getWorkflow().removeTask((Task) workflowObject);
System.out.println("removed task " + workflowObject.getPath());
} else {
System.out.println("can't remove non-edge cell " + cell.getId() + " not a task in this workflow");
}
}
}
}
}
Aggregations