OSDN Git Service

PMD出力機能及びXML入出力機能のソースをマージ
[mikutoga/TogaGem.git] / src / main / java / jp / sourceforge / mikutoga / pmd / xml / PmdXmlResources.java
1 /*\r
2  * xml resources for PMD-XML\r
3  *\r
4  * License : The MIT License\r
5  * Copyright(c) 2010 MikuToga Partners\r
6  */\r
7 \r
8 package jp.sourceforge.mikutoga.pmd.xml;\r
9 \r
10 import java.net.URI;\r
11 import java.net.URISyntaxException;\r
12 import javax.xml.XMLConstants;\r
13 import javax.xml.parsers.DocumentBuilder;\r
14 import javax.xml.parsers.DocumentBuilderFactory;\r
15 import javax.xml.parsers.ParserConfigurationException;\r
16 import javax.xml.validation.Schema;\r
17 import javax.xml.validation.SchemaFactory;\r
18 import jp.sourceforge.mikutoga.xml.XmlResourceResolver;\r
19 import org.xml.sax.SAXException;\r
20 \r
21 /**\r
22  *\r
23  */\r
24 public final class PmdXmlResources {\r
25 \r
26     public static final String NS_PMDXML =\r
27             "http://mikutoga.sourceforge.jp/xml/ns/pmdxml/100923";\r
28     public static final String SCHEMA_PMDXML =\r
29             "http://mikutoga.sourceforge.jp/xml/xsd/pmdxml-100923.xsd";\r
30     public static final String DTD_PMDXML =\r
31             "http://mikutoga.sourceforge.jp/xml/dtd/pmdxml-100923.dtd";\r
32     public static final String VER_PMDXML =\r
33             "100923";\r
34     public static final String LOCAL_SCHEMA_PMDXML =\r
35             "./resources/pmdxml-100923.xsd";\r
36     public static final String LOCAL_DTD_PMDXML =\r
37             "./resources/pmdxml-100923.dtd";\r
38 \r
39     public static final URI URI_SCHEMA_PMDXML = URI.create(SCHEMA_PMDXML);\r
40     public static final URI URI_DTD_PMDXML = URI.create(DTD_PMDXML);\r
41     public static final URI RES_SCHEMA_PMDXML;\r
42     public static final URI RES_DTD_PMDXML;\r
43 \r
44     private static final Class THISCLASS = PmdXmlResources.class;\r
45 \r
46     static{\r
47         Object dummy = new PmdXmlResources();\r
48 \r
49         try{\r
50             RES_SCHEMA_PMDXML =\r
51                     THISCLASS.getResource(LOCAL_SCHEMA_PMDXML).toURI();\r
52             RES_DTD_PMDXML =\r
53                     THISCLASS.getResource(LOCAL_DTD_PMDXML).toURI();\r
54         }catch(URISyntaxException e){\r
55             throw new ExceptionInInitializerError(e);\r
56         }\r
57     }\r
58 \r
59     /**\r
60      * 隠しコンストラクタ。\r
61      */\r
62     private PmdXmlResources(){\r
63         super();\r
64         assert this.getClass().equals(THISCLASS);\r
65         return;\r
66     }\r
67 \r
68     public static DocumentBuilder newBuilder()\r
69             throws SAXException, ParserConfigurationException {\r
70         XmlResourceResolver resolver = new XmlResourceResolver();\r
71         resolver.putURIMap(URI_SCHEMA_PMDXML, RES_SCHEMA_PMDXML);\r
72         resolver.putURIMap(URI_DTD_PMDXML, RES_DTD_PMDXML);\r
73 \r
74         SchemaFactory schemaFactory =\r
75                 SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);\r
76         schemaFactory.setResourceResolver(resolver);\r
77         Schema schema = schemaFactory.newSchema();\r
78 \r
79         DocumentBuilderFactory builderFactory =\r
80                 DocumentBuilderFactory.newInstance();\r
81         builderFactory.setCoalescing(true);\r
82         builderFactory.setExpandEntityReferences(true);\r
83         builderFactory.setIgnoringComments(true);\r
84         builderFactory.setIgnoringElementContentWhitespace(false);\r
85         builderFactory.setNamespaceAware(true);\r
86         builderFactory.setValidating(false);\r
87         builderFactory.setSchema(schema);\r
88 \r
89         DocumentBuilder builder = builderFactory.newDocumentBuilder();\r
90         builder.setEntityResolver(resolver);\r
91 \r
92         return builder;\r
93     }\r
94 \r
95 }\r