001: /*
002: * Copyright 2006 Luca Garulli (luca.garulli@assetdata.it)
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016:
017: package org.romaframework.aspect.persistence;
018:
019: import java.util.ArrayList;
020: import java.util.Iterator;
021:
022: import org.reverspring.annotations.SpringConstructor;
023: import org.reverspring.annotations.SpringDescribe;
024:
025: public class QueryByFilter extends Query {
026: public QueryByFilter(Class<?> iCandidateClass) {
027: this (iCandidateClass, PREDICATE_AND);
028: }
029:
030: @SpringConstructor(constructorParamsGetters={"getCandidateClass","getPredicateOperator"})
031: public QueryByFilter(Class<?> iCandidateClass,
032: String iPredicateOperator) {
033: candidateClass = iCandidateClass;
034: items = new ArrayList<QueryByFilterItem>();
035: orders = new ArrayList<QueryByFilterOrder>();
036: predicateOperator = iPredicateOperator;
037: rangeFrom = -1;
038: rangeTo = -1;
039: }
040:
041: public Class<?> getCandidateClass() {
042: return candidateClass;
043: }
044:
045: public void addItem(String iName, String iOperator, Object iValue) {
046: addItem(new QueryByFilterItem(iName, iOperator, iValue));
047: }
048:
049: public void addItem(QueryByFilterItem item) {
050: items.add(item);
051: }
052:
053: public QueryByFilterItem getItem(int iPosition) {
054: return items.get(iPosition);
055: }
056:
057: public Iterator<QueryByFilterItem> getItemsIterator() {
058: return items.iterator();
059: }
060:
061: public String getPredicateOperator() {
062: return predicateOperator;
063: }
064:
065: public void addOrder(String iName, String iOrder) {
066: addOrder(new QueryByFilterOrder(iName, iOrder));
067: }
068:
069: public void addOrder(QueryByFilterOrder iOrder) {
070: orders.add(iOrder);
071: }
072:
073: public Iterator<QueryByFilterOrder> getOrdersIterator() {
074: return orders.iterator();
075: }
076:
077: public void clear() {
078: items.clear();
079: }
080:
081: @SpringDescribe(nested=true)
082: public ArrayList<QueryByFilterItem> getItems() {
083: return items;
084: }
085:
086: public void setItems(ArrayList<QueryByFilterItem> items) {
087: this .items = items;
088: }
089:
090: private Class<?> candidateClass;
091:
092: private ArrayList<QueryByFilterItem> items;
093: private ArrayList<QueryByFilterOrder> orders;
094: private String predicateOperator;
095:
096: public static final String FIELD_LIKE = "LIKE";
097: public static final String FIELD_NOT_EQUALS = "<>";
098: public static final String FIELD_MAJOR_EQUALS = ">=";
099: public static final String FIELD_MINOR_EQUALS = "<=";
100: public static final String FIELD_MAJOR = ">";
101: public static final String FIELD_MINOR = "<";
102: public static final String FIELD_EQUALS = "=";
103: public static final String FIELD_CONTAINS = "contains";
104: public static final String FIELD_IN = "in";
105:
106: public static final String PREDICATE_AND = "and";
107: public static final String PREDICATE_OR = "or";
108: public static final String PREDICATE_NOT = "not";
109:
110: public static final String ORDER_ASC = "ASC";
111: public static final String ORDER_DESC = "DESC";
112:
113: }
|