package jeffaschenk.commons.parameters; import java.util.ArrayList; import java.util.List; /** * Search Criteria Object provides an Abstraction for upstream layers * to allow the necessary Search Criteria to be specified * for a given search. * * @author Jeff Schenk */ public class SearchCriteria implements java.io.Serializable { private static final long serialVersionUID = 1L; /** * Ordered List of Search Restrictions */ private List<SearchRestriction> searchRestrictions = new ArrayList<SearchRestriction>(); /** * Ordered List of Result Ordering */ private List<SearchOrder> ordering = new ArrayList<SearchOrder>(); /** * Obtain a List of all Search Restrictions contained in this Criteria. * * @return List<SearchRestriction> Established Search Restrictions. */ public List<SearchRestriction> getSearchRestrictions() { return searchRestrictions; } /** * Obtain a List of all Search Order contained in this Criteria. * * @return List<SearchOrder> Established Search Order. */ public List<SearchOrder> getOrdering() { return ordering; } /** * Helper Method to provide Simple Search Expression * * @param name Attribute/Property/Field/Column Name * @param value Value to be applied to Search Criteria */ public void eq(String name, Object value) { this.eq(name, value, false); } /** * Helper Method to provide Simple Search Expression * * @param name Attribute/Property/Field/Column Name * @param value Value to be applied to Search Criteria * @param ignoreCase indicates if Textual String Case should be ignored or not, default is not to ignore case. */ public void eq(String name, Object value, boolean ignoreCase) { searchRestrictions.add(SearchRestriction.SearchRestriction(name, value, SearchRestriction.Operation.EQ, ignoreCase)); } /** * Helper Method to provide Simple Search Expression * * @param name Attribute/Property/Field/Column Name * @param value Value to be applied to Search Criteria */ public void ne(String name, Object value) { this.ne(name, value, false); } /** * Helper Method to provide Simple Search Expression * * @param name Attribute/Property/Field/Column Name * @param value Value to be applied to Search Criteria * @param ignoreCase indicates if Textual String Case should be ignored or not, default is not to ignore case. */ public void ne(String name, Object value, boolean ignoreCase) { searchRestrictions.add(SearchRestriction.SearchRestriction(name, value, SearchRestriction.Operation.NE, ignoreCase)); } /** * Helper Method to provide Simple Search Expression * * @param name Attribute/Property/Field/Column Name * @param value Value to be applied to Search Criteria */ public void like(String name, Object value) { this.like(name, value, false); } /** * Helper Method to provide Simple Search Expression * * @param name Attribute/Property/Field/Column Name * @param value Value to be applied to Search Criteria * @param ignoreCase indicates if Textual String Case should be ignored or not, default is not to ignore case. */ public void like(String name, Object value, boolean ignoreCase) { searchRestrictions.add(SearchRestriction.SearchRestriction(name, value, SearchRestriction.Operation.LIKE, ignoreCase)); } /** * Helper Method to provide Simple Search Expression * * @param name Attribute/Property/Field/Column Name * @param value Value to be applied to Search Criteria */ public void ilike(String name, Object value) { this.ilike(name, value, false); } /** * Helper Method to provide Simple Search Expression * * @param name Attribute/Property/Field/Column Name * @param value Value to be applied to Search Criteria * @param ignoreCase indicates if Textual String Case should be ignored or not, default is not to ignore case. */ public void ilike(String name, Object value, boolean ignoreCase) { searchRestrictions.add(SearchRestriction.SearchRestriction(name, value, SearchRestriction.Operation.ILIKE, ignoreCase)); } /** * Helper Method to provide Simple Search Expression * * @param name Attribute/Property/Field/Column Name * @param value Value to be applied to Search Criteria */ public void gt(String name, Object value) { this.gt(name, value, false); } /** * Helper Method to provide Simple Search Expression * * @param name Attribute/Property/Field/Column Name * @param value Value to be applied to Search Criteria * @param ignoreCase indicates if Textual String Case should be ignored or not, default is not to ignore case. */ public void gt(String name, Object value, boolean ignoreCase) { searchRestrictions.add(SearchRestriction.SearchRestriction(name, value, SearchRestriction.Operation.GT, ignoreCase)); } /** * Helper Method to provide Simple Search Expression * * @param name Attribute/Property/Field/Column Name * @param value Value to be applied to Search Criteria */ public void lt(String name, Object value) { this.lt(name, value, false); } /** * Helper Method to provide Simple Search Expression * * @param name Attribute/Property/Field/Column Name * @param value Value to be applied to Search Criteria * @param ignoreCase indicates if Textual String Case should be ignored or not, default is not to ignore case. */ public void lt(String name, Object value, boolean ignoreCase) { searchRestrictions.add(SearchRestriction.SearchRestriction(name, value, SearchRestriction.Operation.LT, ignoreCase)); } /** * Helper Method to provide Simple Search Expression * * @param name Attribute/Property/Field/Column Name * @param value Value to be applied to Search Criteria */ public void le(String name, Object value) { this.le(name, value, false); } /** * Helper Method to provide Simple Search Expression * * @param name Attribute/Property/Field/Column Name * @param value Value to be applied to Search Criteria * @param ignoreCase indicates if Textual String Case should be ignored or not, default is not to ignore case. */ public void le(String name, Object value, boolean ignoreCase) { searchRestrictions.add(SearchRestriction.SearchRestriction(name, value, SearchRestriction.Operation.LE, ignoreCase)); } /** * Helper Method to provide Simple Search Expression * * @param name Attribute/Property/Field/Column Name * @param value Value to be applied to Search Criteria */ public void ge(String name, Object value) { this.ge(name, value, false); } /** * Helper Method to provide Simple Search Expression * * @param name Attribute/Property/Field/Column Name * @param value Value to be applied to Search Criteria * @param ignoreCase indicates if Textual String Case should be ignored or not, default is not to ignore case. */ public void ge(String name, Object value, boolean ignoreCase) { searchRestrictions.add(SearchRestriction.SearchRestriction(name, value, SearchRestriction.Operation.GE, ignoreCase)); } /** * Helper Method to provide Simple Search Expression * * @param name Attribute/Property/Field/Column Name * @param value Value to be applied to Search Criteria * @param anotherValue the upper value for use within a between operation. */ public void between(String name, Object value, Object anotherValue) { this.between(name, value, anotherValue, false); } /** * Helper Method to provide Simple Search Expression * * @param name Attribute/Property/Field/Column Name * @param value Value to be applied to Search Criteria * @param anotherValue the upper value for use within a between operation. * @param ignoreCase indicates if Textual String Case should be ignored or not, default is not to ignore case. */ public void between(String name, Object value, Object anotherValue, boolean ignoreCase) { searchRestrictions.add(SearchRestriction.SearchRestriction(name, new Object[]{value, anotherValue}, SearchRestriction.Operation.BETWEEN, ignoreCase)); } }