public class LookupableImpl extends ViewHelperServiceImpl implements Lookupable
Lookupable
and executes a search using the
LookupService
.LookupForm
,
LookupView
,
LookupService
,
Serialized FormConstructor and Description |
---|
LookupableImpl() |
Modifier and Type | Method and Description |
---|---|
boolean |
allowsMaintenanceDeleteAction(Object dataObject)
Determines if given data object has associated maintenance document that allows delete maintenance actions.
|
boolean |
allowsMaintenanceEditAction(Object dataObject)
Determines if given data object has associated maintenance document that allows edit maintenance actions.
|
boolean |
allowsMaintenanceNewOrCopyAction()
Determines if given data object has associated maintenance document that allows new or copy maintenance actions.
|
void |
buildMaintenanceActionLink(Link actionLink,
Object model,
String maintenanceMethodToCall)
Invoked to build a maintenance URL for a result row.
|
void |
buildMultiValueSelectField(InputField selectField,
Object model)
Set the value for the input field control to contain the field conversion values for the line.
|
void |
buildReturnUrlForResult(Link returnLink,
Object model)
Invoked to build the return URL for a result row.
|
protected Collection<?> |
executeSearch(Map<String,String> adjustedSearchCriteria,
List<String> wildcardAsLiteralSearchCriteria,
boolean bounded,
Integer searchResultsLimit)
Invoked to execute the search with the given criteria and restrictions.
|
protected void |
generateLookupResultsMessages(Map<String,String> searchCriteria,
Collection<?> searchResults,
boolean bounded,
Integer searchResultsLimit)
Generates messages for the user based on the search results.
|
protected Map<String,InputField> |
getCriteriaFieldsForValidation(LookupView lookupView,
LookupForm form)
Returns the criteria fields in a map keyed by the field property name.
|
protected String |
getCriteriaLabel(LookupForm form,
String componentId)
Returns the label of the search criteria field.
|
protected DataObjectAuthorizationService |
getDataObjectAuthorizationService() |
Class<?> |
getDataObjectClass()
Returns the class for the data object the lookup is configured with.
|
DocumentDictionaryService |
getDocumentDictionaryService() |
protected EncryptionService |
getEncryptionService() |
protected LookupService |
getLookupService() |
protected String |
getMaintenanceActionUrl(LookupForm lookupForm,
Object dataObject,
String methodToCall,
List<String> pkNames)
Generates a URL to perform a maintenance action on the given result data object.
|
protected String |
getMaintenanceDocumentTypeName()
Returns the maintenance document type associated with the business object class or null if one does not exist.
|
protected Map<String,String> |
getReturnKeyValues(LookupView lookupView,
LookupForm lookupForm,
Object dataObject)
Returns a map of the configured return keys with their selected values.
|
protected String |
getReturnUrl(LookupView lookupView,
LookupForm lookupForm,
Object dataObject)
Builds the URL for returning the given data object result row.
|
protected Properties |
getReturnUrlParameters(LookupView lookupView,
LookupForm lookupForm,
Object dataObject)
Builds up a
Properties object that will be used to provide the request parameters for the
return URL link |
protected ValidCharactersConstraint |
getSearchCriteriaConstraint(Map lookupCriteria)
Indicator if the search criteria has a valid Characters Constraint.
|
protected Collection<?> |
getSearchResults(Map<String,String> searchCriteria,
List<String> wildcardAsLiteralSearchCriteria,
boolean unbounded,
Integer searchResultsLimit)
Performs a normal search using the
LookupService . |
protected List<?> |
getSearchResultsForEBO(Map<String,String> searchCriteria,
boolean unbounded)
Performs a search against an
ExternalizableBusinessObject by invoking the
module service |
protected Map<String,String> |
getTranslatedReturnKeyValues(LookupView lookupView,
LookupForm lookupForm,
Object dataObject)
Returns a map of the configured return keys translated to their corresponding field conversion with
the associated values.
|
protected List<String> |
identifyWildcardDisabledFields(LookupForm lookupForm,
Map<String,String> searchCriteria)
Determines which searchCriteria have been configured with wildcard characters disabled.
|
protected boolean |
isCriteriaRequired(Map lookupCriteria)
Indicator if the search criteria is required.
|
protected boolean |
isCriteriaSecure(Map lookupCriteria)
Indicator if the search criteria is on a secure field.
|
protected boolean |
isCriteriaWildcardDisabled(Map lookupCriteria)
Indicator if wildcards and operators are disabled on this search criteria.
|
protected boolean |
isResultReturnable(Object dataObject)
Determines whether a given data object that's returned as one of the lookup's results is considered returnable,
which means that for single-value lookups, a "return value" link may be rendered, and for multiple
value lookups, a checkbox is rendered.
|
Map<String,String> |
performClear(LookupForm form,
Map<String,String> lookupCriteria)
Invoked when the clear action is requested to reset the search fields to their initial default values.
|
Collection<?> |
performSearch(LookupForm form,
Map<String,String> searchCriteria,
boolean bounded)
Invoked to carry out the lookup search based on the given map of key/value search values.
|
protected Map<String,String> |
processSearchCriteria(LookupForm lookupForm,
Map<String,String> searchCriteria)
Filters the search criteria to be used with the lookup.
|
void |
setDataObjectAuthorizationService(DataObjectAuthorizationService dataObjectAuthorizationService) |
void |
setDataObjectClass(Class<?> dataObjectClass)
Sets the class for the data object the lookup will be provided on.
|
void |
setDocumentDictionaryService(DocumentDictionaryService documentDictionaryService) |
void |
setEncryptionService(EncryptionService encryptionService) |
void |
setLookupService(LookupService lookupService) |
protected void |
sortSearchResults(LookupForm form,
List<?> searchResults)
Sorts the given list of search results based on the lookup view's configured sort attributes.
|
protected void |
validateSearchParameterConstraint(LookupForm form,
String propertyName,
Map<String,Object> lookupCriteriaAttributes,
String searchPropertyValue,
ValidCharactersConstraint validCharactersConstraint)
Validates that the searchPropertyValue is a valid value based on any constraint that may exist for the property
|
protected boolean |
validateSearchParameters(LookupForm form,
Map<String,String> searchCriteria)
Invoked to perform validation on the search criteria before the search is performed.
|
protected void |
validateSearchParameterWildcardAndOperators(LookupForm form,
String propertyName,
Map<String,Object> lookupCriteriaAttributes,
String searchPropertyValue)
Validates that any wildcards contained within the search value are valid wildcards and allowed for the
property type for which the field is searching.
|
addCustomContainerComponents, addLine, applyDefaultValues, applyDefaultValuesForCollectionLine, buildGrowlScript, buildInquiryLink, containsDuplicateLine, extractNewValuesAndAssign, extractSingleValue, filterByReturnedFieldConversions, getConfigurationService, getDataDictionaryService, getDataObjectService, getDefaultValueForField, getExpressionEvaluatorFactory, getLegacyDataAdapter, getViewDictionaryService, isDuplicateLine, linkAddedLine, logAndThrowRuntime, performAddLineValidation, performCustomApplyModel, performCustomFinalize, performCustomInitialization, performCustomViewFinalize, performCustomViewInitialization, performDeleteLineValidation, populateDefaultValueForField, populateViewFromRequestParameters, processAfterAddLine, processAfterDeleteLine, processAfterEditLine, processAfterSaveLine, processAndAddLineObject, processBeforeAddLine, processBeforeEditLine, processBeforeSaveLine, processCollectionAddBlankLine, processCollectionAddLine, processCollectionCloseEditLineDialog, processCollectionDeleteLine, processCollectionEditLine, processCollectionRetrieveEditLineDialog, processCollectionSaveLine, processMultipleValueLookupResults, refreshReference, refreshReferences, retrieveEditModesAndActionFlags, setConfigurationService, setDataDictionaryService, setDataObjectService, setElementContext, setExpressionEvaluatorFactory, setLegacyDataAdapter, setViewContext, setViewDictionaryService
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
addCustomContainerComponents, applyDefaultValues, applyDefaultValuesForCollectionLine, buildGrowlScript, buildInquiryLink, getDefaultValueForField, getExpressionEvaluatorFactory, performCustomApplyModel, performCustomFinalize, performCustomInitialization, performCustomViewFinalize, performCustomViewInitialization, populateDefaultValueForField, populateViewFromRequestParameters, processAfterAddLine, processAfterDeleteLine, processAfterEditLine, processAfterSaveLine, processAndAddLineObject, processBeforeAddLine, processBeforeEditLine, processBeforeSaveLine, processCollectionAddBlankLine, processCollectionAddLine, processCollectionCloseEditLineDialog, processCollectionDeleteLine, processCollectionEditLine, processCollectionRetrieveEditLineDialog, processCollectionSaveLine, processMultipleValueLookupResults, refreshReference, refreshReferences, retrieveEditModesAndActionFlags, setElementContext, setViewContext
public LookupableImpl()
public Collection<?> performSearch(LookupForm form, Map<String,String> searchCriteria, boolean bounded)
performSearch
in interface Lookupable
form
- lookup form instance containing the lookup datasearchCriteria
- map of criteria currently setbounded
- indicates whether the results should be limited (if necessary) to the max search
result limit configuredCollectionIncomplete
protected Collection<?> executeSearch(Map<String,String> adjustedSearchCriteria, List<String> wildcardAsLiteralSearchCriteria, boolean bounded, Integer searchResultsLimit)
adjustedSearchCriteria
- map of criteria that has been adjusted (encyrption, ebos, etc)wildcardAsLiteralSearchCriteria
- map of criteria to treat as literals (wildcards disabled)bounded
- indicates whether the search should be boundedsearchResultsLimit
- for bounded searches, the result limitprotected Map<String,String> processSearchCriteria(LookupForm lookupForm, Map<String,String> searchCriteria)
Processing entails primarily of the removal of filtered and unused/blank search criteria. Encrypted field values are decrypted, and date range fields are combined into a single criteria entry.
In special cases additional non-valid criteria may be included. E.g. with the KIM User Control as a criteria the principal name may be passed so that it is displayed on the control. The filtering removes these values based on the viewPostMetadata. When calling the search directly (methodToCall=search) the viewPostMetadata is not set before filtering therefore non-valid criteria are not supported in these cases.
lookupForm
- lookup form instance containing the lookup datasearchCriteria
- map of criteria to processprotected List<String> identifyWildcardDisabledFields(LookupForm lookupForm, Map<String,String> searchCriteria)
lookupForm
- form used to collect search criteriasearchCriteria
- Map of property names and values to use as search parametersprotected boolean validateSearchParameters(LookupForm form, Map<String,String> searchCriteria)
form
- lookup form instance containing the lookup datasearchCriteria
- map of criteria where key is search property name and value is
search value (which can include wildcards)protected void validateSearchParameterWildcardAndOperators(LookupForm form, String propertyName, Map<String,Object> lookupCriteriaAttributes, String searchPropertyValue)
form
- lookup form instance containing the lookup datapropertyName
- property name of the search criteria field to be validatedsearchPropertyValue
- value given for field to search forprotected void validateSearchParameterConstraint(LookupForm form, String propertyName, Map<String,Object> lookupCriteriaAttributes, String searchPropertyValue, ValidCharactersConstraint validCharactersConstraint)
form
- lookup form instance containing the lookup datapropertyName
- property name of the search criteria field to be validatedlookupCriteriaAttributes
- attributes for the lookup criteriasearchPropertyValue
- value given for field to search forvalidCharactersConstraint
- constraint on the lookup criteria fieldprotected String getCriteriaLabel(LookupForm form, String componentId)
form
- lookup form instance containing the lookup datacomponentId
- component id of the search criteria fieldprotected boolean isCriteriaWildcardDisabled(Map lookupCriteria)
lookupCriteria
- the viewPostMetadata with the attributes of the search criteria fieldprotected boolean isCriteriaRequired(Map lookupCriteria)
lookupCriteria
- the viewPostMetadata with the attributes of the search criteria fieldprotected boolean isCriteriaSecure(Map lookupCriteria)
lookupCriteria
- the viewPostMetadata with the attributes of the search criteria fieldprotected ValidCharactersConstraint getSearchCriteriaConstraint(Map lookupCriteria)
lookupCriteria
- the viewPostMetadata with the attributes of the search criteria fieldprotected void generateLookupResultsMessages(Map<String,String> searchCriteria, Collection<?> searchResults, boolean bounded, Integer searchResultsLimit)
Messages are generated for the number of results, if the results exceed the result limit, and if the search was done using the primary keys for the data object.
searchCriteria
- map of search criteria that was used for the searchsearchResults
- list of result data objects from the searchbounded
- whether the search was boundedsearchResultsLimit
- maximum number of search results to returnprotected void sortSearchResults(LookupForm form, List<?> searchResults)
First if the posted view exists we grab the sort attributes from it. This will take into account expressions that might have been configured on the sort attributes. If the posted view does not exist (because we did a search from a get request or form session storage is off), we get the sort attributes from the view that we will be rendered (and was initialized before controller call). However, expressions will not be evaluated yet, thus if expressions were configured we don't know the results and can not sort the list
form
- lookup form instance containing view informationsearchResults
- list of search results to sortprotected Collection<?> getSearchResults(Map<String,String> searchCriteria, List<String> wildcardAsLiteralSearchCriteria, boolean unbounded, Integer searchResultsLimit)
LookupService
.searchCriteria
- map of criteria currently setwildcardAsLiteralSearchCriteria
- list of property names which have wildcard characters disabledunbounded
- indicates whether the complete result should be returned. When set to false the result is
limited (if necessary) to the max search result limit configured.searchResultsLimit
- result set limitprotected List<?> getSearchResultsForEBO(Map<String,String> searchCriteria, boolean unbounded)
ExternalizableBusinessObject
by invoking the
module servicesearchCriteria
- map of criteria currently setunbounded
- indicates whether the complete result should be returned. When set to false the result is
limited (if necessary) to the max search result limit configured.public Map<String,String> performClear(LookupForm form, Map<String,String> lookupCriteria)
performClear
in interface Lookupable
form
- lookup form instance containing the lookup datalookupCriteria
- map of criteria currently setpublic void buildReturnUrlForResult(Link returnLink, Object model)
Based on the line contained in the field context, the URL for returning the role is constructed and set as the href for the link. If a return link cannot be constructed the link should be set to not render
buildReturnUrlForResult
in interface Lookupable
returnLink
- link that will be used to render the return URLmodel
- lookup form containing the dataprotected boolean isResultReturnable(Object dataObject)
Note that this can be part of an authorization mechanism, but not the complete authorization mechanism. The component that invoked the lookup/ lookup caller (e.g. document, nesting lookup, etc.) needs to check that the object that was passed to it was returnable as well because there are ways around this method (e.g. crafting a custom return URL).
dataObject
- an object from the search result setprotected String getReturnUrl(LookupView lookupView, LookupForm lookupForm, Object dataObject)
Note return URL will only be built if a return location is specified on the lookup form
lookupView
- lookup view instance containing lookup configurationlookupForm
- lookup form instance containing the datadataObject
- data object instance for the current line and for which the return URL is being builtprotected Properties getReturnUrlParameters(LookupView lookupView, LookupForm lookupForm, Object dataObject)
Properties
object that will be used to provide the request parameters for the
return URL linklookupView
- lookup view instance containing lookup configurationlookupForm
- lookup form instance containing the datadataObject
- data object instance for the current line and for which the return URL is being builtprotected Map<String,String> getTranslatedReturnKeyValues(LookupView lookupView, LookupForm lookupForm, Object dataObject)
lookupView
- lookup view instance containing lookup configurationlookupForm
- lookup form instance containing the datadataObject
- data object instanceprotected Map<String,String> getReturnKeyValues(LookupView lookupView, LookupForm lookupForm, Object dataObject)
lookupView
- lookup view instance containing lookup configurationlookupForm
- lookup form instance containing the datadataObject
- data object instancepublic void buildMaintenanceActionLink(Link actionLink, Object model, String maintenanceMethodToCall)
Based on the line contained in the field context and the given maintenance method that should be called a URL is constructed and set as the action on the action link. If a maintenance link cannot be constructed the action link should be set to not render
buildMaintenanceActionLink
in interface Lookupable
actionLink
- link that will be used to return the maintenance URLmodel
- lookup form containing the datamaintenanceMethodToCall
- name of the method that should be invoked in the maintenance controllerprotected String getMaintenanceActionUrl(LookupForm lookupForm, Object dataObject, String methodToCall, List<String> pkNames)
Will build a URL containing keys of the data object to invoke the given maintenance action method within the maintenance controller
lookupForm
- lookup formdataObject
- data object instance for the line to build the maintenance action link formethodToCall
- method name on the maintenance controller that should be invokedpkNames
- list of primary key field names for the data object whose key/value pairs will be added to
the maintenance linkpublic void buildMultiValueSelectField(InputField selectField, Object model)
Creates and populate the value of the input field control. This value is built according to
LookupForm.getFieldConversions()
and allows for client side population of the returned fields without
having to do an additional server call.
buildMultiValueSelectField
in interface Lookupable
selectField
- the InputField used to mark the lookup row as selectedmodel
- lookup form containing the model datapublic boolean allowsMaintenanceNewOrCopyAction()
allowsMaintenanceNewOrCopyAction
in interface Lookupable
public boolean allowsMaintenanceEditAction(Object dataObject)
allowsMaintenanceEditAction
in interface Lookupable
dataObject
- data objectpublic boolean allowsMaintenanceDeleteAction(Object dataObject)
allowsMaintenanceDeleteAction
in interface Lookupable
dataObject
- data objectprotected String getMaintenanceDocumentTypeName()
protected Map<String,InputField> getCriteriaFieldsForValidation(LookupView lookupView, LookupForm form)
lookupView
- lookup view instance to pull criteria fields fromform
- lookup form instance containing the lookup datapublic Class<?> getDataObjectClass()
getDataObjectClass
in interface Lookupable
public void setDataObjectClass(Class<?> dataObjectClass)
setDataObjectClass
in interface Lookupable
dataObjectClass
- - data object class for lookupprotected DataObjectAuthorizationService getDataObjectAuthorizationService()
public void setDataObjectAuthorizationService(DataObjectAuthorizationService dataObjectAuthorizationService)
public DocumentDictionaryService getDocumentDictionaryService()
public void setDocumentDictionaryService(DocumentDictionaryService documentDictionaryService)
protected LookupService getLookupService()
public void setLookupService(LookupService lookupService)
protected EncryptionService getEncryptionService()
public void setEncryptionService(EncryptionService encryptionService)
Copyright © 2005–2015 The Kuali Foundation. All rights reserved.