1 10 package mondrian.olap.fun; 11 12 import mondrian.olap.Member; 13 14 18 public class MemberHelper { 19 private final Object mObject; 20 public MemberHelper(Object entry) { 21 if ((entry == null) || 22 (entry instanceof Member) || 23 (entry instanceof Member[])) { 24 25 mObject = entry; 26 } else { 27 throw new IllegalArgumentException ("Expected Member or Member[]"); 28 } 29 } 30 31 public boolean equals(Object obj) { 32 if ((obj == null) || !(obj instanceof MemberHelper)) { 33 return false; 34 } else if (this == obj) { 35 return true; 36 } 37 38 MemberHelper mh = (MemberHelper)obj; 39 40 if (this.mObject == null) { 41 return mh.mObject == null; 42 } else if (mh.mObject instanceof Member && mObject instanceof Member) { 43 return ((Member)mObject).equals(mh.mObject); 44 } else if (mh.mObject instanceof Member[] && 45 mObject instanceof Member[]) { 46 47 Member[] array1 = (Member[])mh.mObject; 48 Member[] array2 = (Member[])this.mObject; 49 50 if (array1.length != array2.length) { 51 return false; 52 } 53 54 for (int idx = 0; idx < array1.length; idx++) { 55 if (!array1[idx].equals(array2[idx])) { 56 return false; 57 } 58 } 59 60 return true; 61 } else { 62 return false; 63 } 64 } 65 66 public int hashCode() { 67 if (mObject instanceof Member) { 68 return mObject.hashCode(); 69 } else if (mObject instanceof Member[]) { 70 int hash = 0; 71 72 Member[] array = (Member[]) mObject; 73 74 for (int idx = 0; idx < array.length; idx++) { 75 hash ^= array[idx].hashCode(); 76 } 77 78 return hash; 79 } else { 80 return mObject.hashCode(); 81 } 82 } 83 } 84 | Popular Tags |