OSDN Git Service

6c598d21da308a5cf1c840923f2e92e0b2746191
[mikutoga/Pmd2XML.git] / src / main / java / jp / sourceforge / mikutoga / pmd / model / BoneGroup.java
1 /*
2  * bone group
3  *
4  * License : The MIT License
5  * Copyright(c) 2010 MikuToga Partners
6  */
7
8 package jp.sourceforge.mikutoga.pmd.model;
9
10 import java.util.ArrayList;
11 import java.util.Iterator;
12 import java.util.List;
13 import jp.sourceforge.mikutoga.corelib.I18nText;
14
15 /**
16  * ボーングループ。
17  * ボーングループ名と0個以上のボーンを配下に持つ。
18  * 通し番号0のボーングループは、暗黙に用意される「デフォルトボーングループ」とする。
19  */
20 public class BoneGroup implements SerialNumbered , Iterable<BoneInfo> {
21
22     private final I18nText groupName = new I18nText();
23
24     private final List<BoneInfo> boneList = new ArrayList<BoneInfo>();
25
26     private int serialNo = -1;
27
28     /**
29      * コンストラクタ。
30      */
31     public BoneGroup(){
32         super();
33         return;
34     }
35
36     /**
37      * ボーングループ名を返す。
38      * @return ボーングループ名
39      */
40     public I18nText getGroupName(){
41         return this.groupName;
42     }
43
44     /**
45      * ボーンリストを取得する。
46      * @return ボーンリスト
47      */
48     public List<BoneInfo> getBoneList(){
49         return this.boneList;
50     }
51
52     /**
53      * デフォルトボーングループか否か判定する。
54      * 通し番号が0ならデフォルトボーングループ。
55      * @return デフォルトボーングループならtrue
56      */
57     public boolean isDefaultBoneGroup(){
58         if(this.serialNo == 0) return true;
59         return false;
60     }
61
62     /**
63      * {@inheritDoc}
64      * @return {@inheritDoc}
65      */
66     @Override
67     public Iterator<BoneInfo> iterator(){
68         return this.boneList.iterator();
69     }
70
71     /**
72      * {@inheritDoc}
73      * @param num {@inheritDoc}
74      */
75     @Override
76     public void setSerialNumber(int num){
77         this.serialNo = num;
78         return;
79     }
80
81     /**
82      * {@inheritDoc}
83      * @return {@inheritDoc}
84      */
85     @Override
86     public int getSerialNumber(){
87         return this.serialNo;
88     }
89
90     /**
91      * ボーングループ番号(ボーン枠番号)を返す。
92      * 常に通し番号より1少ない値となる。
93      * デフォルトボーングループは-1となる。
94      * @return ボーングループ番号
95      */
96     public int getBoneGroupNumber(){
97         return this.serialNo - 1;
98     }
99
100     /**
101      * {@inheritDoc}
102      * @return {@inheritDoc}
103      */
104     @Override
105     public String toString(){
106         StringBuilder result = new StringBuilder();
107
108         result.append("BoneGroup(")
109               .append(this.groupName)
110               .append(") [");
111
112         boolean dumped = false;
113         for(BoneInfo bone : this){
114             if(dumped) result.append(", ");
115             result.append(bone.getBoneName());
116             dumped = true;
117         }
118
119         result.append(']');
120
121         return result.toString();
122     }
123
124 }