001    /**
002     * Copyright 2005-2014 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.krad.lookup;
017    
018    import org.kuali.rice.krad.uif.element.Link;
019    import org.kuali.rice.krad.uif.field.InputField;
020    import org.kuali.rice.krad.uif.service.ViewHelperService;
021    
022    import java.util.Collection;
023    import java.util.Map;
024    
025    /**
026     * Provides contract for implementing a lookup within the lookup framework.
027     *
028     * @author Kuali Rice Team (rice.collab@kuali.org)
029     */
030    public interface Lookupable extends ViewHelperService, java.io.Serializable {
031    
032        /**
033         * Invoked to carry out the lookup search based on the given map of key/value search values.
034         *
035         * @param form lookup form instance containing the lookup data
036         * @param searchCriteria map of criteria currently set
037         * @param bounded indicates whether the results should be limited (if necessary) to the max search
038         * result limit configured
039         * @return the list of result objects, possibly bounded with {@link CollectionIncomplete}
040         */
041         Collection<?> performSearch(LookupForm form, Map<String, String> searchCriteria, boolean bounded);
042    
043        /**
044         * Invoked when the clear action is requested to reset the search fields to their initial default values.
045         *
046         * @param form lookup form instance containing the lookup data
047         * @param searchCriteria map of criteria currently set
048         * @return map of criteria with field values reset to defaults
049         */
050         Map<String, String> performClear(LookupForm form, Map<String, String> searchCriteria);
051    
052        /**
053         * Returns the class for the data object the lookup is configured with.
054         *
055         * @return Class<?> data object class
056         */
057         Class<?> getDataObjectClass();
058    
059        /**
060         * Sets the class for the data object the lookup will be provided on.
061         *
062         * @param dataObjectClass - data object class for lookup
063         */
064         void setDataObjectClass(Class<?> dataObjectClass);
065    
066        /**
067         * Invoked to build the return URL for a result row.
068         *
069         * <p>Based on the line contained in the field context, the URL for returning the role is constructed and
070         * set as the href for the link. If a return link cannot be constructed the link should be set
071         * to not render</p>
072         *
073         * @param returnLink link that will be used to render the return URL
074         * @param model lookup form containing the data
075         */
076         void buildReturnUrlForResult(Link returnLink, Object model);
077    
078        /**
079         * Invoked to build a maintenance URL for a result row.
080         *
081         * <p>Based on the line contained in the field context and the given maintenance method that should be called a
082         * URL is constructed and set as the action on the action link. If a maintenance link cannot be constructed the
083         * action link should be set to not render</p>
084         *
085         * @param actionLink link that will be used to return the maintenance URL
086         * @param model lookup form containing the data
087         * @param maintenanceMethodToCall name of the method that should be invoked in the maintenance controller
088         */
089         void buildMaintenanceActionLink(Link actionLink, Object model, String maintenanceMethodToCall);
090    
091        /**
092         * Set the value for the input field control to contain the field conversion values for the line.
093         *
094         * <p>Creates and populate the value of the input field control.  This value is built according to
095         * {@link LookupForm#getFieldConversions} and allows for client side population of the returned fields without
096         * having to do an additional server call.</p>
097         *
098         * @param selectField the InputField used to mark the lookup row as selected
099         * @param model lookup form containing the model data
100         */
101         void buildMultiValueSelectField(InputField selectField, Object model);
102    }