org.kuali.rice.krad.workflow.attribute
Class DataDictionarySearchableAttribute

java.lang.Object
  extended by org.kuali.rice.krad.workflow.attribute.DataDictionarySearchableAttribute
All Implemented Interfaces:
SearchableAttribute

public class DataDictionarySearchableAttribute
extends Object
implements SearchableAttribute


Field Summary
static String DATA_TYPE_BOOLEAN
           
 
Constructor Summary
DataDictionarySearchableAttribute()
           
 
Method Summary
protected  List<Row> createFieldRowsForBusinessObject(Class<? extends BusinessObject> businessObjectClass)
          Creates a list of search fields, one for each primary key of the maintained business object
protected  List<Row> createFieldRowsForWorkflowAttributes(WorkflowAttributes attrs)
           
 List<DocumentAttribute> extractDocumentAttributes(ExtensionDefinition extensionDefinition, DocumentWithContent documentWithContent)
          Extracts and returns document attributes for the given document in order to allow indexing of those values for association with the document and use in document searches.
protected  List<DocumentAttribute> findAllDocumentAttributesForGlobalBusinessObject(GlobalBusinessObject globalBO)
           
protected  DocumentAttribute generateSearchableAttributeFromChange(PersistableBusinessObject changeToPersist)
           
 String generateSearchContent(ExtensionDefinition extensionDefinition, String documentTypeName, WorkflowAttributeDefinition attributeDefinition)
          Allows for generation of custom XML for this searchable attribute.
protected  Class<? extends BusinessObject> getBusinessObjectClass(String documentTypeName)
          Returns the class of the object being maintained by the given maintenance document type name
protected  Class<? extends Maintainable> getMaintainableClass(String documentTypeName)
          Returns the maintainable of the object being maintained by the given maintenance document type name
 List<RemotableAttributeField> getSearchFields(ExtensionDefinition extensionDefinition, String documentTypeName)
          Returns a list of RemotableAttributeField objects which define which searchable attribute criteria fields should be included in the criteria section of the document search user interface for this searchable attribute.
protected  List<Row> getSearchingRows(String documentTypeName)
          Produces legacy KNS rows to use for search attributes.
protected  List<DocumentAttribute> parsePrimaryKeyValuesFromDocument(Class<? extends BusinessObject> businessObjectClass, MaintenanceDocument document)
           
protected  DocumentAttribute parseSearchableAttributeValueForPrimaryKey(String propertyName, Class<? extends BusinessObject> businessObjectClass, MaintenanceDocument document)
          Creates a searchable attribute value for the given property name out of the document XML
protected  GlobalBusinessObject retrieveGlobalBusinessObject(String documentNumber, Class<? extends BusinessObject> businessObjectClass)
           
protected  MaintenanceDocumentEntry retrieveMaintenanceDocumentEntry(String documentTypeName)
          Retrieves the maintenance document entry for the given document type name
protected  void retrieveValidationErrorsFromGlobalVariables(List<RemotableAttributeError> validationErrors)
          Retrieves validation errors from GlobalVariables MessageMap and appends to the given list of RemotableAttributeError
 List<RemotableAttributeError> validateDocumentAttributeCriteria(ExtensionDefinition extensionDefinition, DocumentSearchCriteria documentSearchCriteria)
          Performs custom validation of document attribute values that come from this searchable attribute whenever a document search is performed against a document type which uses this searchable attribute.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DATA_TYPE_BOOLEAN

public static final String DATA_TYPE_BOOLEAN
See Also:
Constant Field Values
Constructor Detail

DataDictionarySearchableAttribute

public DataDictionarySearchableAttribute()
Method Detail

generateSearchContent

public String generateSearchContent(ExtensionDefinition extensionDefinition,
                                    String documentTypeName,
                                    WorkflowAttributeDefinition attributeDefinition)
Description copied from interface: SearchableAttribute
Allows for generation of custom XML for this searchable attribute. The trigger for invocation of custom XML generation happens via the workflow API whenever a document action is taken and a request is submitted to update document XML based on searchable attribute definitions (see DocumentContentUpdate). This XML is ultimately included as part of the document's content.

It is intended that this XML can be used by the extractDocumentAttributes method in order to pull values out for indexing, though this method is free to use any source available to it for extracting data for indexing alongside a document.

A null or blank value may be returned from this method to indicate that no XML was generated.

Specified by:
generateSearchContent in interface SearchableAttribute
Parameters:
extensionDefinition - the extension definition which was used to locate and load this searchable attribute implementation
documentTypeName - the name of the document type for which this method is being invoked
attributeDefinition - contains parameters and properties that can be used to inform generation of the XML, these are supplied by the user of the workflow API when the document's searchable XML content is requested to be updated
Returns:
a String containing valid XML that should be included in the searchable attribute XML section of the document's XML content

extractDocumentAttributes

public List<DocumentAttribute> extractDocumentAttributes(ExtensionDefinition extensionDefinition,
                                                         DocumentWithContent documentWithContent)
Description copied from interface: SearchableAttribute
Extracts and returns document attributes for the given document in order to allow indexing of those values for association with the document and use in document searches. The document and it's XML content is passed to this method as that is a common source of data for indexing purposes, though implementations are free to pull data for indexing from any readily accessible source.

There are a finite set of DocumentAttribute implementations which can be returned and interpreted correctly. Client application's should not create custom extensions of the DocumentAttribute abstract class but should preferably use the DocumentAttributeFactory to construct strongly-typed document attribute instances for indexing.

Specified by:
extractDocumentAttributes in interface SearchableAttribute
Parameters:
extensionDefinition - the extension definition which was used to locate and load this searchable attribute implementation
documentWithContent - the workflow document and it's XML content
Returns:
a list of document attribute values that should be indexed for the given document, or a null or empty list if no attributes should be indexed
See Also:
DocumentAttributeFactory

getSearchFields

public List<RemotableAttributeField> getSearchFields(ExtensionDefinition extensionDefinition,
                                                     String documentTypeName)
Description copied from interface: SearchableAttribute
Returns a list of RemotableAttributeField objects which define which searchable attribute criteria fields should be included in the criteria section of the document search user interface for this searchable attribute.

Specified by:
getSearchFields in interface SearchableAttribute
Parameters:
extensionDefinition - the extension definition which was used to locate and load this searchable attribute implementation
documentTypeName - the name of the document type for which this method is being invoked
Returns:
a list of remotable attribute fields which define the search fields that should be included in the document search criteria, or a null or empty list if no criteria should be included for this searchable attribute

getSearchingRows

protected List<Row> getSearchingRows(String documentTypeName)
Produces legacy KNS rows to use for search attributes. This method was left intact to help ease conversion until KNS is replaced with KRAD.


validateDocumentAttributeCriteria

public List<RemotableAttributeError> validateDocumentAttributeCriteria(ExtensionDefinition extensionDefinition,
                                                                       DocumentSearchCriteria documentSearchCriteria)
Description copied from interface: SearchableAttribute
Performs custom validation of document attribute values that come from this searchable attribute whenever a document search is performed against a document type which uses this searchable attribute. This hook allows for any desired validation of this searchable attributes custom document attribute values to be performed prior to the execution of the document search.

The entire DocumentSearchCriteria is passed to this method, though it's intended that implementing code will pull out the document attribute values on the criteria which are managed by this searchable attribute and perform any desired validation. However, there are certainly no restrictions on this method that would prevent it from performing validations outside of this scope and in relation to other portions of the criteria, though this is certainly not the intent of this validation hook.

Note that this method is invoked when performing a document search from the user interface as well as via the WorkflowDocumentService api.

Specified by:
validateDocumentAttributeCriteria in interface SearchableAttribute
Parameters:
extensionDefinition - the extension definition which was used to locate and load this searchable attribute implementation
documentSearchCriteria - the criteria that was submitted to the document search and against which validation is requested
Returns:
a list of attribute errors containing and validation failure errors messages for the relevant document attributes, if this returns a null or empty list it means that validation was successful

retrieveValidationErrorsFromGlobalVariables

protected void retrieveValidationErrorsFromGlobalVariables(List<RemotableAttributeError> validationErrors)
Retrieves validation errors from GlobalVariables MessageMap and appends to the given list of RemotableAttributeError

Parameters:
validationErrors - list to append validation errors

createFieldRowsForWorkflowAttributes

protected List<Row> createFieldRowsForWorkflowAttributes(WorkflowAttributes attrs)

parsePrimaryKeyValuesFromDocument

protected List<DocumentAttribute> parsePrimaryKeyValuesFromDocument(Class<? extends BusinessObject> businessObjectClass,
                                                                    MaintenanceDocument document)

parseSearchableAttributeValueForPrimaryKey

protected DocumentAttribute parseSearchableAttributeValueForPrimaryKey(String propertyName,
                                                                       Class<? extends BusinessObject> businessObjectClass,
                                                                       MaintenanceDocument document)
Creates a searchable attribute value for the given property name out of the document XML

Parameters:
propertyName - the name of the property to return
businessObjectClass - the class of the business object maintained
document - the document XML
Returns:
a generated SearchableAttributeValue, or null if a value could not be created

getBusinessObjectClass

protected Class<? extends BusinessObject> getBusinessObjectClass(String documentTypeName)
Returns the class of the object being maintained by the given maintenance document type name

Parameters:
documentTypeName - the name of the document type to look up the maintained business object for
Returns:
the class of the maintained business object

getMaintainableClass

protected Class<? extends Maintainable> getMaintainableClass(String documentTypeName)
Returns the maintainable of the object being maintained by the given maintenance document type name

Parameters:
documentTypeName - the name of the document type to look up the maintained business object for
Returns:
the Maintainable of the maintained business object

retrieveMaintenanceDocumentEntry

protected MaintenanceDocumentEntry retrieveMaintenanceDocumentEntry(String documentTypeName)
Retrieves the maintenance document entry for the given document type name

Parameters:
documentTypeName - the document type name to look up the data dictionary document entry for
Returns:
the corresponding data dictionary entry for a maintenance document

retrieveGlobalBusinessObject

protected GlobalBusinessObject retrieveGlobalBusinessObject(String documentNumber,
                                                            Class<? extends BusinessObject> businessObjectClass)

findAllDocumentAttributesForGlobalBusinessObject

protected List<DocumentAttribute> findAllDocumentAttributesForGlobalBusinessObject(GlobalBusinessObject globalBO)

generateSearchableAttributeFromChange

protected DocumentAttribute generateSearchableAttributeFromChange(PersistableBusinessObject changeToPersist)

createFieldRowsForBusinessObject

protected List<Row> createFieldRowsForBusinessObject(Class<? extends BusinessObject> businessObjectClass)
Creates a list of search fields, one for each primary key of the maintained business object

Parameters:
businessObjectClass - the class of the maintained business object
Returns:
a List of KEW search fields


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