001    /**
002     * Copyright 2005-2013 The Kuali Foundation
003     *
004     * Licensed under the Educational Community License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     * http://www.opensource.org/licenses/ecl2.php
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    package org.kuali.rice.kew.docsearch;
017    
018    import java.util.List;
019    
020    import org.kuali.rice.kew.doctype.bo.DocumentType;
021    import org.kuali.rice.kns.web.ui.Row;
022    
023    /**
024     * Used by the document search helper to produce rows to render for the document search screen.
025     *
026     * @author Kuali Rice Team (rice.collab@kuali.org)
027     *
028     */
029    public interface DocumentSearchCriteriaProcessor {
030    
031        /**
032         * Constructs the list of rows and fields to display in the lookup criteria section of the document search screen.
033         * The documentType parameter passed to this method will generally be supplied in cases where the document type name
034         * was supplied to the lookup via a query parameter or when refreshing the criteria after making a change to it
035         * (like the user doing a document type lookup to fill in the value and then returning it back to the document search).
036         *
037         * <p>This method should look at the given document type (if there is one) to determine if there are any custom
038         * rows to render for that document type.  It should also look at the request for detailed and super user search
039         * and adjust the rows accordingly for either of those conditions.</p>
040         *
041         * @param documentType supplies the document type in use on this search if one is specified, will be null otherwise
042         * @param defaultRows the default set of rows that are supplied from the data dictionary for the document search
043         * @param detailed indicates whether or not a detailed search has been requested
044         * @param superSearch indicates whether or not a super user search has been requested
045         *
046         * @return the rows to render is the criteria section of the document search.
047         */
048            List<Row> getRows(DocumentType documentType, List<Row> defaultRows, boolean detailed, boolean superSearch);
049    
050    }