KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tc > lang > TCEqualsBuilder


1 /*
2  * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
3  */

4 package com.tc.lang;
5
6 import com.tc.util.Assert;
7
8 import java.util.Arrays JavaDoc;
9
10 public class TCEqualsBuilder {
11
12   private boolean isEquals = true;
13
14   public TCEqualsBuilder() {
15     // no-op
16
}
17
18   public TCEqualsBuilder append(boolean arg0, boolean arg1) {
19     if (!isEquals) return this;
20     isEquals = arg0 == arg1;
21     return this;
22   }
23
24   public TCEqualsBuilder append(boolean[] arg0, boolean[] arg1) {
25     if (!isEquals) return this;
26     isEquals = Arrays.equals(arg0, arg1);
27     return this;
28   }
29
30   public TCEqualsBuilder append(byte arg0, byte arg1) {
31     if (!isEquals) return this;
32     isEquals = arg0 == arg1;
33     return this;
34   }
35
36   public TCEqualsBuilder append(byte[] arg0, byte[] arg1) {
37     if (!isEquals) return this;
38     isEquals = Arrays.equals(arg0, arg1);
39     return this;
40   }
41
42   public TCEqualsBuilder append(char arg0, char arg1) {
43     if (!isEquals) return this;
44     isEquals = arg0 == arg1;
45     return this;
46   }
47
48   public TCEqualsBuilder append(char[] arg0, char[] arg1) {
49     if (!isEquals) return this;
50     isEquals = Arrays.equals(arg0, arg1);
51     return this;
52   }
53
54   public TCEqualsBuilder append(double lhs, double rhs) {
55     if (!isEquals) return this;
56     isEquals = Double.doubleToLongBits(lhs) == Double.doubleToLongBits(rhs);
57     return this;
58   }
59
60   public TCEqualsBuilder append(double[] arg0, double[] arg1) {
61     if (!isEquals) return this;
62     isEquals = Arrays.equals(arg0, arg1);
63     return this;
64   }
65
66   public TCEqualsBuilder append(float arg0, float arg1) {
67     if (!isEquals) return this;
68     isEquals = Float.floatToIntBits(arg0) == Float.floatToIntBits(arg1);
69     return this;
70   }
71
72   public TCEqualsBuilder append(float[] arg0, float[] arg1) {
73     if (!isEquals) return this;
74     isEquals = Arrays.equals(arg0, arg1);
75     return this;
76   }
77
78   public TCEqualsBuilder append(int arg0, int arg1) {
79     if (!isEquals) return this;
80     isEquals = arg0 == arg1;
81     return this;
82   }
83
84   public TCEqualsBuilder append(int[] arg0, int[] arg1) {
85     if (!isEquals) return this;
86     isEquals = Arrays.equals(arg0, arg1);
87     return this;
88   }
89
90   public TCEqualsBuilder append(long arg0, long arg1) {
91     if (!isEquals) return this;
92     isEquals = arg0 == arg1;
93     return this;
94   }
95
96   public TCEqualsBuilder append(long[] arg0, long[] arg1) {
97     if (!isEquals) return this;
98     isEquals = Arrays.equals(arg0, arg1);
99     return this;
100   }
101
102   public TCEqualsBuilder append(Object JavaDoc lhs, Object JavaDoc rhs) {
103     if (!isEquals) return this;
104     if (lhs == rhs) return this;
105     if (lhs == null || rhs == null) {
106       isEquals = false;
107       return this;
108     }
109     Assert.assertNotNull(lhs);
110     Assert.assertNotNull(rhs);
111
112     Class JavaDoc lhsClass = lhs.getClass();
113     if (!lhsClass.isArray()) {
114       isEquals = lhs.equals(rhs);
115       return this;
116     }
117     Class JavaDoc rhsClass = rhs.getClass();
118     if (!rhsClass.isArray()) {
119       isEquals = rhs.equals(lhs);
120       return this;
121     }
122
123     Assert.eval(lhsClass.isArray() && rhsClass.isArray());
124
125     if (lhs instanceof long[]) {
126       return append((long[]) lhs, (long[]) rhs);
127     } else if (lhs instanceof int[]) {
128       return append((int[]) lhs, (int[]) rhs);
129     } else if (lhs instanceof short[]) {
130       return append((short[]) lhs, (short[]) rhs);
131     } else if (lhs instanceof char[]) {
132       return append((char[]) lhs, (char[]) rhs);
133     } else if (lhs instanceof byte[]) {
134       return append((byte[]) lhs, (byte[]) rhs);
135     } else if (lhs instanceof double[]) {
136       return append((double[]) lhs, (double[]) rhs);
137     } else if (lhs instanceof float[]) {
138       return append((float[]) lhs, (float[]) rhs);
139     } else if (lhs instanceof boolean[]) {
140       return append((boolean[]) lhs, (boolean[]) rhs);
141     } else {
142       // Not an array of primitives
143
return append((Object JavaDoc[]) lhs, (Object JavaDoc[]) rhs);
144     }
145   }
146
147   public TCEqualsBuilder append(Object JavaDoc[] lhs, Object JavaDoc[] rhs) {
148     if (!isEquals) return this;
149
150     if (lhs == rhs) return this;
151
152     if (lhs == null || rhs == null) {
153       isEquals = false;
154       return this;
155     }
156
157     if (lhs.length != rhs.length) {
158       isEquals = false;
159       return this;
160     }
161
162     for (int i = 0; isEquals && i < lhs.length; i++) {
163       append(lhs[i], rhs[i]);
164     }
165     return this;
166   }
167
168   public TCEqualsBuilder append(short lhs, short rhs) {
169     if (!isEquals) return this;
170     isEquals = lhs == rhs;
171     return this;
172   }
173
174   public TCEqualsBuilder append(short[] lhs, short[] rhs) {
175     if (!isEquals) return this;
176     isEquals = Arrays.equals(lhs, rhs);
177     return this;
178   }
179
180   public TCEqualsBuilder appendSuper(boolean lhs) {
181     isEquals = isEquals && lhs;
182     return this;
183   }
184
185   public boolean isEquals() {
186     return isEquals;
187   }
188
189 }
Popular Tags