org.kuali.rice.krad.lookup
Class LookupableImpl

java.lang.Object
  extended by org.kuali.rice.krad.uif.service.impl.ViewHelperServiceImpl
      extended by org.kuali.rice.krad.lookup.LookupableImpl
All Implemented Interfaces:
Serializable, Lookupable, ViewHelperService
Direct Known Subclasses:
AgendaLookupableHelperServiceImpl, AgendaStudentLookupableHelperServiceImpl, FiscalOfficerInfoLookupViewHelperServiceImpl, GroupLookupableImpl, PersonLookupableImpl, PropositionLookupableHelperServiceImpl, RoleLookupableImpl

public class LookupableImpl
extends ViewHelperServiceImpl
implements Lookupable

Default implementation of Lookupable

Author:
Kuali Rice Team (rice.collab@kuali.org)
See Also:
Serialized Form

Constructor Summary
LookupableImpl()
           
 
Method Summary
protected  Map<String,String> adjustCriteriaForNestedEBOs(Map<String,String> searchCriteria, boolean unbounded)
           
 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
protected  String getActionUrlHref(LookupForm lookupForm, Object dataObject, String methodToCall, List<String> pkNames)
          Generates a URL to perform a maintenance action on the given result data object
protected  Map<String,InputField> getCriteriaFieldsForValidation(LookupView lookupView, LookupForm form)
          Returns the criteria fields in a map keyed by the field property name.
protected  DataObjectAuthorizationService getDataObjectAuthorizationService()
           
 Class<?> getDataObjectClass()
          Returns the class for the data object the lookup is configured with
protected  DataObjectMetaDataService getDataObjectMetaDataService()
           
 DocumentDictionaryService getDocumentDictionaryService()
           
protected  EncryptionService getEncryptionService()
           
protected  LookupService getLookupService()
           
 void getMaintenanceActionLink(Link actionLink, Object model, String maintenanceMethodToCall)
          Invoked to build a maintenance URL for a result row
protected  String getMaintenanceDocumentTypeName()
          Returns the maintenance document type associated with the business object class or null if one does not exist.
protected  List<String> getReturnKeys(LookupView lookupView, LookupForm lookupForm, Object dataObject)
          Returns the configured return key property names or if not configured defaults to the primary keys for the data object class
protected  String getReturnUrl(LookupView lookupView, LookupForm lookupForm, Object dataObject)
          Builds the URL for returning the given data object result row
 void getReturnUrlForResults(LinkField returnLinkField, Object model)
          Invoked to build the return URL for a 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  List<?> getSearchResults(LookupForm form, Map<String,String> searchCriteria, boolean unbounded)
          Get the search results of the lookup
protected  List<?> getSearchResultsForEBO(Map<String,String> searchCriteria, boolean unbounded)
          Get the search results of an
 void initSuppressAction(LookupForm lookupForm)
          Initialize the suppressAction indicator on the LookupForm.
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> searchCriteria)
          Invoked when the clear action is requested to result the search fields to their initial default values
 void performInitialization(View view, Object model)
          Initialization of Lookupable requires that the business object class be set for the ViewHelperServiceImpl.initializeDataFieldFromDataDictionary(org.kuali.rice.krad.uif.view.View, org.kuali.rice.krad.uif.field.DataField) method
 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)
          Process the search criteria to be used with the lookup
 void setConfigurationService(ConfigurationService configurationService)
          Sets the configuration service
 void setDataObjectAuthorizationService(DataObjectAuthorizationService dataObjectAuthorizationService)
           
 void setDataObjectClass(Class<?> dataObjectClass)
          Sets the class for the data object the lookup will be provided on
 void setDataObjectMetaDataService(DataObjectMetaDataService dataObjectMetaDataService)
           
 void setDocumentDictionaryService(DocumentDictionaryService documentDictionaryService)
           
 void setEncryptionService(EncryptionService encryptionService)
           
 void setLookupService(LookupService lookupService)
           
 void setMultiValueLookupSelect(InputField selectField, Object model)
          Sets the value for the attribute field control to contain the field conversion values for the line
protected  void sortSearchResults(LookupForm form, List<?> searchResults)
          Sorts the given list of search results based on the lookup view's configured sort attributes
 boolean validateSearchParameters(LookupForm form, Map<String,String> searchCriteria)
          Invoked to perform validation on the search criteria before the search is performed
protected  void validateSearchParameterWildcardAndOperators(InputField inputField, String searchPropertyValue)
          Validates that any wildcards contained within the search value are valid wilcards and allowed for the property type for which the field is searching
 
Methods inherited from class org.kuali.rice.krad.uif.service.impl.ViewHelperServiceImpl
addCustomContainerComponents, addLine, adjustIdIfNecessary, applyAuthorizationAndPresentationLogic, applyDefaultValues, applyDefaultValuesForCollectionLine, buildClientSideStateScript, buildGrowlScript, buildInquiryLink, cleanViewAfterRender, findNestedDictionaryAttribute, getCommonContext, getConfigurationService, getDataDictionaryService, getExpressionEvaluatorService, getPreModelContext, getViewDictionaryService, initializeDataFieldFromDataDictionary, invokeMethodFinalizer, logAndThrowRuntime, performAddLineValidation, performApplyModel, performComponentApplyModel, performComponentFinalize, performComponentInitialization, performComponentLifecycle, performCustomApplyModel, performCustomFinalize, performCustomInitialization, performDeleteLineValidation, performFinalize, populateDefaultValueForField, populateViewFromRequestParameters, processAfterAddLine, processAfterDeleteLine, processAfterSaveLine, processAnyRemoteFieldsHolder, processBeforeAddLine, processBeforeSaveLine, processCollectionAddBlankLine, processCollectionAddLine, processCollectionDeleteLine, processCollectionSaveLine, processMultipleValueLookupResults, retrieveEditModesAndActionFlags, runComponentModifiers, setDataDictionaryService, setExpressionEvaluatorService, setViewContext, setViewDictionaryService, syncClientSideStateForComponent
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.kuali.rice.krad.uif.service.ViewHelperService
applyDefaultValuesForCollectionLine, buildInquiryLink, cleanViewAfterRender, getCommonContext, performApplyModel, performComponentInitialization, performComponentLifecycle, performFinalize, populateViewFromRequestParameters, processCollectionAddBlankLine, processCollectionAddLine, processCollectionDeleteLine, processCollectionSaveLine, processMultipleValueLookupResults
 

Constructor Detail

LookupableImpl

public LookupableImpl()
Method Detail

performInitialization

public void performInitialization(View view,
                                  Object model)
Initialization of Lookupable requires that the business object class be set for the ViewHelperServiceImpl.initializeDataFieldFromDataDictionary(org.kuali.rice.krad.uif.view.View, org.kuali.rice.krad.uif.field.DataField) method

Specified by:
performInitialization in interface ViewHelperService
Overrides:
performInitialization in class ViewHelperServiceImpl
Parameters:
view - - View instance that should be initialized
model - - object instance containing the view data
See Also:
ViewHelperServiceImpl.performInitialization(org.kuali.rice.krad.uif.view.View, java.lang.Object)

initSuppressAction

public void initSuppressAction(LookupForm lookupForm)
Description copied from interface: Lookupable
Initialize the suppressAction indicator on the LookupForm.

The suppress action is set to true if the user is not authorized to initiate these documents. The indicator is then used to hide irrelevant actions such as creating a new document or editing existing ones.

Specified by:
initSuppressAction in interface Lookupable
Parameters:
lookupForm - on which to initialize the suppressAction indicator
See Also:
Lookupable.initSuppressAction(org.kuali.rice.krad.web.form.LookupForm)

performSearch

public Collection<?> performSearch(LookupForm form,
                                   Map<String,String> searchCriteria,
                                   boolean bounded)
Description copied from interface: Lookupable
Invoked to carry out the lookup search based on the given map of key/value search values

Specified by:
performSearch in interface Lookupable
Parameters:
form - - lookup form instance containing the lookup data
searchCriteria - - map of criteria currently set
bounded - - indicates whether the results should be limited (if necessary) to the max search result limit configured
Returns:
the list of result objects, possibly bounded
See Also:
Lookupable.performSearch(org.kuali.rice.krad.web.form.LookupForm, java.util.Map, boolean)

getSearchResults

protected List<?> getSearchResults(LookupForm form,
                                   Map<String,String> searchCriteria,
                                   boolean unbounded)
Get the search results of the lookup

Parameters:
form - lookup form instance containing the lookup data
searchCriteria - map of criteria currently set
unbounded - 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.
Returns:
the list of result objects, possibly bounded

sortSearchResults

protected void sortSearchResults(LookupForm form,
                                 List<?> searchResults)
Sorts the given list of search results based on the lookup view's configured sort attributes

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

Parameters:
form - - lookup form instance containing view information
searchResults - - list of search results to sort

processSearchCriteria

protected Map<String,String> processSearchCriteria(LookupForm lookupForm,
                                                   Map<String,String> searchCriteria)
Process the search criteria to be used with the lookup

Processing entails primarily of the removal of unused/blank search criteria. Encrypted field values are decrypted in this process as well.

Parameters:
lookupForm - lookup form instance containing the lookup data
searchCriteria - map of criteria currently set
Returns:
map with the non blank search criteria

getSearchResultsForEBO

protected List<?> getSearchResultsForEBO(Map<String,String> searchCriteria,
                                         boolean unbounded)
Get the search results of an

Parameters:
searchCriteria - map of criteria currently set
unbounded - 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.
Returns:
list of result objects, possibly bounded

adjustCriteriaForNestedEBOs

protected Map<String,String> adjustCriteriaForNestedEBOs(Map<String,String> searchCriteria,
                                                         boolean unbounded)
                                                  throws InstantiationException,
                                                         IllegalAccessException
Parameters:
searchCriteria - map of criteria currently set
unbounded - 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.
Returns:
Throws:
InstantiationException
IllegalAccessException

performClear

public Map<String,String> performClear(LookupForm form,
                                       Map<String,String> searchCriteria)
Description copied from interface: Lookupable
Invoked when the clear action is requested to result the search fields to their initial default values

Specified by:
performClear in interface Lookupable
Parameters:
form - - lookup form instance containing the lookup data
searchCriteria - - map of criteria currently set
Returns:
map of criteria with field values reset to defaults
See Also:
Lookupable.performClear(org.kuali.rice.krad.web.form.LookupForm, java.util.Map)

validateSearchParameters

public boolean validateSearchParameters(LookupForm form,
                                        Map<String,String> searchCriteria)
Description copied from interface: Lookupable
Invoked to perform validation on the search criteria before the search is performed

Specified by:
validateSearchParameters in interface Lookupable
Parameters:
form - - lookup form instance containing the lookup data
searchCriteria - - map of criteria where key is search property name and value is search value (which can include wildcards)
Returns:
boolean true if validation was successful, false if there were errors and the search should not be performed
See Also:
Lookupable.validateSearchParameters(org.kuali.rice.krad.web.form.LookupForm, java.util.Map)

getCriteriaFieldsForValidation

protected Map<String,InputField> getCriteriaFieldsForValidation(LookupView lookupView,
                                                                LookupForm form)
Returns the criteria fields in a map keyed by the field property name.

Parameters:
lookupView -
form - lookup form instance containing the lookup data
Returns:
map of criteria fields

validateSearchParameterWildcardAndOperators

protected void validateSearchParameterWildcardAndOperators(InputField inputField,
                                                           String searchPropertyValue)
Validates that any wildcards contained within the search value are valid wilcards and allowed for the property type for which the field is searching

Parameters:
inputField - - attribute field instance for the field that is being searched
searchPropertyValue - - value given for field to search for

getReturnUrlForResults

public void getReturnUrlForResults(LinkField returnLinkField,
                                   Object model)
Description copied from interface: Lookupable
Invoked to build the return URL for a result row

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 field. If a return link cannot be constructed the field should be set to not render

Specified by:
getReturnUrlForResults in interface Lookupable
Parameters:
returnLinkField - - link field that will be used to render the return URL
model - - lookup form containing the data
See Also:
Lookupable.getReturnUrlForResults(org.kuali.rice.krad.uif.field.LinkField, java.lang.Object)

getReturnUrl

protected String getReturnUrl(LookupView lookupView,
                              LookupForm lookupForm,
                              Object dataObject)
Builds the URL for returning the given data object result row

Note return URL will only be built if a return location is specified on the LookupForm

Parameters:
lookupView - - lookup view instance containing lookup configuration
lookupForm - - lookup form instance containing the data
dataObject - - data object instance for the current line and for which the return URL is being built
Returns:
String return URL or blank if URL cannot be built

getReturnUrlParameters

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

Parameters:
lookupView - - lookup view instance containing lookup configuration
lookupForm - - lookup form instance containing the data
dataObject - - data object instance for the current line and for which the return URL is being built
Returns:
Properties instance containing request parameters for return URL

getReturnKeys

protected List<String> getReturnKeys(LookupView lookupView,
                                     LookupForm lookupForm,
                                     Object dataObject)

Returns the configured return key property names or if not configured defaults to the primary keys for the data object class

Parameters:
lookupView - - lookup view instance containing lookup configuration
lookupForm - - lookup form instance containing the data
dataObject - - data object instance
Returns:
List property names which should be passed back on the return URL

getMaintenanceActionLink

public void getMaintenanceActionLink(Link actionLink,
                                     Object model,
                                     String maintenanceMethodToCall)
Description copied from interface: Lookupable
Invoked to build a maintenance URL for a result row

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 href on the link field. If a maintenance link cannot be constructed the field should be set to not render

Specified by:
getMaintenanceActionLink in interface Lookupable
Parameters:
actionLink - - link that will be used to return the maintenance URL
model - - lookup form containing the data
maintenanceMethodToCall - - name of the method that should be invoked in the maintenance controller
See Also:
Lookupable.getMaintenanceActionLink(org.kuali.rice.krad.uif.element.Link, java.lang.Object, java.lang.String)

getActionUrlHref

protected String getActionUrlHref(LookupForm lookupForm,
                                  Object dataObject,
                                  String methodToCall,
                                  List<String> pkNames)
Generates a URL to perform a maintenance action on the given result data object

Will build a URL containing keys of the data object to invoke the given maintenance action method within the maintenance controller

Parameters:
dataObject - - data object instance for the line to build the maintenance action link for
methodToCall - - method name on the maintenance controller that should be invoked
pkNames - - list of primary key field names for the data object whose key/value pairs will be added to the maintenance link
Returns:
String URL link for the maintenance action

setMultiValueLookupSelect

public void setMultiValueLookupSelect(InputField selectField,
                                      Object model)
Sets the value for the attribute field control to contain the field conversion values for the line

Specified by:
setMultiValueLookupSelect in interface Lookupable
Parameters:
selectField - - the InputField used to mark the lookup row as selected
model - - lookup form containing the data
See Also:
setMultiValueLookupSelect(org.kuali.rice.krad.uif.field.InputField, java.lang.Object)

allowsMaintenanceNewOrCopyAction

public boolean allowsMaintenanceNewOrCopyAction()
Determines if given data object has associated maintenance document that allows new or copy maintenance actions

Returns:
boolean true if the maintenance new or copy action is allowed for the data object instance, false otherwise

allowsMaintenanceEditAction

public boolean allowsMaintenanceEditAction(Object dataObject)
Determines if given data object has associated maintenance document that allows edit maintenance actions

Returns:
boolean true if the maintenance edit action is allowed for the data object instance, false otherwise

allowsMaintenanceDeleteAction

public boolean allowsMaintenanceDeleteAction(Object dataObject)
Determines if given data object has associated maintenance document that allows delete maintenance actions.

Returns:
boolean true if the maintenance delete action is allowed for the data object instance, false otherwise

getMaintenanceDocumentTypeName

protected String getMaintenanceDocumentTypeName()
Returns the maintenance document type associated with the business object class or null if one does not exist.

Returns:
String representing the maintenance document type name

isResultReturnable

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. 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).

Parameters:
dataObject - - an object from the search result set
Returns:
true if the row is returnable and false if it is not

setDataObjectClass

public void setDataObjectClass(Class<?> dataObjectClass)
Description copied from interface: Lookupable
Sets the class for the data object the lookup will be provided on

Specified by:
setDataObjectClass in interface Lookupable
Parameters:
dataObjectClass - - data object class for lookup
See Also:
Lookupable.setDataObjectClass(java.lang.Class)

getDataObjectClass

public Class<?> getDataObjectClass()
Description copied from interface: Lookupable
Returns the class for the data object the lookup is configured with

Specified by:
getDataObjectClass in interface Lookupable
Returns:
Class data object class
See Also:
Lookupable.getDataObjectClass()

setConfigurationService

public void setConfigurationService(ConfigurationService configurationService)
Description copied from class: ViewHelperServiceImpl
Sets the configuration service

Overrides:
setConfigurationService in class ViewHelperServiceImpl

getDataObjectAuthorizationService

protected DataObjectAuthorizationService getDataObjectAuthorizationService()

setDataObjectAuthorizationService

public void setDataObjectAuthorizationService(DataObjectAuthorizationService dataObjectAuthorizationService)

getDataObjectMetaDataService

protected DataObjectMetaDataService getDataObjectMetaDataService()

setDataObjectMetaDataService

public void setDataObjectMetaDataService(DataObjectMetaDataService dataObjectMetaDataService)

getDocumentDictionaryService

public DocumentDictionaryService getDocumentDictionaryService()

setDocumentDictionaryService

public void setDocumentDictionaryService(DocumentDictionaryService documentDictionaryService)

getLookupService

protected LookupService getLookupService()

setLookupService

public void setLookupService(LookupService lookupService)

getEncryptionService

protected EncryptionService getEncryptionService()

setEncryptionService

public void setEncryptionService(EncryptionService encryptionService)


Copyright © 2005-2013 The Kuali Foundation. All Rights Reserved.