1 4 package com.tc.lang; 5 6 import com.tc.util.Assert; 7 8 import java.util.Arrays ; 9 10 public class TCEqualsBuilder { 11 12 private boolean isEquals = true; 13 14 public TCEqualsBuilder() { 15 } 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 lhs, Object 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 lhsClass = lhs.getClass(); 113 if (!lhsClass.isArray()) { 114 isEquals = lhs.equals(rhs); 115 return this; 116 } 117 Class 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 return append((Object []) lhs, (Object []) rhs); 144 } 145 } 146 147 public TCEqualsBuilder append(Object [] lhs, Object [] 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 |