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 }