1 /** 2 * Copyright 2005-2016 The Kuali Foundation 3 * 4 * Licensed under the Educational Community License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.opensource.org/licenses/ecl2.php 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package org.kuali.rice.kew.docsearch; 17 18 import org.kuali.rice.core.api.uif.RemotableAttributeError; 19 import org.kuali.rice.kew.api.document.search.DocumentSearchCriteria; 20 import org.kuali.rice.kew.api.document.search.DocumentSearchResults; 21 import org.kuali.rice.kew.framework.document.search.DocumentSearchCriteriaConfiguration; 22 import org.kuali.rice.kew.framework.document.search.DocumentSearchResultSetConfiguration; 23 import org.kuali.rice.kew.framework.document.search.DocumentSearchResultValues; 24 import org.kuali.rice.kew.doctype.bo.DocumentType; 25 26 import java.util.List; 27 28 /** 29 * Handles communication between {@link org.kuali.rice.kew.framework.document.search.DocumentSearchCustomizationHandlerService} 30 * endpoints in order to invoke document search customizations which might be hosted from various applications. 31 * 32 * @author Kuali Rice Team (rice.collab@kuali.org) 33 */ 34 public interface DocumentSearchCustomizationMediator { 35 36 /** 37 * Retrieves the document search criteria configuration for the given document type. This should include attribute 38 * fields that should be included in the document search user interface when displaying criteria by which a user 39 * can search for documents. If this method returns null then no additional criteria should be presented on the 40 * search screen. 41 * 42 * @param documentType the document type for which to find document search criteria configuration, must not be null 43 * 44 * @return configuration information containing additional criteria (beyond the default set) which should be 45 * displayed to the user when performing a search against documents of the given type, if null is returned this 46 * indicates that the default document search criteria configuration should be used 47 */ 48 DocumentSearchCriteriaConfiguration getDocumentSearchCriteriaConfiguration(DocumentType documentType); 49 50 /** 51 * Performs optional validation of document search criteria prior to execution of the search. 52 * 53 * @param documentType the document type against which the lookup is being performed 54 * @param documentSearchCriteria the criteria representing the submission of the document search 55 * 56 * @return a list of error messages generated by the validation, may an empty list in which case the calling code 57 * may safely ignore the response and assume that the given criteria validated successfully 58 */ 59 List<RemotableAttributeError> validateLookupFieldParameters(DocumentType documentType, 60 DocumentSearchCriteria documentSearchCriteria); 61 62 /** 63 * Optionally performs customization of the given document search criteria in the cases where the document type 64 * implements criteria customization. If this method returns a non-null value, then the calling code should use 65 * the returned criteria in order to execute the search. If this method returns a null value, it means the criteria 66 * that was given did not require any customization. In this case, the calling code should proceed with search 67 * execution using the originally provided criteria. 68 * 69 * @param documentType the document type against which to perform the criteria customization, should never be null 70 * @param documentSearchCriteria the criteria to use as the starting point for customization 71 * 72 * @return a customized version of the given criteria, or null if the criteria was not customized 73 */ 74 DocumentSearchCriteria customizeCriteria(DocumentType documentType, DocumentSearchCriteria documentSearchCriteria); 75 76 /** 77 * Optionally performs a custom clearing of the given document search criteria if the given document type 78 * implements a customized clear algorithm. If this method returns a non-null value, then the value returned 79 * should be instated by the calling code as the "cleared" version of the criteria. If null is returned, then the 80 * default implementation of criteria clearing should be used. 81 * 82 * @param documentType the document type against which to check for a custom implementation of criteria clearing 83 * @param documentSearchCriteria the current criteria of the document search prior to being cleared 84 * 85 * @return the result of clearing the criteria, if this returns null it means the given document type does not 86 * implement custom clearing and the default behavior should be used 87 */ 88 DocumentSearchCriteria customizeClearCriteria(DocumentType documentType, 89 DocumentSearchCriteria documentSearchCriteria); 90 91 /** 92 * Optionally performs customization on the given set of document search results. This could include changing 93 * existing document values or synthesizing new ones. The results of this method include a list of 94 * {@link org.kuali.rice.kew.framework.document.search.DocumentSearchResultValue} objects, each of which are mapped to a 95 * specific document id from the results and include additional key-value pairs for customized or synthesized 96 * values for that document. This method can return a null value if no customization was performed. 97 * 98 * @param documentType the document type to use when determining what customization logic (if any) should be invoked 99 * @param documentSearchCriteria the criteria of the document search which produced the supplied results 100 * @param results the results of the document search which are being considered for customization 101 * 102 * @return the customized result values, or null if not result customization was performed 103 */ 104 DocumentSearchResultValues customizeResults(DocumentType documentType, 105 DocumentSearchCriteria documentSearchCriteria, 106 DocumentSearchResults results); 107 108 /** 109 * Optionally provides configuration information that allows for document search result set customization to occur. 110 * The resulting {@code DocumentSearchResultSetConfiguration} can be used by the calling code to determine how best 111 * to render the lookup results. 112 * 113 * @param documentType the document type for which to customize result set configuration 114 * @param documentSearchCriteria the criteria that was used to perform the lookup 115 * 116 * @return the customized document search result set configuration, or null if no result set customization was 117 * performed 118 */ 119 DocumentSearchResultSetConfiguration customizeResultSetConfiguration(DocumentType documentType, 120 DocumentSearchCriteria documentSearchCriteria); 121 122 } 123 124