KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mmbase > storage > search > implementation > BasicCompareFieldsConstraint


1 /*
2
3 This software is OSI Certified Open Source Software.
4 OSI Certified is a certification mark of the Open Source Initiative.
5
6 The license (Mozilla version 1.0) can be read at the MMBase site.
7 See http://www.MMBase.org/license
8
9 */

10 package org.mmbase.storage.search.implementation;
11
12 import org.mmbase.storage.search.*;
13
14 /**
15  * Basic implementation.
16  * The tested operation is equality, unless it is explicitly set.
17  *
18  * @author Rob van Maris
19  * @version $Id: BasicCompareFieldsConstraint.java,v 1.6 2005/10/02 16:18:15 michiel Exp $
20  * @since MMBase-1.7
21  */

22 public class BasicCompareFieldsConstraint extends BasicFieldCompareConstraint
23 implements CompareFieldsConstraint {
24
25     /** The second associated field. */
26     private StepField field2 = null;
27
28     /**
29      * Constructor.
30      *
31      * @param field1 The associated field.
32      * @param field2 The second associated field.
33      * @throws IllegalArgumentException when an invalid argument is supplied.
34      */

35     public BasicCompareFieldsConstraint(StepField field1, StepField field2) {
36         super(field1);
37
38         // Test for non-null value.
39
if (field2 == null) {
40             throw new IllegalArgumentException JavaDoc(
41             "Invalid field2 value: " + field2);
42         }
43
44         // Test for matching fieldtype.
45
if (field1.getType() != field2.getType()) {
46             throw new IllegalArgumentException JavaDoc(
47             "Fieldtypes do not match: " + field1.getType()
48             + " and " + field2.getType());
49         }
50         this.field2 = field2;
51     }
52
53     // javadoc is inherited
54
public StepField getField2() {
55         return field2;
56     }
57
58     // javadoc is inherited
59
public boolean equals(Object JavaDoc obj) {
60         // Must be same class (subclasses should override this)!
61
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     // javadoc is inherited
79
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     // javadoc is inherited
88
public String JavaDoc toString() {
89         StringBuffer JavaDoc sb = new StringBuffer JavaDoc("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