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
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