1 /** 2 * Copyright 2005-2015 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.krad.lookup; 17 18 import org.kuali.rice.krad.uif.element.Link; 19 import org.kuali.rice.krad.uif.field.InputField; 20 import org.kuali.rice.krad.uif.service.ViewHelperService; 21 22 import java.util.Collection; 23 import java.util.Map; 24 25 /** 26 * Provides contract for implementing a lookup within the lookup framework. 27 * 28 * @author Kuali Rice Team (rice.collab@kuali.org) 29 */ 30 public interface Lookupable extends ViewHelperService, java.io.Serializable { 31 32 /** 33 * Invoked to carry out the lookup search based on the given map of key/value search values. 34 * 35 * @param form lookup form instance containing the lookup data 36 * @param searchCriteria map of criteria currently set 37 * @param bounded indicates whether the results should be limited (if necessary) to the max search 38 * result limit configured 39 * @return the list of result objects, possibly bounded with {@link CollectionIncomplete} 40 */ 41 Collection<?> performSearch(LookupForm form, Map<String, String> searchCriteria, boolean bounded); 42 43 /** 44 * Invoked when the clear action is requested to reset the search fields to their initial default values. 45 * 46 * @param form lookup form instance containing the lookup data 47 * @param searchCriteria map of criteria currently set 48 * @return map of criteria with field values reset to defaults 49 */ 50 Map<String, String> performClear(LookupForm form, Map<String, String> searchCriteria); 51 52 /** 53 * Returns the class for the data object the lookup is configured with. 54 * 55 * @return Class<?> data object class 56 */ 57 Class<?> getDataObjectClass(); 58 59 /** 60 * Sets the class for the data object the lookup will be provided on. 61 * 62 * @param dataObjectClass - data object class for lookup 63 */ 64 void setDataObjectClass(Class<?> dataObjectClass); 65 66 /** 67 * Invoked to build the return URL for a result row. 68 * 69 * <p>Based on the line contained in the field context, the URL for returning the role is constructed and 70 * set as the href for the link. If a return link cannot be constructed the link should be set 71 * to not render</p> 72 * 73 * @param returnLink link that will be used to render the return URL 74 * @param model lookup form containing the data 75 */ 76 void buildReturnUrlForResult(Link returnLink, Object model); 77 78 /** 79 * Invoked to build a maintenance URL for a result row. 80 * 81 * <p>Based on the line contained in the field context and the given maintenance method that should be called a 82 * URL is constructed and set as the action on the action link. If a maintenance link cannot be constructed the 83 * action link should be set to not render</p> 84 * 85 * @param actionLink link that will be used to return the maintenance URL 86 * @param model lookup form containing the data 87 * @param maintenanceMethodToCall name of the method that should be invoked in the maintenance controller 88 */ 89 void buildMaintenanceActionLink(Link actionLink, Object model, String maintenanceMethodToCall); 90 91 /** 92 * Set the value for the input field control to contain the field conversion values for the line. 93 * 94 * <p>Creates and populate the value of the input field control. This value is built according to 95 * {@link LookupForm#getFieldConversions} and allows for client side population of the returned fields without 96 * having to do an additional server call.</p> 97 * 98 * @param selectField the InputField used to mark the lookup row as selected 99 * @param model lookup form containing the model data 100 */ 101 void buildMultiValueSelectField(InputField selectField, Object model); 102 103 /** 104 * Determines if given data object has associated maintenance document that allows new or copy maintenance actions. 105 * 106 * @return boolean true if the maintenance new or copy action is allowed for the data object instance, false 107 * otherwise 108 */ 109 boolean allowsMaintenanceNewOrCopyAction(); 110 111 /** 112 * Determines if given data object has associated maintenance document that allows edit maintenance actions. 113 * 114 * @param dataObject data object 115 * @return boolean true if the maintenance edit action is allowed for the data object instance, false otherwise 116 */ 117 boolean allowsMaintenanceEditAction(Object dataObject); 118 119 /** 120 * Determines if given data object has associated maintenance document that allows delete maintenance actions. 121 * 122 * @param dataObject data object 123 * @return boolean true if the maintenance delete action is allowed for the data object instance, false otherwise 124 */ 125 boolean allowsMaintenanceDeleteAction(Object dataObject); 126 127 }