OSDN Git Service

接続ボーンを持たない剛体に対処。
[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.ErrorHandler;\r
20 import org.xml.sax.SAXException;\r
21 \r
22 /**\r
23  * XML各種リソースの定義。\r
24  */\r
25 public final class PmdXmlResources {\r
26 \r
27     public static final String NS_PMDXML =\r
28             "http://mikutoga.sourceforge.jp/xml/ns/pmdxml/101009";\r
29     public static final String SCHEMA_PMDXML =\r
30             "http://mikutoga.sourceforge.jp/xml/xsd/pmdxml-101009.xsd";\r
31     public static final String DTD_PMDXML =\r
32             "http://mikutoga.sourceforge.jp/xml/dtd/pmdxml-101009.dtd";\r
33     public static final String VER_PMDXML =\r
34             "101009";\r
35     public static final String LOCAL_SCHEMA_PMDXML =\r
36             "resources/pmdxml-101009.xsd";\r
37     public static final String LOCAL_DTD_PMDXML =\r
38             "resources/pmdxml-101009.dtd";\r
39 \r
40     public static final URI URI_SCHEMA_PMDXML = URI.create(SCHEMA_PMDXML);\r
41     public static final URI URI_DTD_PMDXML = URI.create(DTD_PMDXML);\r
42     public static final URI RES_SCHEMA_PMDXML;\r
43     public static final URI RES_DTD_PMDXML;\r
44 \r
45     private static final Class THISCLASS = PmdXmlResources.class;\r
46 \r
47     static{\r
48         Object dummy = new PmdXmlResources();\r
49 \r
50         try{\r
51             RES_SCHEMA_PMDXML =\r
52                     THISCLASS.getResource(LOCAL_SCHEMA_PMDXML).toURI();\r
53             RES_DTD_PMDXML =\r
54                     THISCLASS.getResource(LOCAL_DTD_PMDXML).toURI();\r
55         }catch(URISyntaxException e){\r
56             throw new ExceptionInInitializerError(e);\r
57         }\r
58     }\r
59 \r
60     /**\r
61      * 隠しコンストラクタ。\r
62      */\r
63     private PmdXmlResources(){\r
64         super();\r
65         assert this.getClass().equals(THISCLASS);\r
66         return;\r
67     }\r
68 \r
69     /**\r
70      * ビルダの生成。\r
71      * @param handler エラーハンドラ\r
72      * @return ビルダ\r
73      * @throws SAXException パースエラー\r
74      * @throws ParserConfigurationException 構成エラー\r
75      */\r
76     public static DocumentBuilder newBuilder(ErrorHandler handler)\r
77             throws SAXException, ParserConfigurationException {\r
78         XmlResourceResolver resolver = new XmlResourceResolver();\r
79         resolver.putURIMap(URI_SCHEMA_PMDXML, RES_SCHEMA_PMDXML);\r
80         resolver.putURIMap(URI_DTD_PMDXML, RES_DTD_PMDXML);\r
81 \r
82         SchemaFactory schemaFactory =\r
83                 SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);\r
84         schemaFactory.setResourceResolver(resolver);\r
85         schemaFactory.setErrorHandler(handler);\r
86         Schema schema = schemaFactory.newSchema();\r
87 \r
88         DocumentBuilderFactory builderFactory =\r
89                 DocumentBuilderFactory.newInstance();\r
90         builderFactory.setCoalescing(true);\r
91         builderFactory.setExpandEntityReferences(true);\r
92         builderFactory.setIgnoringComments(true);\r
93         builderFactory.setIgnoringElementContentWhitespace(false);\r
94         builderFactory.setNamespaceAware(true);\r
95         builderFactory.setValidating(false);\r
96         builderFactory.setSchema(schema);\r
97 \r
98         DocumentBuilder builder = builderFactory.newDocumentBuilder();\r
99         builder.setEntityResolver(resolver);\r
100         builder.setErrorHandler(handler);\r
101 \r
102         return builder;\r
103     }\r
104 \r
105 }\r