org.kuali.rice.kew.impl.document.search
Class DocumentSearchGeneratorImpl

java.lang.Object
  extended by org.kuali.rice.kew.impl.document.search.DocumentSearchGeneratorImpl
All Implemented Interfaces:
DocumentSearchGenerator

public class DocumentSearchGeneratorImpl
extends Object
implements DocumentSearchGenerator

Reference implementation of the DocumentSearchGenerator.

Author:
Kuali Rice Team (rice.collab@kuali.org)

Constructor Summary
DocumentSearchGeneratorImpl()
           
 
Method Summary
 void addChildDocumentTypes(StringBuilder whereSql, Collection<DocumentType> childDocumentTypes)
           
 void addDocumentTypeLikeNameToSearchOn(StringBuilder whereSql, String documentTypeName, String clause)
           
 void addDocumentTypeNameToSearchOn(StringBuilder whereSql, String documentTypeName)
           
 void addDocumentTypeNameToSearchOn(StringBuilder whereSql, String documentTypeName, String clause)
           
 DocumentSearchCriteria clearSearch(DocumentSearchCriteria criteria)
           
 StringBuilder constructWhereClauseElement(String clauseStarter, String queryTableColumnName, String operand, String valueToSearch, String valuePrefix, String valueSuffix)
           
 String establishDateString(org.joda.time.DateTime fromDate, org.joda.time.DateTime toDate, String tableName, String tableAlias, String colName, String whereStatementClause)
           
 StringBuilder generateSearchableAttributeFromSql(String tableName, String tableIdentifier)
           
 QueryComponent generateSearchableAttributeSql(String tableName, String documentAttributeName, String whereSqlStarter, int tableIndex)
           
 StringBuilder generateSearchableAttributeWhereClauseJoin(String whereSqlStarter, String tableIdentifier, String attributeTableKeyColumnName)
           
 String generateSearchSql(DocumentSearchCriteria criteria, List<RemotableAttributeField> searchFields)
           
 String getAppDocIdSql(String appDocId, String whereClausePredicatePrefix)
           
 String getAppDocStatusSql(String appDocStatus, String whereClausePredicatePrefix, int statusTransitionWhereClauseLength)
          This method generates the where clause fragment related to Application Document Status.
 String getApproverSql(String approver, String whereClausePredicatePrefix)
           
 String getDateApprovedSql(org.joda.time.DateTime fromDateApproved, org.joda.time.DateTime toDateApproved, String whereClausePredicatePrefix)
           
 String getDateCreatedSql(org.joda.time.DateTime fromDateCreated, org.joda.time.DateTime toDateCreated, String whereClausePredicatePrefix)
           
 String getDateFinalizedSql(org.joda.time.DateTime fromDateFinalized, org.joda.time.DateTime toDateFinalized, String whereClausePredicatePrefix)
           
 String getDateLastModifiedSql(org.joda.time.DateTime fromDateLastModified, org.joda.time.DateTime toDateLastModified, String whereClausePredicatePrefix)
           
 DatabasePlatform getDbPlatform()
           
 String getDocRouteNodeSql(String documentTypeFullName, String routeNodeName, RouteNodeLookupLogic docRouteLevelLogic, String whereClausePredicatePrefix)
           
 String getDocTitleSql(String docTitle, String whereClausePredicatePrefix)
           
 String getDocTypeFullNameWhereSql(DocumentSearchCriteria criteria, String whereClausePredicatePrefix)
           
 String getDocumentIdSql(String documentId, String whereClausePredicatePrefix, String tableAlias)
           
 String getDocumentStatusSql(List<DocumentStatus> documentStatuses, List<DocumentStatusCategory> categories, String whereClausePredicatePrefix)
           
 String getGeneratedPredicatePrefix(int whereClauseSize)
           
 String getGroupViewerSql(String groupId, String whereClausePredicatePrefix)
           
 String getInitiatorSql(String initiatorPrincipalName, String whereClausePredicatePrefix)
           
 QueryComponent getSearchableAttributeJoinSql(String tableName, String tableIdentifier, String whereSqlStarter, String attributeTableKeyColumnName)
           
 QueryComponent getSearchableAttributeSql(Map<String,List<String>> documentAttributeValues, List<RemotableAttributeField> searchFields, String whereClausePredicatePrefix)
           
 SqlBuilder getSqlBuilder()
           
 String getStatusTransitionDateSql(org.joda.time.DateTime fromStatusTransitionDate, org.joda.time.DateTime toStatusTransitionDate, String whereClausePredicatePrefix)
           
 DocumentType getValidDocumentType(String documentTypeFullName)
           
 String getViewerSql(String viewer, String whereClausePredicatePrefix)
           
protected  boolean isUsingAtLeastOneSearchAttribute(DocumentSearchCriteria criteria)
          A helper method for determining whether any searchable attributes are in use for the search.
 void populateDocumentAttributesValues(DocumentSearchResult.Builder resultBuilder, Statement searchAttributeStatement)
          This method performs searches against the search attribute value tables (see classes implementing SearchableAttributeValue) to get data to fill in search attribute values on the given resultBuilder parameter
 DocumentSearchResults.Builder processResultSet(DocumentSearchCriteria criteria, boolean criteriaModified, Statement searchAttributeStatement, ResultSet resultSet, int maxResultCap, int fetchLimit)
           
protected  DocumentSearchResult.Builder processRow(DocumentSearchCriteria criteria, Statement searchAttributeStatement, ResultSet rs)
          Processes the search result row, returning a DocumentSearchResult
 void setSqlBuilder(SqlBuilder sqlBuilder)
           
 List<RemotableAttributeError> validateSearchableAttributes(DocumentSearchCriteria.Builder criteria)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DocumentSearchGeneratorImpl

public DocumentSearchGeneratorImpl()
Method Detail

clearSearch

public DocumentSearchCriteria clearSearch(DocumentSearchCriteria criteria)
Specified by:
clearSearch in interface DocumentSearchGenerator

getValidDocumentType

public DocumentType getValidDocumentType(String documentTypeFullName)

validateSearchableAttributes

public List<RemotableAttributeError> validateSearchableAttributes(DocumentSearchCriteria.Builder criteria)
Specified by:
validateSearchableAttributes in interface DocumentSearchGenerator

getSearchableAttributeSql

public QueryComponent getSearchableAttributeSql(Map<String,List<String>> documentAttributeValues,
                                                List<RemotableAttributeField> searchFields,
                                                String whereClausePredicatePrefix)

generateSearchableAttributeSql

public QueryComponent generateSearchableAttributeSql(String tableName,
                                                     String documentAttributeName,
                                                     String whereSqlStarter,
                                                     int tableIndex)

getSearchableAttributeJoinSql

public QueryComponent getSearchableAttributeJoinSql(String tableName,
                                                    String tableIdentifier,
                                                    String whereSqlStarter,
                                                    String attributeTableKeyColumnName)

generateSearchableAttributeWhereClauseJoin

public StringBuilder generateSearchableAttributeWhereClauseJoin(String whereSqlStarter,
                                                                String tableIdentifier,
                                                                String attributeTableKeyColumnName)

generateSearchableAttributeFromSql

public StringBuilder generateSearchableAttributeFromSql(String tableName,
                                                        String tableIdentifier)

constructWhereClauseElement

public StringBuilder constructWhereClauseElement(String clauseStarter,
                                                 String queryTableColumnName,
                                                 String operand,
                                                 String valueToSearch,
                                                 String valuePrefix,
                                                 String valueSuffix)

processResultSet

public DocumentSearchResults.Builder processResultSet(DocumentSearchCriteria criteria,
                                                      boolean criteriaModified,
                                                      Statement searchAttributeStatement,
                                                      ResultSet resultSet,
                                                      int maxResultCap,
                                                      int fetchLimit)
                                               throws SQLException
Specified by:
processResultSet in interface DocumentSearchGenerator
Throws:
SQLException

processRow

protected DocumentSearchResult.Builder processRow(DocumentSearchCriteria criteria,
                                                  Statement searchAttributeStatement,
                                                  ResultSet rs)
                                           throws SQLException
Processes the search result row, returning a DocumentSearchResult

Parameters:
criteria - the original search criteria
searchAttributeStatement - statement being used to call the database for queries
rs - the search result set
Returns:
a DocumentSearchResult representing the current ResultSet row
Throws:
SQLException

populateDocumentAttributesValues

public void populateDocumentAttributesValues(DocumentSearchResult.Builder resultBuilder,
                                             Statement searchAttributeStatement)
                                      throws SQLException
This method performs searches against the search attribute value tables (see classes implementing SearchableAttributeValue) to get data to fill in search attribute values on the given resultBuilder parameter

Parameters:
resultBuilder - - document search result object getting search attributes added to it
searchAttributeStatement - - statement being used to call the database for queries
Throws:
SQLException

generateSearchSql

public String generateSearchSql(DocumentSearchCriteria criteria,
                                List<RemotableAttributeField> searchFields)
Specified by:
generateSearchSql in interface DocumentSearchGenerator

getDocumentIdSql

public String getDocumentIdSql(String documentId,
                               String whereClausePredicatePrefix,
                               String tableAlias)

getDocTitleSql

public String getDocTitleSql(String docTitle,
                             String whereClausePredicatePrefix)

getAppDocIdSql

public String getAppDocIdSql(String appDocId,
                             String whereClausePredicatePrefix)

getDateCreatedSql

public String getDateCreatedSql(org.joda.time.DateTime fromDateCreated,
                                org.joda.time.DateTime toDateCreated,
                                String whereClausePredicatePrefix)

getDateApprovedSql

public String getDateApprovedSql(org.joda.time.DateTime fromDateApproved,
                                 org.joda.time.DateTime toDateApproved,
                                 String whereClausePredicatePrefix)

getDateFinalizedSql

public String getDateFinalizedSql(org.joda.time.DateTime fromDateFinalized,
                                  org.joda.time.DateTime toDateFinalized,
                                  String whereClausePredicatePrefix)

getDateLastModifiedSql

public String getDateLastModifiedSql(org.joda.time.DateTime fromDateLastModified,
                                     org.joda.time.DateTime toDateLastModified,
                                     String whereClausePredicatePrefix)

getStatusTransitionDateSql

public String getStatusTransitionDateSql(org.joda.time.DateTime fromStatusTransitionDate,
                                         org.joda.time.DateTime toStatusTransitionDate,
                                         String whereClausePredicatePrefix)

getViewerSql

public String getViewerSql(String viewer,
                           String whereClausePredicatePrefix)

getGroupViewerSql

public String getGroupViewerSql(String groupId,
                                String whereClausePredicatePrefix)

getInitiatorSql

public String getInitiatorSql(String initiatorPrincipalName,
                              String whereClausePredicatePrefix)

getApproverSql

public String getApproverSql(String approver,
                             String whereClausePredicatePrefix)

getDocTypeFullNameWhereSql

public String getDocTypeFullNameWhereSql(DocumentSearchCriteria criteria,
                                         String whereClausePredicatePrefix)

addChildDocumentTypes

public void addChildDocumentTypes(StringBuilder whereSql,
                                  Collection<DocumentType> childDocumentTypes)

addDocumentTypeNameToSearchOn

public void addDocumentTypeNameToSearchOn(StringBuilder whereSql,
                                          String documentTypeName)

addDocumentTypeNameToSearchOn

public void addDocumentTypeNameToSearchOn(StringBuilder whereSql,
                                          String documentTypeName,
                                          String clause)

addDocumentTypeLikeNameToSearchOn

public void addDocumentTypeLikeNameToSearchOn(StringBuilder whereSql,
                                              String documentTypeName,
                                              String clause)

getDocRouteNodeSql

public String getDocRouteNodeSql(String documentTypeFullName,
                                 String routeNodeName,
                                 RouteNodeLookupLogic docRouteLevelLogic,
                                 String whereClausePredicatePrefix)

getDocumentStatusSql

public String getDocumentStatusSql(List<DocumentStatus> documentStatuses,
                                   List<DocumentStatusCategory> categories,
                                   String whereClausePredicatePrefix)

getAppDocStatusSql

public String getAppDocStatusSql(String appDocStatus,
                                 String whereClausePredicatePrefix,
                                 int statusTransitionWhereClauseLength)
This method generates the where clause fragment related to Application Document Status. If the Status value only is defined, search for the appDocStatus value in the route header. If either the transition from/to dates are defined, search agains the status transition history.


getGeneratedPredicatePrefix

public String getGeneratedPredicatePrefix(int whereClauseSize)

establishDateString

public String establishDateString(org.joda.time.DateTime fromDate,
                                  org.joda.time.DateTime toDate,
                                  String tableName,
                                  String tableAlias,
                                  String colName,
                                  String whereStatementClause)

getDbPlatform

public DatabasePlatform getDbPlatform()

getSqlBuilder

public SqlBuilder getSqlBuilder()

setSqlBuilder

public void setSqlBuilder(SqlBuilder sqlBuilder)

isUsingAtLeastOneSearchAttribute

protected boolean isUsingAtLeastOneSearchAttribute(DocumentSearchCriteria criteria)
A helper method for determining whether any searchable attributes are in use for the search.

Returns:
True if the search criteria contains at least one searchable attribute or the criteria's doc type name is non-blank; false otherwise.


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