OSDN Git Service

dmg作成バージョンの取得方法の修正
[charactermanaj/CharacterManaJ.git] / src / main / java / charactermanaj / model / PartsIdentifier.java
1 package charactermanaj.model;\r
2 \r
3 import java.io.Serializable;\r
4 \r
5 /**\r
6  * パーツ識別子.<br>\r
7  * パーツ識別子の同値性は同一カテゴリID、且つ、同一のパーツ名(ID)であることによってのみ判定される.<br>\r
8  * 表示名については不問.<br>\r
9  * カテゴリIDのみ判定され、カテゴリの同値性についても問わない.<br>\r
10  * @author seraphy\r
11  *\r
12  */\r
13 public final class PartsIdentifier implements Serializable, Comparable<PartsIdentifier> {\r
14 \r
15         private static final long serialVersionUID = 8943101890389091718L;\r
16 \r
17         private final PartsCategory partsCategory;\r
18         \r
19         private final String partsName;\r
20         \r
21         private final String localizedName;\r
22         \r
23         public PartsIdentifier(final PartsCategory partsCategory, final String partsName, final String localizedName) {\r
24                 if (partsName == null || partsCategory == null) {\r
25                         throw new IllegalArgumentException();\r
26                 }\r
27                 this.partsCategory = partsCategory;\r
28                 this.partsName = partsName;\r
29                 this.localizedName = (localizedName == null || localizedName.trim().length() == 0) ? partsName : localizedName;\r
30         }\r
31         \r
32         public PartsCategory getPartsCategory() {\r
33                 return partsCategory;\r
34         }\r
35         \r
36         public boolean hasLayer(Layer layer) {\r
37                 return partsCategory.hasLayer(layer);\r
38         }\r
39         \r
40         @Override\r
41         public int hashCode() {\r
42                 return partsName.hashCode();\r
43         }\r
44         \r
45         @Override\r
46         public boolean equals(Object obj) {\r
47                 if (obj == this) {\r
48                         return true;\r
49                 }\r
50                 if (obj != null && obj instanceof PartsIdentifier) {\r
51                         return partsName.equals(((PartsIdentifier) obj).partsName)\r
52                                         && partsCategory.isSameCategoryID(((PartsIdentifier) obj).getPartsCategory());\r
53                 }\r
54                 return false;\r
55         }\r
56         \r
57         public static boolean equals(PartsIdentifier a, PartsIdentifier b) {\r
58                 if (a == b) {\r
59                         return true;\r
60                 }\r
61                 if (a == null || b == null) {\r
62                         return false;\r
63                 }\r
64                 return a.equals(b);\r
65         }\r
66         \r
67         public int compareTo(PartsIdentifier o) {\r
68                 if (o == this) {\r
69                         return 0;\r
70                 }\r
71                 int ret = partsCategory.compareTo(o.partsCategory);\r
72                 if (ret == 0) {\r
73                         ret = localizedName.compareTo(o.localizedName);\r
74                 }\r
75                 if (ret == 0) {\r
76                         ret = partsName.compareTo(o.partsName);\r
77                 }\r
78                 return ret;\r
79         }\r
80         \r
81         public String getPartsName() {\r
82                 return partsName;\r
83         }\r
84         \r
85         public String getLocalizedPartsName() {\r
86                 return localizedName;\r
87         }\r
88 \r
89         /**\r
90          * ローカライズされた名前を変更する.<br>\r
91          * [注意] このクラスは不変クラスなので、インスタンスを変更するのではなく、変更された状態の\r
92          * 新しいインスタンスを返します.<br>\r
93          * @param localizedName ローカライズされた名前\r
94          * @return 新しいインスタンス\r
95          */\r
96         public PartsIdentifier setLocalizedPartsName(String localizedName) {\r
97                 if (localizedName == null || localizedName.trim().length() == 0) {\r
98                         throw new IllegalArgumentException();\r
99                 }\r
100                 return new PartsIdentifier(partsCategory, partsName, localizedName);\r
101         }\r
102 \r
103         @Override\r
104         public String toString() {\r
105                 return getLocalizedPartsName();\r
106         }\r
107         \r
108 }\r