OSDN Git Service

XMLパース処理の分離に伴う修正
authorOlyutorskii <olyutorskii@users.osdn.me>
Wed, 27 Apr 2011 13:36:05 +0000 (22:36 +0900)
committerOlyutorskii <olyutorskii@users.osdn.me>
Wed, 27 Apr 2011 13:36:05 +0000 (22:36 +0900)
src/main/java/jp/sourceforge/jindolf/corelib/PreDefAvatar.java

index 4472ef3..4110946 100644 (file)
@@ -8,15 +8,11 @@
 package jp.sourceforge.jindolf.corelib;\r
 \r
 import java.io.IOException;\r
-import java.io.InputStream;\r
 import java.util.ArrayList;\r
 import java.util.Collections;\r
 import java.util.List;\r
 import javax.xml.parsers.DocumentBuilder;\r
-import org.w3c.dom.Document;\r
 import org.w3c.dom.Element;\r
-import org.w3c.dom.Node;\r
-import org.w3c.dom.NodeList;\r
 import org.xml.sax.SAXException;\r
 \r
 /**\r
@@ -81,65 +77,20 @@ public final class PreDefAvatar{
             DocumentBuilder builder)\r
             throws IOException,\r
                    SAXException {\r
-        Element list = loadAvatarList(builder);\r
-        List<PreDefAvatar> result;\r
-        result = elemToAvatarList(list);\r
-        result = Collections.unmodifiableList(result);\r
-        return result;\r
-    }\r
+        List<Element> elemList = DomUtils.loadElemList(\r
+                builder, XmlResource.I_URL_AVATARDEF, "preDefinedAvatar");\r
 \r
-    /**\r
-     * プリセットAvatarに関する定義をロードする。\r
-     * @see XmlResource#I_URL_AVATARDEF ロード対象となるXMLリソースのURL\r
-     * @param builder DOMビルダ\r
-     * @return Avatar定義情報のルート要素\r
-     * @throws IOException IOエラー\r
-     * @throws SAXException パースエラー\r
-     */\r
-    private static Element loadAvatarList(DocumentBuilder builder)\r
-            throws IOException,\r
-                   SAXException {\r
-        InputStream istream = XmlResource.I_URL_AVATARDEF.openStream();\r
-        Document document;\r
-        try{\r
-            document = builder.parse(istream);\r
-        }finally{\r
-            istream.close();\r
-        }\r
+        List<PreDefAvatar> result =\r
+                new ArrayList<PreDefAvatar>(elemList.size());\r
 \r
-        Element root = document.getDocumentElement();\r
-        String tagName = root.getTagName();\r
-        if( ! "preDefinedAvatarList".equals(tagName) ){\r
-            throw new SAXException("illegal root " + tagName);\r
-        }\r
-\r
-        return root;\r
-    }\r
-\r
-    /**\r
-     * 要素内部を探索し、プリセットAvatarを登録する。\r
-     * @param list ルート要素\r
-     * @return プリセットAvatarが登録されたList\r
-     * @throws SAXException パースエラー\r
-     */\r
-    private static List<PreDefAvatar> elemToAvatarList(Element list)\r
-            throws SAXException {\r
-        NodeList elems = list.getElementsByTagName("preDefinedAvatar");\r
-        int avatarNum = elems.getLength();\r
-        if(avatarNum <= 0){\r
-            throw new SAXException("there is no <preDefinedAvatar>");\r
-        }\r
-        List<PreDefAvatar> avatarList =\r
-                new ArrayList<PreDefAvatar>(avatarNum);\r
-\r
-        for(int index = 0; index < avatarNum; index++){\r
-            Node node = elems.item(index);\r
-            Element elem = (Element) node;\r
+        for(Element elem : elemList){\r
             PreDefAvatar avatar = buildAvatar(elem);\r
-            avatarList.add(avatar);\r
+            result.add(avatar);\r
         }\r
 \r
-        return avatarList;\r
+        result = Collections.unmodifiableList(result);\r
+\r
+        return result;\r
     }\r
 \r
     /**\r