in taverna-scufl2-wfbundle/src/main/java/org/apache/taverna/scufl2/rdfxml/RDFXMLSerializer.java [336:522]
public boolean visit(WorkflowBean node) {
if (node instanceof Workflow) {
wf = (Workflow) node;
workflow.setAbout("");
workflow.setName(wf.getName());
if (wf.getIdentifier() != null) {
Resource wfId = rdfObjectFactory.createResource();
wfId.setResource(wf.getIdentifier().toASCIIString());
workflow.setWorkflowIdentifier(wfId);
}
}
URI uri = uriTools.relativeUriForBean(node, wf);
if (node instanceof InputWorkflowPort) {
InputWorkflowPort ip = (InputWorkflowPort) node;
org.apache.taverna.scufl2.xml.Workflow.InputWorkflowPort inP = objectFactory
.createWorkflowInputWorkflowPort();
org.apache.taverna.scufl2.xml.InputWorkflowPort inPort = objectFactory
.createInputWorkflowPort();
inP.setInputWorkflowPort(inPort);
inPort.setName(ip.getName());
URI portURI = uriTools.relativeUriForBean(ip, ip.getParent());
inPort.setAbout(portURI.toASCIIString());
PortDepth portDepth = makePortDepth(ip.getDepth());
inPort.setPortDepth(portDepth);
workflow.getInputWorkflowPort().add(inP);
}
if (node instanceof OutputWorkflowPort) {
OutputWorkflowPort op = (OutputWorkflowPort) node;
org.apache.taverna.scufl2.xml.Workflow.OutputWorkflowPort inP = objectFactory
.createWorkflowOutputWorkflowPort();
org.apache.taverna.scufl2.xml.OutputWorkflowPort outPort = objectFactory
.createOutputWorkflowPort();
inP.setOutputWorkflowPort(outPort);
outPort.setName(op.getName());
URI portURI = uriTools.relativeUriForBean(op, op.getParent());
outPort.setAbout(portURI.toASCIIString());
workflow.getOutputWorkflowPort().add(inP);
}
if (node instanceof Processor) {
Processor processor = (Processor) node;
org.apache.taverna.scufl2.xml.Workflow.Processor wfProc = objectFactory
.createWorkflowProcessor();
proc = objectFactory.createProcessor();
wfProc.setProcessor(proc);
proc.setName(processor.getName());
URI procUri = uriTools.relativeUriForBean(processor, wf);
proc.setAbout(procUri.toASCIIString());
wfProc.setProcessor(proc);
workflow.getProcessor().add(wfProc);
}
if (node instanceof InputProcessorPort) {
InputProcessorPort inPort = (InputProcessorPort) node;
org.apache.taverna.scufl2.xml.InputProcessorPort port = objectFactory
.createInputProcessorPort();
port.setAbout(uri.toASCIIString());
port.setName(inPort.getName());
port.setPortDepth(makePortDepth(inPort.getDepth()));
org.apache.taverna.scufl2.xml.Processor.InputProcessorPort inputProcessorPort = objectFactory
.createProcessorInputProcessorPort();
inputProcessorPort.setInputProcessorPort(port);
proc.getInputProcessorPort().add(inputProcessorPort);
}
if (node instanceof OutputProcessorPort) {
org.apache.taverna.scufl2.xml.OutputProcessorPort port;
OutputProcessorPort outPort = (OutputProcessorPort) node;
port = objectFactory.createOutputProcessorPort();
port.setAbout(uri.toASCIIString());
port.setName(outPort.getName());
port.setPortDepth(makePortDepth(outPort.getDepth()));
port.setGranularPortDepth(makeGranularPortDepth(outPort
.getGranularDepth()));
org.apache.taverna.scufl2.xml.Processor.OutputProcessorPort outputProcessorPort = objectFactory
.createProcessorOutputProcessorPort();
outputProcessorPort.setOutputProcessorPort(port);
proc.getOutputProcessorPort().add(outputProcessorPort);
}
if (node instanceof IterationStrategyStack) {
iterationStrategyStack = objectFactory
.createIterationStrategyStack();
iterationStrategyStack.setAbout(uri.toASCIIString());
org.apache.taverna.scufl2.xml.Processor.IterationStrategyStack processorIterationStrategyStack = objectFactory
.createProcessorIterationStrategyStack();
processorIterationStrategyStack
.setIterationStrategyStack(iterationStrategyStack);
proc.setIterationStrategyStack(processorIterationStrategyStack);
productStack = new Stack<List<Object>>();
}
if (node instanceof IterationStrategyTopNode
&& productStack.isEmpty()) {
iterationStrategies = objectFactory
.createIterationStrategyStackIterationStrategies();
iterationStrategyStack
.setIterationStrategies(iterationStrategies);
iterationStrategies.setParseType(iterationStrategies
.getParseType());
List<Object> dotProductOrCrossProduct = iterationStrategies
.getDotProductOrCrossProduct();
productStack.add(dotProductOrCrossProduct);
}
if (node instanceof CrossProduct) {
org.apache.taverna.scufl2.xml.CrossProduct crossProduct = objectFactory
.createCrossProduct();
crossProduct.setAbout(uri.toASCIIString());
productStack.peek().add(crossProduct);
ProductOf productOf = objectFactory.createProductOf();
productOf.setParseType(productOf.getParseType());
crossProduct.setProductOf(productOf);
productStack.add(crossProduct.getProductOf().getCrossProductOrDotProductOrPortNode());
}
if (node instanceof DotProduct) {
org.apache.taverna.scufl2.xml.DotProduct dotProduct = objectFactory
.createDotProduct();
dotProduct.setAbout(uri.toASCIIString());
productStack.peek().add(dotProduct);
ProductOf productOf = objectFactory.createProductOf();
productOf.setParseType(productOf.getParseType());
dotProduct.setProductOf(productOf);
productStack.add(dotProduct.getProductOf()
.getCrossProductOrDotProductOrPortNode());
}
if (node instanceof PortNode) {
PortNode portNode = (PortNode) node;
InputProcessorPort inPort = portNode.getInputProcessorPort();
URI portUri = uriTools.relativeUriForBean(inPort, wf);
org.apache.taverna.scufl2.xml.PortNode port = objectFactory.createPortNode();
port.setAbout(uri.toASCIIString());
if (portNode.getDesiredDepth() != null) {
DesiredDepth value = objectFactory.createPortNodeDesiredDepth();
value.setDatatype(value.getDatatype());
value.setValue(portNode.getDesiredDepth());
port.setDesiredDepth(value);
}
port.setIterateOverInputPort(makeResource(portUri));
productStack.peek().add(port);
}
if (node instanceof DataLink) {
DataLink dataLink = (DataLink) node;
org.apache.taverna.scufl2.xml.DataLink link = objectFactory
.createDataLink();
link.setAbout(uri.toASCIIString());
URI fromUri = uriTools.relativeUriForBean(
dataLink.getReceivesFrom(), wf);
URI toUri = uriTools.relativeUriForBean(dataLink.getSendsTo(),
wf);
link.setReceiveFrom(makeResource(fromUri));
link.setSendTo(makeResource(toUri));
if (dataLink.getMergePosition() != null) {
MergePosition value = objectFactory.createDataLinkMergePosition();
value.setValue(dataLink
.getMergePosition());
value.setDatatype(value.getDatatype());
link.setMergePosition(value);
}
DataLinkEntry linkEntry = objectFactory.createDataLinkEntry();
linkEntry.setDataLink(link);
workflow.getDatalink().add(linkEntry);
}
if (node instanceof BlockingControlLink) {
BlockingControlLink controlLink = (BlockingControlLink) node;
URI blockUri = uriTools.relativeUriForBean(
controlLink.getBlock(), wf);
URI untilUri = uriTools.relativeUriForBean(
controlLink.getUntilFinished(), wf);
Blocking blocking = objectFactory.createBlocking();
blocking.setAbout(uri.toASCIIString());
blocking.setBlock(makeResource(blockUri));
blocking.setUntilFinished(makeResource(untilUri));
Control control = objectFactory.createControl();
control.setBlocking(blocking);
workflow.getControl().add(control);
}
// TODO: Datalinks
return true;
}