protected WorkflowBundle parseWorkflowBundle()

in taverna-scufl2-wfbundle/src/main/java/org/apache/taverna/scufl2/rdfxml/WorkflowBundleParser.java [76:134]


	protected WorkflowBundle parseWorkflowBundle(
			org.apache.taverna.scufl2.xml.WorkflowBundle wb, URI base)
			throws ReaderException, IOException {
		WorkflowBundle workflowBundle = new WorkflowBundle();
		getParserState().push(workflowBundle);
		try {
			workflowBundle.setResources(getParserState().getUcfPackage());
			if (wb.getName() != null)
				workflowBundle.setName(wb.getName());
			if (wb.getGlobalBaseURI() != null
					&& wb.getGlobalBaseURI().getResource() != null)
				workflowBundle.setGlobalBaseURI(base.resolve(wb
						.getGlobalBaseURI().getResource()));
			mapBean(base.resolve(wb.getAbout()), workflowBundle);
			for (org.apache.taverna.scufl2.xml.WorkflowBundle.Workflow wfEntry : wb
					.getWorkflow()) {
				URI wfUri = base.resolve(wfEntry.getWorkflow().getAbout());
				String resource = wfEntry.getWorkflow().getSeeAlso()
						.getResource();
				URI source = uriTools.relativePath(getParserState()
						.getLocation(), base.resolve(resource));
				workflowParser.readWorkflow(wfUri, source);
			}
			for (org.apache.taverna.scufl2.xml.WorkflowBundle.Profile pfEntry : wb
					.getProfile()) {
				URI wfUri = base.resolve(pfEntry.getProfile().getAbout());
				String resource = pfEntry.getProfile().getSeeAlso()
						.getResource();
				URI source = uriTools.relativePath(getParserState()
						.getLocation(), base.resolve(resource));
				profileParser.readProfile(wfUri, source);
			}

			if (wb.getMainWorkflow() != null
					&& wb.getMainWorkflow().getResource() != null) {
				URI mainWfUri = base
						.resolve(wb.getMainWorkflow().getResource());
				Workflow mainWorkflow = (Workflow) resolveBeanUri(mainWfUri);
				if (mainWorkflow == null)
					throw new ReaderException("Unknown main workflow "
							+ mainWfUri + ", got"
							+ getParserState().getUriToBean().keySet());
				workflowBundle.setMainWorkflow(mainWorkflow);
			}
			if (wb.getMainProfile() != null
					&& wb.getMainProfile().getResource() != null) {
				URI profileUri = base
						.resolve(wb.getMainProfile().getResource());
				org.apache.taverna.scufl2.api.profiles.Profile mainWorkflow = (org.apache.taverna.scufl2.api.profiles.Profile) resolveBeanUri(profileUri);
				workflowBundle.setMainProfile(mainWorkflow);
			}
			// TAVERNA-71 workaround - naively find annotations
			parseAnnotations(workflowBundle);
			
		} finally {
			getParserState().pop();
		}
		return workflowBundle;
	}