1 package charactermanaj.model;
\r
3 import java.io.Serializable;
\r
7 * パーツ識別子の同値性は同一カテゴリID、且つ、同一のパーツ名(ID)であることによってのみ判定される.<br>
\r
9 * カテゴリIDのみ判定され、カテゴリの同値性についても問わない.<br>
\r
13 public final class PartsIdentifier implements Serializable, Comparable<PartsIdentifier> {
\r
15 private static final long serialVersionUID = 8943101890389091718L;
\r
17 private final PartsCategory partsCategory;
\r
19 private final String partsName;
\r
21 private final String localizedName;
\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
27 this.partsCategory = partsCategory;
\r
28 this.partsName = partsName;
\r
29 this.localizedName = (localizedName == null || localizedName.trim().length() == 0) ? partsName : localizedName;
\r
32 public PartsCategory getPartsCategory() {
\r
33 return partsCategory;
\r
36 public boolean hasLayer(Layer layer) {
\r
37 return partsCategory.hasLayer(layer);
\r
41 public int hashCode() {
\r
42 return partsName.hashCode();
\r
46 public boolean equals(Object obj) {
\r
50 if (obj != null && obj instanceof PartsIdentifier) {
\r
51 return partsName.equals(((PartsIdentifier) obj).partsName)
\r
52 && partsCategory.isSameCategoryID(((PartsIdentifier) obj).getPartsCategory());
\r
57 public static boolean equals(PartsIdentifier a, PartsIdentifier b) {
\r
61 if (a == null || b == null) {
\r
67 public int compareTo(PartsIdentifier o) {
\r
71 int ret = partsCategory.compareTo(o.partsCategory);
\r
73 ret = localizedName.compareTo(o.localizedName);
\r
76 ret = partsName.compareTo(o.partsName);
\r
81 public String getPartsName() {
\r
85 public String getLocalizedPartsName() {
\r
86 return localizedName;
\r
90 * ローカライズされた名前を変更する.<br>
\r
91 * [注意] このクラスは不変クラスなので、インスタンスを変更するのではなく、変更された状態の
\r
92 * 新しいインスタンスを返します.<br>
\r
93 * @param localizedName ローカライズされた名前
\r
96 public PartsIdentifier setLocalizedPartsName(String localizedName) {
\r
97 if (localizedName == null || localizedName.trim().length() == 0) {
\r
98 throw new IllegalArgumentException();
\r
100 return new PartsIdentifier(partsCategory, partsName, localizedName);
\r
104 public String toString() {
\r
105 return getLocalizedPartsName();
\r