Package org.kuali.rice.krad.service.impl
Class LookupCriteriaGeneratorImpl
java.lang.Object
org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl
- All Implemented Interfaces:
org.kuali.rice.krad.service.impl.LookupCriteriaGenerator
public class LookupCriteriaGeneratorImpl
extends Object
implements org.kuali.rice.krad.service.impl.LookupCriteriaGenerator
Base LookupCriteriaGenerator into which logic common to both OJB and JPA for criteria construction
has been extracted. Subclasses implement backend-specific criteria translation/generation details.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddAnd(org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria2) protected voidaddAndCriteria(String propertyName, String propertyValue, Class propertyType, boolean caseInsensitive, org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria) protected voidaddBetween(org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, String propertyName, Object value1, Object value2) protected voidaddBetween(org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, String propertyName, String value1, String value2, boolean caseInsensitive) protected voidaddBetweenExclusiveUpper(org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, String propertyName, Object value1, Object value2) protected voidaddCriteria(String propertyName, String propertyValue, Class<?> propertyType, boolean caseInsensitive, boolean treatWildcardsAndOperatorsAsLiteral, org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria) Adds to the criteria object based on the property type and any query characters given.protected booleanaddCriteriaForPropertyValues(Object example, String propertyName, boolean caseInsensitive, boolean treatWildcardsAndOperatorsAsLiteral, org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, Map formProps, String... searchValues) Adds a criteria for the property for each search value, handling search value caseprotected voidaddDateRangeCriteria(String propertyName, String propertyValue, boolean treatWildcardsAndOperatorsAsLiteral, org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria) Adds to the criteria object based on query characters givenprotected voidaddEqual(org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, String propertyName, Object searchValue) protected voidaddEqual(org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, String propertyName, String searchValue, boolean caseInsensitive) protected voidaddEqualNumeric(org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, String propertyName, Class<?> propertyClass, String searchValue) protected voidaddEqualTemporal(org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, String propertyName, String searchValue) protected voidaddEqualToBoolean(org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, String propertyName, String propertyValue) protected voidaddGreaterThan(org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, String propertyName, Object propertyValue) protected voidaddGreaterThan(org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, String propertyName, String propertyValue, boolean caseInsensitive) protected voidaddGreaterThanOrEqual(org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, String propertyName, Object propertyValue) protected voidaddGreaterThanOrEqual(org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, String propertyName, String propertyValue, boolean caseInsensitive) protected voidaddInactivateableFromToActiveCriteria(Object example, String activeSearchValue, org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, Map<String, String> searchValues) Translates criteria for active status to criteria on the active from and to fieldsprotected voidaddInactivateableFromToCurrentCriteria(Object example, String currentSearchValue, org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, Map searchValues) protected voidaddIsNotNull(org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, String propertyName) protected voidaddIsNull(org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, String propertyName) protected voidaddLessThan(org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, String propertyName, Object propertyValue) protected voidaddLessThan(org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, String propertyName, String propertyValue, boolean caseInsensitive) protected voidaddLessThanOrEqual(org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, String propertyName, Object propertyValue) protected voidaddLessThanOrEqual(org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, String propertyName, String propertyValue, boolean caseInsensitive) protected voidaddLike(org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, String propertyName, String propertyValue) protected voidaddLike(org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, String propertyName, String propertyValue, boolean caseInsensitive) protected voidaddLogicalOperatorCriteria(String propertyName, String propertyValue, Class<?> propertyType, boolean caseInsensitive, org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, String splitValue) Builds a sub criteria object joined with an 'AND' or 'OR' (depending on splitValue) using the split values of propertyValue.protected voidaddNotCriteria(String propertyName, String propertyValue, Class propertyType, boolean caseInsensitive, org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria) protected voidaddNotLike(org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, String propertyName, String propertyValue) protected voidaddNotLike(org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, String propertyName, String propertyValue, boolean caseInsensitive) protected voidaddNumericRangeCriteria(String propertyName, String propertyValue, Class<?> propertyType, boolean treatWildcardsAndOperatorsAsLiteral, org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria) Adds to the criteria object based on query characters givenprotected voidaddOr(org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria2) protected voidaddOrCriteria(String propertyName, String propertyValue, Class propertyType, boolean caseInsensitive, org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria) protected voidaddStringRangeCriteria(String propertyName, String propertyValue, boolean caseInsensitive, org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria) Adds to the criteria object based on query characters givenprotected NumbercleanNumeric(String value, Class<?> propertyType) booleancreateCriteria(Object example, String searchValue, String propertyName, boolean caseInsensitive, boolean treatWildcardsAndOperatorsAsLiteral, org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria) protected booleancreateCriteria(Object example, String searchValue, String propertyName, boolean caseInsensitive, boolean treatWildcardsAndOperatorsAsLiteral, org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, Map<String, String> searchValues) Deprecated.protected booleancreateCriteria(Object example, String searchValue, String propertyName, org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria) org.kuali.rice.core.api.criteria.QueryByCriteria.BuildercreateObjectCriteriaFromMap(Object example, Map<String, String> formProps) protected booleandetermineIfAttributeSearchShouldBeCaseInsensitive(Class<?> type, String propertyName) Returns whether we should perform comparisons in a case-insensitive manner for this attribute.protected booleandoesLookupFieldTreatWildcardsAndOperatorsAsLiteral(Class<?> type, String fieldName) Deprecated.org.kuali.rice.core.api.criteria.QueryByCriteria.BuildergenerateCriteria(Class<?> type, Map<String, String> formProps, boolean usePrimaryKeysOnly) Deprecated.org.kuali.rice.core.api.criteria.QueryByCriteria.BuildergenerateCriteria(Class<?> type, Map<String, String> formProps, List<String> wildcardAsLiteralPropertyNames, boolean usePrimaryKeysOnly) protected org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.PredicatesDeprecated.protected org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.PredicatesgetCollectionCriteriaFromMap(Class<?> type, Object example, Map<String, String> formProps, List<String> wildcardAsLiteralPropertyNames) Adds a criteria Predicate for each property contained in the map.protected org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.PredicatesgetCollectionCriteriaFromMapUsingPrimaryKeysOnly(Class<?> type, Object dataObject, Map<String, String> formProps) Deprecated.protected org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.PredicatesgetCollectionCriteriaFromMapUsingPrimaryKeysOnly(Class<?> type, Object dataObject, Map<String, String> formProps, List<String> wildcardAsLiteralPropertyNames) org.kuali.rice.krad.service.DataDictionaryServiceorg.kuali.rice.krad.data.DataObjectServiceorg.kuali.rice.core.api.datetime.DateTimeServiceorg.kuali.rice.core.framework.persistence.platform.DatabasePlatformprotected Class<?> getPropertyType(Object example, String propertyName) protected ObjectinstantiateLookupDataObject(Class<?> type) Instantiates a new instance of the data object for the given type.protected booleanisWriteable(Object o, String p) Return whether or not an attribute is writeable.listPrimaryKeyFieldNames(Class<?> type) protected Dateprotected DateparseDateUpperBound(String dateString) protected StringparsePropertyName(org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, String fullyQualifiedPropertyName) voidsetDataDictionaryService(org.kuali.rice.krad.service.DataDictionaryService dataDictionaryService) voidsetDataObjectService(org.kuali.rice.krad.data.DataObjectService dataObjectService) voidsetDateTimeService(org.kuali.rice.core.api.datetime.DateTimeService dateTimeService) voidsetDbPlatform(org.kuali.rice.core.framework.persistence.platform.DatabasePlatform dbPlatform) protected StringuppercasePropertyName(String propertyName) Should return a string which is a server-side identifier for the uppercased property, that is, this is not the uppercased version of the property name, but rather the property value uppercased this is typically a builtin SQL function
-
Constructor Details
-
LookupCriteriaGeneratorImpl
public LookupCriteriaGeneratorImpl()
-
-
Method Details
-
getDateTimeService
public org.kuali.rice.core.api.datetime.DateTimeService getDateTimeService() -
setDateTimeService
public void setDateTimeService(org.kuali.rice.core.api.datetime.DateTimeService dateTimeService) -
getDataDictionaryService
public org.kuali.rice.krad.service.DataDictionaryService getDataDictionaryService() -
setDataDictionaryService
public void setDataDictionaryService(org.kuali.rice.krad.service.DataDictionaryService dataDictionaryService) -
getDbPlatform
public org.kuali.rice.core.framework.persistence.platform.DatabasePlatform getDbPlatform() -
setDbPlatform
public void setDbPlatform(org.kuali.rice.core.framework.persistence.platform.DatabasePlatform dbPlatform) -
getDataObjectService
public org.kuali.rice.krad.data.DataObjectService getDataObjectService() -
setDataObjectService
public void setDataObjectService(org.kuali.rice.krad.data.DataObjectService dataObjectService) -
generateCriteria
@Deprecated public org.kuali.rice.core.api.criteria.QueryByCriteria.Builder generateCriteria(Class<?> type, Map<String, String> formProps, boolean usePrimaryKeysOnly) Deprecated.- Specified by:
generateCriteriain interfaceorg.kuali.rice.krad.service.impl.LookupCriteriaGenerator
-
generateCriteria
public org.kuali.rice.core.api.criteria.QueryByCriteria.Builder generateCriteria(Class<?> type, Map<String, String> formProps, List<String> wildcardAsLiteralPropertyNames, boolean usePrimaryKeysOnly) - Specified by:
generateCriteriain interfaceorg.kuali.rice.krad.service.impl.LookupCriteriaGenerator
-
createObjectCriteriaFromMap
public org.kuali.rice.core.api.criteria.QueryByCriteria.Builder createObjectCriteriaFromMap(Object example, Map<String, String> formProps) - Specified by:
createObjectCriteriaFromMapin interfaceorg.kuali.rice.krad.service.impl.LookupCriteriaGenerator
-
instantiateLookupDataObject
Instantiates a new instance of the data object for the given type.- Parameters:
type- the type of the data object to pass, must not be null- Returns:
- new instance of the given data object
-
createCriteria
-
createCriteria
-
createCriteria
@Deprecated protected boolean createCriteria(Object example, String searchValue, String propertyName, boolean caseInsensitive, boolean treatWildcardsAndOperatorsAsLiteral, org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, Map<String, String> searchValues) Deprecated. -
getCollectionCriteriaFromMap
@Deprecated protected org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates getCollectionCriteriaFromMap(Class<?> type, Object example, Map<String, String> formProps) Deprecated.please usegetCollectionCriteriaFromMap(Class, Object, java.util.Map, java.util.List)insteadAdds a criteria Predicate for each property contained in the map.- Parameters:
type- class name of the Data Object being looked upexample- sample object instance of the class typeformProps- Map of search criteria properties- Returns:
- Predicates built from criteria map
-
getCollectionCriteriaFromMap
protected org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates getCollectionCriteriaFromMap(Class<?> type, Object example, Map<String, String> formProps, List<String> wildcardAsLiteralPropertyNames) Adds a criteria Predicate for each property contained in the map.Checks for case sensitivity for the search parameter, and whether or not wildcard characters are allowed. This implementation further separates the UIFramework from the LookupService and should be used in place of the deprecated method.
- Parameters:
type- class name of the Data Object being looked upexample- sample object instance of the class typeformProps- Map of search criteria propertieswildcardAsLiteralPropertyNames- List of search criteria properties with wildcard characters disabled.- Returns:
- Predicates built from criteria map
-
determineIfAttributeSearchShouldBeCaseInsensitive
protected boolean determineIfAttributeSearchShouldBeCaseInsensitive(Class<?> type, String propertyName) Returns whether we should perform comparisons in a case-insensitive manner for this attribute. By default comparisons are case-INsensitive, however, if the attribute is marked as "forceUppercase" in the DD, then the comparison is case-SENSITIVE. NOTE: The assumption is that for forceUppercase-d attributes, the DB data is already uppercased, so we can perform a case-sensitive search- Parameters:
type- the type of the data objectpropertyName- the business object property- Returns:
- whether we should perform comparisons in a case-insensitive manner for this attribute
-
addCriteriaForPropertyValues
protected boolean addCriteriaForPropertyValues(Object example, String propertyName, boolean caseInsensitive, boolean treatWildcardsAndOperatorsAsLiteral, org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, Map formProps, String... searchValues) Adds a criteria for the property for each search value, handling search value case- Parameters:
example- the example search objectpropertyName- the object propertycaseInsensitive- case sensitivity determinationtreatWildcardsAndOperatorsAsLiteral- whether to treat wildcards and operators as literalcriteria- the criteria we are modifyingformProps- the search form propertiessearchValues- the property search values- Returns:
- whether all criteria were successfully added, false if any were invalid and loop was short-circuited
-
getCollectionCriteriaFromMapUsingPrimaryKeysOnly
@Deprecated protected org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates getCollectionCriteriaFromMapUsingPrimaryKeysOnly(Class<?> type, Object dataObject, Map<String, String> formProps) Deprecated. -
getCollectionCriteriaFromMapUsingPrimaryKeysOnly
-
doesLookupFieldTreatWildcardsAndOperatorsAsLiteral
@Deprecated protected boolean doesLookupFieldTreatWildcardsAndOperatorsAsLiteral(Class<?> type, String fieldName) Deprecated. -
cleanNumeric
- Throws:
NumberFormatException- ifvalueis not a valid representation of aNumber.
-
addOrCriteria
-
addAndCriteria
-
addCriteria
protected void addCriteria(String propertyName, String propertyValue, Class<?> propertyType, boolean caseInsensitive, boolean treatWildcardsAndOperatorsAsLiteral, org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria) Adds to the criteria object based on the property type and any query characters given. -
addNotCriteria
-
addDateRangeCriteria
protected void addDateRangeCriteria(String propertyName, String propertyValue, boolean treatWildcardsAndOperatorsAsLiteral, org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria) Adds to the criteria object based on query characters given -
addNumericRangeCriteria
protected void addNumericRangeCriteria(String propertyName, String propertyValue, Class<?> propertyType, boolean treatWildcardsAndOperatorsAsLiteral, org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria) Adds to the criteria object based on query characters given -
addStringRangeCriteria
protected void addStringRangeCriteria(String propertyName, String propertyValue, boolean caseInsensitive, org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria) Adds to the criteria object based on query characters given -
addInactivateableFromToActiveCriteria
protected void addInactivateableFromToActiveCriteria(Object example, String activeSearchValue, org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, Map<String, String> searchValues) Translates criteria for active status to criteria on the active from and to fields- Parameters:
example- - business object being queried onactiveSearchValue- - value for the active search field, should convert to booleancriteria- - Criteria object being builtsearchValues- - Map containing all search keys and values
-
addLogicalOperatorCriteria
protected void addLogicalOperatorCriteria(String propertyName, String propertyValue, Class<?> propertyType, boolean caseInsensitive, org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, String splitValue) Builds a sub criteria object joined with an 'AND' or 'OR' (depending on splitValue) using the split values of propertyValue. Then joins back the sub criteria to the main criteria using an 'AND'. -
parseDate
- Throws:
ParseException
-
parseDateUpperBound
- Throws:
ParseException
-
listPrimaryKeyFieldNames
-
getPropertyType
-
isWriteable
Return whether or not an attribute is writeable. This method is aware that that Collections may be involved and handles them consistently with the way in which OJB handles specifying the attributes of elements of a Collection.- Parameters:
o-p-- Returns:
- Throws:
IllegalArgumentException
-
addEqualNumeric
-
addEqualTemporal
-
addEqual
-
addIsNull
protected void addIsNull(org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, String propertyName) -
addIsNotNull
protected void addIsNotNull(org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, String propertyName) -
addLike
-
addNotLike
-
addEqualToBoolean
-
uppercasePropertyName
Should return a string which is a server-side identifier for the uppercased property, that is, this is not the uppercased version of the property name, but rather the property value uppercased this is typically a builtin SQL function- Parameters:
propertyName- the property/column name- Returns:
- expression that represents the uppercased value of the property
-
addAnd
protected void addAnd(org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria2) -
addLessThan
-
addLessThanOrEqual
-
addGreaterThan
-
addGreaterThanOrEqual
-
addBetween
-
addBetweenExclusiveUpper
-
addOr
protected void addOr(org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria, org.kuali.rice.krad.service.impl.LookupCriteriaGeneratorImpl.Predicates criteria2) -
addEqual
-
addGreaterThan
-
addGreaterThanOrEqual
-
addLessThan
-
addLessThanOrEqual
-
addLike
-
addBetween
-
addNotLike
-
parsePropertyName
-
addInactivateableFromToCurrentCriteria
-
getCollectionCriteriaFromMap(Class, Object, java.util.Map, java.util.List)instead