1 10 package org.mmbase.storage.search.implementation; 11 12 import org.mmbase.bridge.Field; 13 import org.mmbase.storage.search.*; 14 15 23 public class BasicFieldCompareConstraint extends BasicFieldConstraint implements FieldCompareConstraint { 24 25 26 private int operator = FieldCompareConstraint.EQUAL; 27 28 35 protected BasicFieldCompareConstraint(StepField field) { 36 super(field); 37 } 38 39 46 public BasicFieldCompareConstraint setOperator(int operator) { 47 48 if (operator < FieldCompareConstraint.LESS 50 || operator > FieldCompareConstraint.LIKE) { 51 throw new IllegalArgumentException ( 52 "Invalid operator value: " + operator ); 53 } 54 55 if (operator == FieldCompareConstraint.LIKE 57 && getField().getType() != Field.TYPE_STRING 58 && getField().getType() != Field.TYPE_XML) { 59 throw new IllegalArgumentException ("LIKE operator not allowed for this field type: " + getField().getType()); 60 } 61 62 this.operator = operator; 63 return this; 64 } 65 66 public int getOperator() { 68 return operator; 69 } 70 71 74 public String getOperatorDescription() { 75 try { 76 return FieldCompareConstraint.OPERATOR_DESCRIPTIONS[operator]; 77 } catch (IndexOutOfBoundsException ioobe) { 78 return null; 79 } 80 } 81 82 public boolean equals(Object obj) { 84 if (obj != null && obj.getClass() == getClass()) { 86 BasicFieldCompareConstraint constraint 87 = (BasicFieldCompareConstraint) obj; 88 return isInverse() == constraint.isInverse() 89 && isCaseSensitive() == constraint.isCaseSensitive() 90 && getField().getFieldName().equals(constraint.getField().getFieldName()) 91 && BasicStepField.compareSteps(getField().getStep(), 92 constraint.getField().getStep()) 93 && operator == constraint.operator; 94 } else { 95 return false; 96 } 97 } 98 99 public int hashCode() { 101 return super.hashCode() 102 + 113 * operator; 103 } 104 105 public String toString() { 107 StringBuffer sb = new StringBuffer ("BasicFieldCompareConstraint(inverse:"). 108 append(isInverse()). 109 append(", field:").append(getFieldName()). 110 append(", casesensitive:").append(isCaseSensitive()). 111 append(", operator:").append(getOperatorDescription()). 112 append(")"); 113 return sb.toString(); 114 } 115 116 } 117 | Popular Tags |