OSDN Git Service

PMD出力機能及びXML入出力機能のソースをマージ
[mikutoga/TogaGem.git] / src / main / java / jp / sourceforge / mikutoga / pmd / BoneGroup.java
diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/BoneGroup.java b/src/main/java/jp/sourceforge/mikutoga/pmd/BoneGroup.java
new file mode 100644 (file)
index 0000000..52f3394
--- /dev/null
@@ -0,0 +1,122 @@
+/*\r
+ * bone group\r
+ *\r
+ * License : The MIT License\r
+ * Copyright(c) 2010 MikuToga Partners\r
+ */\r
+\r
+package jp.sourceforge.mikutoga.pmd;\r
+\r
+import java.util.ArrayList;\r
+import java.util.Iterator;\r
+import java.util.List;\r
+import jp.sourceforge.mikutoga.corelib.I18nText;\r
+import jp.sourceforge.mikutoga.corelib.SerialNumbered;\r
+\r
+/**\r
+ * ボーングループ。\r
+ * ボーングループ名と0個以上のボーンを配下に持つ。\r
+ * 通し番号0のボーングループは、暗黙に用意される「デフォルトボーングループ」とする。\r
+ */\r
+public class BoneGroup implements SerialNumbered , Iterable<BoneInfo> {\r
+\r
+    private final I18nText groupName = new I18nText();\r
+\r
+    private final List<BoneInfo> boneList = new ArrayList<BoneInfo>();\r
+\r
+    private int serialNo = -1;\r
+\r
+    /**\r
+     * コンストラクタ。\r
+     */\r
+    public BoneGroup(){\r
+        super();\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * ボーングループ名を返す。\r
+     * @return ボーングループ名\r
+     */\r
+    public I18nText getGroupName(){\r
+        return this.groupName;\r
+    }\r
+\r
+    /**\r
+     * ボーンリストを取得する。\r
+     * @return ボーンリスト\r
+     */\r
+    public List<BoneInfo> getBoneList(){\r
+        return this.boneList;\r
+    }\r
+\r
+    /**\r
+     * デフォルトボーングループか否か判定する。\r
+     * 通し番号が0ならデフォルトボーングループ。\r
+     * @return デフォルトボーングループならtrue\r
+     */\r
+    public boolean isDefaultBoneGroup(){\r
+        if(this.serialNo == 0) return true;\r
+        return false;\r
+    }\r
+\r
+    /**\r
+     * {@inheritDoc}\r
+     * @return {@inheritDoc}\r
+     */\r
+    public Iterator<BoneInfo> iterator(){\r
+        return this.boneList.iterator();\r
+    }\r
+\r
+    /**\r
+     * {@inheritDoc}\r
+     * @param num {@inheritDoc}\r
+     */\r
+    public void setSerialNumber(int num){\r
+        this.serialNo = num;\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * {@inheritDoc}\r
+     * @return {@inheritDoc}\r
+     */\r
+    public int getSerialNumber(){\r
+        return this.serialNo;\r
+    }\r
+\r
+    /**\r
+     * ボーングループ番号(ボーン枠番号)を返す。\r
+     * 常に通し番号より1少ない値となる。\r
+     * デフォルトボーングループは-1となる。\r
+     * @return ボーングループ番号\r
+     */\r
+    public int getBoneGroupNumber(){\r
+        return this.serialNo - 1;\r
+    }\r
+\r
+    /**\r
+     * {@inheritDoc}\r
+     * @return {@inheritDoc}\r
+     */\r
+    @Override\r
+    public String toString(){\r
+        StringBuilder result = new StringBuilder();\r
+\r
+        result.append("BoneGroup(")\r
+              .append(this.groupName)\r
+              .append(") [");\r
+\r
+        boolean dumped = false;\r
+        for(BoneInfo bone : this){\r
+            if(dumped) result.append(", ");\r
+            result.append(bone.getBoneName());\r
+            dumped = true;\r
+        }\r
+\r
+        result.append(']');\r
+\r
+        return result.toString();\r
+    }\r
+\r
+}\r