OSDN Git Service

replacing DatatypeConverter(JAXB).
[mikutoga/TogaGem.git] / src / main / java / jp / sfjp / mikutoga / xml / SaxAttr.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.xml;
9
10 import org.xml.sax.Attributes;
11
12 /**
13  * XSD各種型のSAX属性値をJavaプリミティブ型へ変換する。
14  */
15 public final class SaxAttr {
16
17     /**
18      * 隠しコンストラクタ。
19      */
20     private SaxAttr(){
21         assert false;
22         throw new AssertionError();
23     }
24
25
26     /**
27      * 属性名に対応する属性値があるか否か判定する。
28      * @param attr 属性群
29      * @param name 属性名
30      * @return 属性名に対応する属性値がある場合はtrue
31      */
32     public static boolean hasAttr(Attributes attr, String name){
33         if(attr.getValue(name) == null) return false;
34         return true;
35     }
36
37     /**
38      * xsd:string型属性値の読み込み。
39      * @param attr 属性群
40      * @param name 属性名
41      * @return 属性値。該当する属性が無ければnull。
42      */
43     public static String getStringAttr(Attributes attr, String name){
44         String attrVal = attr.getValue(name);
45         return attrVal;
46     }
47
48     /**
49      * xsd:boolean型属性値の読み込み。
50      * @param attr 属性群
51      * @param name 属性名
52      * @return 属性値。
53      * @throws IllegalArgumentException boolean型表記ではない
54      */
55     public static boolean getBooleanAttr(Attributes attr, String name)
56             throws IllegalArgumentException{
57         String attrVal = attr.getValue(name);
58         boolean bVal;
59         bVal = DatatypeIo.parseBoolean(attrVal);
60         return bVal;
61     }
62
63     /**
64      * xsd:boolean型属性値の読み込み。
65      * @param attr 属性群
66      * @param name 属性名
67      * @param def 属性が無い場合のデフォルト値
68      * @return 属性値。
69      * @throws IllegalArgumentException boolean型表記ではない
70      */
71     public static boolean getBooleanAttr(Attributes attr,
72                                            String name,
73                                            boolean def )
74             throws IllegalArgumentException{
75         String attrVal = attr.getValue(name);
76         if(attrVal == null) return def;
77
78         boolean bVal;
79         bVal = DatatypeIo.parseBoolean(attrVal);
80
81         return bVal;
82     }
83
84     /**
85      * xsd:byte型属性の読み込み。
86      * @param attr 属性群
87      * @param name 属性名
88      * @return 属性値。
89      * @throws NumberFormatException byte型表記ではない
90      */
91     public static byte getByteAttr(Attributes attr, String name)
92             throws NumberFormatException{
93         String attrVal = attr.getValue(name);
94         byte bVal;
95         bVal = DatatypeIo.parseByte(attrVal);
96         return bVal;
97     }
98
99     /**
100      * xsd:float型属性値の読み込み。
101      * @param attr 属性群
102      * @param name 属性名
103      * @return 属性値。
104      * @throws NumberFormatException float型表記ではない
105      */
106     public static float getFloatAttr(Attributes attr, String name)
107             throws NumberFormatException {
108         String attrVal = attr.getValue(name);
109         float fVal;
110         fVal = DatatypeIo.parseFloat(attrVal);
111         return fVal;
112     }
113
114     /**
115      * xsd:int型属性値の読み込み。
116      * @param attr 属性群
117      * @param name 属性名
118      * @return 属性値。
119      * @throws NumberFormatException int型表記ではない
120      */
121     public static int getIntAttr(Attributes attr, String name)
122             throws NumberFormatException {
123         String attrVal = attr.getValue(name);
124         int iVal;
125         iVal = DatatypeIo.parseInt(attrVal);
126         return iVal;
127     }
128
129 }