OSDN Git Service

mavenによるビルドに変更
[charactermanaj/CharacterManaJ.git] / src / main / java / charactermanaj / model / IndependentPartsSetInfo.java
1 package charactermanaj.model;\r
2 \r
3 import java.awt.Color;\r
4 import java.io.Serializable;\r
5 import java.util.HashMap;\r
6 import java.util.List;\r
7 import java.util.Map;\r
8 import java.util.logging.Level;\r
9 import java.util.logging.Logger;\r
10 \r
11 /**\r
12  * 素のパーツセットの情報.<br>\r
13  * レイヤーやカテゴリなどのリレーションシップがない、<br>\r
14  * 特定のキャラクターデータモデルのツリーの一部には組み込まれていない状態のもの.<br>\r
15  */\r
16 public class IndependentPartsSetInfo implements Serializable {\r
17 \r
18         /**\r
19          * シリアライズバージョンID\r
20          */\r
21         private static final long serialVersionUID = 7280485045920860407L;\r
22 \r
23         /**\r
24          * ロガー\r
25          */\r
26         private static final Logger logger = Logger\r
27                         .getLogger(IndependentPartsSetInfo.class.getName());\r
28 \r
29         /**\r
30          * バーツセットのID\r
31          */\r
32         private String id;\r
33 \r
34         /**\r
35          * パーツセットの表示名\r
36          */\r
37         private String displayName;\r
38 \r
39         /**\r
40          * 背景色、未設定であればnull\r
41          */\r
42         private Color backgroundColor;\r
43 \r
44         /**\r
45          * アフィン変換パラメータ、未設定であればnull\r
46          */\r
47         private double[] affineTransformParameter;\r
48 \r
49         /**\r
50          * カテゴリIDをキーとし、パーツ名をキーとしカラー情報のリストを値とするマップを値とする.\r
51          */\r
52         private Map<String, Map<String, List<IndependentPartsColorInfo>>> partsMap = new HashMap<String, Map<String, List<IndependentPartsColorInfo>>>();\r
53 \r
54         public String getId() {\r
55                 return id;\r
56         }\r
57 \r
58         public void setId(String id) {\r
59                 this.id = id;\r
60         }\r
61 \r
62         public String getDisplayName() {\r
63                 return displayName;\r
64         }\r
65 \r
66         public void setDisplayName(String displayName) {\r
67                 this.displayName = displayName;\r
68         }\r
69 \r
70         public Color getBackgroundColor() {\r
71                 return backgroundColor;\r
72         }\r
73 \r
74         public void setBackgroundColor(Color backgroundColor) {\r
75                 this.backgroundColor = backgroundColor;\r
76         }\r
77 \r
78         public double[] getAffineTransformParameter() {\r
79                 return affineTransformParameter;\r
80         }\r
81 \r
82         public void setAffineTransformParameter(\r
83                         double[] affineTransformParameter) {\r
84                 this.affineTransformParameter = affineTransformParameter;\r
85         }\r
86 \r
87         /**\r
88          * カテゴリIDをキーとし、パーツ名をキーとしカラー情報のリストを値とするマップを値とする.\r
89          * \r
90          * @return カテゴリIDをキーとし、パーツ名をキーとしカラー情報のリストを値とするマップを値とする.\r
91          */\r
92         public Map<String, Map<String, List<IndependentPartsColorInfo>>> getPartsMap() {\r
93                 return partsMap;\r
94         }\r
95 \r
96         public void setPartsMap(\r
97                         Map<String, Map<String, List<IndependentPartsColorInfo>>> partsMap) {\r
98                 if (partsMap == null) {\r
99                         throw new IllegalArgumentException();\r
100                 }\r
101                 this.partsMap = partsMap;\r
102         }\r
103 \r
104         /**\r
105          * インスタンス独立のパーツセット情報から、指定されたキャラクターデータに関連づけられた パーツ情報に変換して返す.<br>\r
106          * \r
107          * @param partsSetInfo\r
108          *            インスタンス独立のパーツセット情報\r
109          * @param characterData\r
110          *            キャラクターデータ\r
111          * @param presetParts\r
112          *            プリセットか?\r
113          * @return キャラクターデータに関連づけられたパーツセットインスタンス\r
114          */\r
115         public static PartsSet convertPartsSet(\r
116                         IndependentPartsSetInfo partsSetInfo, CharacterData characterData,\r
117                         boolean presetParts) {\r
118                 if (partsSetInfo == null || characterData == null) {\r
119                         throw new IllegalArgumentException();\r
120                 }\r
121                 PartsSet partsSet = new PartsSet();\r
122                 partsSet.setPartsSetId(partsSetInfo.getId());\r
123                 partsSet.setLocalizedName(partsSetInfo.getDisplayName());\r
124                 partsSet.setPresetParts(presetParts);\r
125 \r
126                 Color backgroundColor = partsSetInfo.getBackgroundColor();\r
127                 if (backgroundColor != null) {\r
128                         partsSet.setBgColor(backgroundColor);\r
129                 }\r
130 \r
131                 double[] affineTrans = partsSetInfo.getAffineTransformParameter();\r
132                 if (affineTrans != null) {\r
133                         partsSet.setAffineTransformParameter(affineTrans);\r
134                 }\r
135 \r
136                 Map<String, Map<String, List<IndependentPartsColorInfo>>> partsMap = partsSetInfo\r
137                                 .getPartsMap();\r
138                 for (Map.Entry<String, Map<String, List<IndependentPartsColorInfo>>> categoryEntry : partsMap\r
139                                 .entrySet()) {\r
140                         String categoryId = categoryEntry.getKey();\r
141                         Map<String, List<IndependentPartsColorInfo>> categoryPartsMap = categoryEntry\r
142                                         .getValue();\r
143 \r
144                         PartsCategory partsCategory = characterData\r
145                                         .getPartsCategory(categoryId);\r
146                         if (partsCategory == null) {\r
147                                 logger.log(Level.WARNING, "undefined category-id: "\r
148                                                 + categoryId);\r
149                                 continue;\r
150                         }\r
151 \r
152                         for (Map.Entry<String, List<IndependentPartsColorInfo>> partsEntry : categoryPartsMap\r
153                                         .entrySet()) {\r
154                                 String partsName = partsEntry.getKey();\r
155                                 List<IndependentPartsColorInfo> colorInfoList = partsEntry\r
156                                                 .getValue();\r
157 \r
158                                 PartsIdentifier partsIdentifier = new PartsIdentifier(\r
159                                                 partsCategory, partsName, partsName);\r
160 \r
161                                 PartsColorInfo partsColorInfo = IndependentPartsColorInfo\r
162                                                 .buildPartsColorInfo(characterData, partsCategory,\r
163                                                                 colorInfoList);\r
164 \r
165                                 partsSet.appendParts(partsCategory, partsIdentifier,\r
166                                                 partsColorInfo);\r
167                         }\r
168                 }\r
169                 return partsSet;\r
170         }\r
171 }\r