public boolean visit()

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;
		}