package net.ms.designer.editors.workflow.xmlparse; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import net.ms.designer.core.MsProject; import net.ms.designer.editors.workflow.models.SubFlowActivity; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; public class ReadSubflowFromProjectXML { MsProject project; public ReadSubflowFromProjectXML(MsProject project) { this.project = project; } public List readSubflowFromProjectXML(String filePath) throws Exception { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(filePath); document.normalize(); List subflowList = new ArrayList(); if(document.getDocumentElement()==null) { return null; } if(document.getDocumentElement()!=null) { Element richweb = document.getDocumentElement(); if(richweb.getElementsByTagName("project")!= null && richweb.getElementsByTagName("project").getLength()>0) { Element project0 = (Element)richweb.getElementsByTagName("project").item(0); if(project0.getElementsByTagName("package")!= null &&project0.getElementsByTagName("package").getLength()>0) { NodeList packageList = project0.getElementsByTagName("package"); for(int i = 0; i <packageList.getLength(); i++) { Element onePack = (Element) packageList.item(i); if(onePack.getElementsByTagName("name")!=null && onePack.getElementsByTagName("name").getLength()>0) { if(onePack.getElementsByTagName("name").item(0).getFirstChild().getNodeValue().equals(this.project.getPackageName())) { NodeList componentList = onePack.getElementsByTagName("component"); if(componentList!= null) { for(int j = 0 ; j<componentList.getLength(); j++) { Element oneComp = (Element)componentList.item(j); if(oneComp.getElementsByTagName("name")!= null && oneComp.getElementsByTagName("name").getLength()>0) { if(oneComp.getElementsByTagName("name").item(0).getFirstChild().getNodeValue().equals(this.project.getComponentName())) { NodeList workflowList = oneComp.getElementsByTagName("workflow"); if(workflowList!= null && workflowList.getLength()>0) { Element workflow = (Element)workflowList.item(0); if(workflow.getElementsByTagName("name")!= null && workflow.getElementsByTagName("name").getLength()>0) { if(workflow.getElementsByTagName("name").item(0).getFirstChild().getNodeValue().equals(this.project.getWorkflowName())) { NodeList subList = workflow.getElementsByTagName("subflow"); if(subList!= null && subList.getLength()>0) { for(int k = 0 ; k<subList.getLength(); k++) { Element subflow = (Element)subList.item(k); SubFlowActivity subflowActivity = new SubFlowActivity(); subflowActivity.setSubflowId(subflow.getElementsByTagName("id").item(0).getFirstChild().getNodeValue()); subflowActivity.setSubflowName(subflow.getElementsByTagName("name").item(0).getFirstChild().getNodeValue()); subflowActivity.setSubflowPath(subflow.getElementsByTagName("path").item(0).getFirstChild().getNodeValue()); subflowList.add(subflowActivity); } break; } } } } } } } } } } } } } } return subflowList; } }