01: /*
02: * Copyright (c) 2002-2003 by OpenSymphony
03: * All rights reserved.
04: */
05: package com.opensymphony.workflow;
06:
07: import com.opensymphony.workflow.loader.*;
08:
09: import org.w3c.dom.Document;
10: import org.w3c.dom.Element;
11:
12: import java.io.File;
13: import java.io.FileInputStream;
14:
15: import java.net.URL;
16:
17: import javax.xml.parsers.DocumentBuilder;
18: import javax.xml.parsers.DocumentBuilderFactory;
19:
20: /**
21: * User: Hani Suleiman (hani@formicary.net)
22: * Date: Feb 12, 2003
23: * Time: 6:49:46 PM
24: */
25: public class DescriptorLoader {
26: //~ Methods ////////////////////////////////////////////////////////////////
27:
28: public static WorkflowDescriptor getDescriptor(String url)
29: throws Exception {
30: File file = new File(new URL(url).getFile());
31:
32: if (!file.exists()) {
33: throw new IllegalArgumentException("file " + file
34: + " does not exist");
35: }
36:
37: DocumentBuilderFactory dbf = DocumentBuilderFactory
38: .newInstance();
39: dbf.setNamespaceAware(true);
40: dbf.setValidating(true);
41:
42: DocumentBuilder db = dbf.newDocumentBuilder();
43: db.setEntityResolver(new DTDEntityResolver());
44: db.setErrorHandler(new WorkflowLoader.WorkflowErrorHandler(
45: new URL(url)));
46:
47: Document doc = db.parse(new FileInputStream(file));
48: Element root = (Element) doc.getElementsByTagName("workflow")
49: .item(0);
50:
51: WorkflowDescriptor descriptor = DescriptorFactory.getFactory()
52: .createWorkflowDescriptor(root);
53:
54: return descriptor;
55: }
56: }
|