001: /*
002: * ====================================================================
003: * JAFFA - Java Application Framework For All
004: *
005: * Copyright (C) 2002 JAFFA Development Group
006: *
007: * This library is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU Lesser General Public
009: * License as published by the Free Software Foundation; either
010: * version 2.1 of the License, or (at your option) any later version.
011: *
012: * This library is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * You should have received a copy of the GNU Lesser General Public
018: * License along with this library; if not, write to the Free Software
019: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
020: *
021: * Redistribution and use of this software and associated documentation ("Software"),
022: * with or without modification, are permitted provided that the following conditions are met:
023: * 1. Redistributions of source code must retain copyright statements and notices.
024: * Redistributions must also contain a copy of this document.
025: * 2. Redistributions in binary form must reproduce the above copyright notice,
026: * this list of conditions and the following disclaimer in the documentation
027: * and/or other materials provided with the distribution.
028: * 3. The name "JAFFA" must not be used to endorse or promote products derived from
029: * this Software without prior written permission. For written permission,
030: * please contact mail to: jaffagroup@yahoo.com.
031: * 4. Products derived from this Software may not be called "JAFFA" nor may "JAFFA"
032: * appear in their names without prior written permission.
033: * 5. Due credit should be given to the JAFFA Project (http://jaffa.sourceforge.net).
034: *
035: * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
036: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
037: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
038: * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
039: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
040: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
041: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
042: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
043: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
044: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
045: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
046: * SUCH DAMAGE.
047: * ====================================================================
048: */
049:
050: package org.jaffa.components.finder;
051:
052: /**
053: * This is the interface for all the Criteria fields.
054: * Each CriteriaField object will consist of an Operator and a array of values.
055: * The length of the array will be zero for the 'IsNull' and 'IsNotNull' operators.
056: * The length of the array will have to be >= 1, for the 'Between' and the 'In' operators.
057: * For all other operators, the length of the array will have to be one.
058: * @author GautamJ
059: */
060: public interface CriteriaField {
061:
062: /** A global constant for the EQUALS criteria operator.*/
063: public final static String RELATIONAL_EQUALS = "Equals";
064:
065: /** A global constant for the NOT_EQUALS criteria operator.*/
066: public final static String RELATIONAL_NOT_EQUALS = "NotEquals";
067:
068: /** A global constant for the GREATER_THAN criteria operator.*/
069: public final static String RELATIONAL_GREATER_THAN = "GreaterThan";
070:
071: /** A global constant for the SMALLER_THAN criteria operator.*/
072: public final static String RELATIONAL_SMALLER_THAN = "SmallerThan";
073:
074: /** A global constant for the GREATER_THAN_EQUAL_TO criteria operator.*/
075: public final static String RELATIONAL_GREATER_THAN_EQUAL_TO = "GreaterThanOrEquals";
076:
077: /** A global constant for the SMALLER_THAN_EQUAL_TO criteria operator.*/
078: public final static String RELATIONAL_SMALLER_THAN_EQUAL_TO = "SmallerThanOrEquals";
079:
080: /** A global constant for the IS_NOT_NULL criteria operator.*/
081: public final static String RELATIONAL_IS_NOT_NULL = "IsNotNull";
082:
083: /** A global constant for the IS_NULL criteria operator.*/
084: public final static String RELATIONAL_IS_NULL = "IsNull";
085:
086: /** A global constant for the BEGINS_WITH criteria operator.*/
087: public final static String RELATIONAL_BEGINS_WITH = "BeginsWith";
088:
089: /** A global constant for the ENDS_WITH criteria operator.*/
090: public final static String RELATIONAL_ENDS_WITH = "EndWith";
091:
092: /** A global constant for the LIKE criteria operator.*/
093: public final static String RELATIONAL_LIKE = "Like";
094:
095: /** A global constant for the BETWEEN criteria operator.*/
096: public final static String RELATIONAL_BETWEEN = "Between";
097:
098: /** A global constant for the IN criteria operator.*/
099: public final static String RELATIONAL_IN = "In";
100:
101: /** This character should be used for separating the arguments for the In/Between relational operators.*/
102: public final static char SEPARATOR_CHAR_FOR_IN_BETWEEN_OPERATORS = ',';
103:
104: /** This is the String representation of the constant SEPARATOR_CHAR_FOR_IN_BETWEEN_OPERATORS.*/
105: public final static String SEPARATOR_FOR_IN_BETWEEN_OPERATORS = ""
106: + SEPARATOR_CHAR_FOR_IN_BETWEEN_OPERATORS;
107:
108: // These constants are used by the various classes implementing this interface
109: final static String CONSECUTIVE_SEPARATORS = SEPARATOR_FOR_IN_BETWEEN_OPERATORS
110: + SEPARATOR_FOR_IN_BETWEEN_OPERATORS;
111: final static String CONSECUTIVE_SEPARATORS_WITH_SPACE = SEPARATOR_FOR_IN_BETWEEN_OPERATORS
112: + " " + SEPARATOR_FOR_IN_BETWEEN_OPERATORS;
113:
114: /** Getter for property operator.
115: * @return Value of property operator.
116: */
117: public String getOperator();
118:
119: /** Getter for property values.
120: * This method ensures that a class implementing the CriteriaField interface will have an array of criteria values.
121: * Additionally they are expected to have a 'getValues()' method returning actual instances.
122: * For eg. StringCriteriaField will have 'String[] getValues()', BooleanCriteriaField will have 'Boolean[] getValues()' and so on.
123: * @return An array of values for the Criteria.
124: */
125: public Object[] returnValuesAsObjectArray();
126:
127: }
|