OSDN Git Service

SAXパーサ対応
[mikutoga/Vmd2XML.git] / src / main / java / jp / sfjp / mikutoga / vmd / model / xml / SaxXsdUtil.java
1 /*
2  * Sax 2 Xsd-types converter
3  *
4  * License : The MIT License
5  * Copyright(c) 2013 MikuToga Partners
6  */
7
8 package jp.sfjp.mikutoga.vmd.model.xml;
9
10 import javax.xml.bind.DatatypeConverter;
11 import org.xml.sax.Attributes;
12
13 /**
14  * XSD各種型のSAX属性値をJavaプリミティブ型へ変換する。
15  */
16 final class SaxXsdUtil {
17
18     /**
19      * 隠しコンストラクタ。
20      */
21     private SaxXsdUtil(){
22         assert false;
23         throw new AssertionError();
24     }
25
26
27     /**
28      * xsd:string型属性値の読み込み。
29      * @param attr 属性群
30      * @param name 属性名
31      * @return 属性値。該当する属性が無ければnull。
32      */
33     static String getStringAttr(Attributes attr, String name){
34         String attrVal = attr.getValue(name);
35         return attrVal;
36     }
37
38     /**
39      * xsd:boolean型属性値の読み込み。
40      * @param attr 属性群
41      * @param name 属性名
42      * @return 属性値。
43      * @throws IllegalArgumentException boolean型表記ではない
44      */
45     static boolean getBooleanAttr(Attributes attr, String name)
46             throws IllegalArgumentException{
47         String attrVal = attr.getValue(name);
48         boolean bVal;
49         bVal = DatatypeConverter.parseBoolean(attrVal);
50         return bVal;
51     }
52
53     /**
54      * xsd:boolean型属性値の読み込み。
55      * @param attr 属性群
56      * @param name 属性名
57      * @param def 属性が無い場合のデフォルト値
58      * @return 属性値。
59      * @throws IllegalArgumentException boolean型表記ではない
60      */
61     static boolean getBooleanAttr(Attributes attr, String name, boolean def)
62             throws IllegalArgumentException{
63         String attrVal = attr.getValue(name);
64         if(attrVal == null) return def;
65
66         boolean bVal;
67         bVal = DatatypeConverter.parseBoolean(attrVal);
68
69         return bVal;
70     }
71
72     /**
73      * xsd:byte型属性の読み込み。
74      * @param attr 属性群
75      * @param name 属性名
76      * @return 属性値。
77      * @throws NumberFormatException byte型表記ではない
78      */
79     static byte getByteAttr(Attributes attr, String name)
80             throws NumberFormatException{
81         String attrVal = attr.getValue(name);
82         byte bVal;
83         bVal = DatatypeConverter.parseByte(attrVal);
84         return bVal;
85     }
86
87     /**
88      * xsd:float型属性値の読み込み。
89      * @param attr 属性群
90      * @param name 属性名
91      * @return 属性値。
92      * @throws NumberFormatException float型表記ではない
93      */
94     static float getFloatAttr(Attributes attr, String name)
95             throws NumberFormatException {
96         String attrVal = attr.getValue(name);
97         float fVal;
98         fVal = DatatypeConverter.parseFloat(attrVal);
99         return fVal;
100     }
101
102     /**
103      * xsd:int型属性値の読み込み。
104      * @param attr 属性群
105      * @param name 属性名
106      * @return 属性値。
107      * @throws NumberFormatException int型表記ではない
108      */
109     static int getIntAttr(Attributes attr, String name)
110             throws NumberFormatException {
111         String attrVal = attr.getValue(name);
112         int iVal;
113         iVal = DatatypeConverter.parseInt(attrVal);
114         return iVal;
115     }
116
117 }