1 10 package org.mmbase.storage.search.implementation; 11 12 import org.mmbase.storage.search.*; 13 14 22 public class BasicCompareFieldsConstraint extends BasicFieldCompareConstraint 23 implements CompareFieldsConstraint { 24 25 26 private StepField field2 = null; 27 28 35 public BasicCompareFieldsConstraint(StepField field1, StepField field2) { 36 super(field1); 37 38 if (field2 == null) { 40 throw new IllegalArgumentException ( 41 "Invalid field2 value: " + field2); 42 } 43 44 if (field1.getType() != field2.getType()) { 46 throw new IllegalArgumentException ( 47 "Fieldtypes do not match: " + field1.getType() 48 + " and " + field2.getType()); 49 } 50 this.field2 = field2; 51 } 52 53 public StepField getField2() { 55 return field2; 56 } 57 58 public boolean equals(Object obj) { 60 if (obj != null && obj.getClass() == getClass()) { 62 BasicCompareFieldsConstraint constraint 63 = (BasicCompareFieldsConstraint) obj; 64 return isInverse() == constraint.isInverse() 65 && isCaseSensitive() == constraint.isCaseSensitive() 66 && getField().getFieldName().equals(constraint.getField().getFieldName()) 67 && BasicStepField.compareSteps(getField().getStep(), 68 constraint.getField().getStep()) 69 && getOperator() == constraint.getOperator() 70 && field2.getFieldName().equals(constraint.getField2().getFieldName()) 71 && BasicStepField.compareSteps(field2.getStep(), 72 constraint.getField2().getStep()); 73 } else { 74 return false; 75 } 76 } 77 78 public int hashCode() { 80 return super.hashCode() 81 + 93 * field2.getFieldName().hashCode() 82 + (field2.getStep().getAlias() == null? 83 101 * field2.getStep().getTableName().hashCode(): 84 97 * field2.getStep().getAlias().hashCode()); 85 } 86 87 public String toString() { 89 StringBuffer sb = new StringBuffer ("CompareFieldsConstraint(inverse:"). 90 append(isInverse()). 91 append(", field:").append(getFieldName()). 92 append(", casesensitive:").append(isCaseSensitive()). 93 append(", operator:").append(getOperatorDescription()). 94 append(", field2:").append(BasicStepField.getFieldName(getField2())). 95 append(")"); 96 return sb.toString(); 97 } 98 } 99 | Popular Tags |