001 /**
002 * Copyright 2005-2012 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.kns.lookup;
017
018 import org.kuali.rice.kns.document.authorization.BusinessObjectRestrictions;
019 import org.kuali.rice.kns.web.struts.form.LookupForm;
020 import org.kuali.rice.kns.web.ui.Column;
021 import org.kuali.rice.kns.web.ui.Field;
022 import org.kuali.rice.kns.web.ui.ResultRow;
023 import org.kuali.rice.kns.web.ui.Row;
024 import org.kuali.rice.krad.bo.BusinessObject;
025
026 import java.io.Serializable;
027 import java.util.Collection;
028 import java.util.List;
029 import java.util.Map;
030
031 /**
032 * This class defines an interface for lookupables.
033 *
034 * They should act as facades for LookupableHelperServices and also expose bean handlers
035 * (getCreateNewUrl, getHtmlMenuBar, getTitle, getRows, getExtraButton{Source,Params})
036 *
037 */
038 @Deprecated
039 public interface Lookupable extends Serializable {
040
041 /**
042 * Initializes the lookup with a businss object class. This value originates
043 * from the UI via LookupForm population.
044 *
045 * It is required that implementations of this method will initialize the
046 * search area used by the UI to provide the search form. In particular,
047 * it will ensure that getRows() will return valid results
048 *
049 * @param boClass
050 */
051 public void setBusinessObjectClass(Class<? extends BusinessObject> businessObjectClass);
052
053 /**
054 *
055 * @return Returns the dataObjectClass this lookupable is representing
056 *
057 */
058 public Class<? extends BusinessObject> getBusinessObjectClass();
059
060 /**
061 * Initializes the lookup with the given Map of parameters.
062 *
063 * @param parameters
064 */
065 public void setParameters(Map<String, String[]> parameters);
066
067 /**
068 * @return Returns the parameters passed to this lookup
069 */
070 public Map<String, String[]> getParameters();
071
072 /**
073 * @return the html to be displayed as a menu bar
074 */
075 public String getHtmlMenuBar();
076
077 /**
078 * @return the html to be displayed as a supplemental menu bar
079 */
080 public String getSupplementalMenuBar();
081
082 /**
083 * @return List of Row objects used to render the search area
084 */
085 public List<Row> getRows();
086
087 /**
088 * @return String displayed as title for the lookup
089 */
090 public String getTitle();
091
092 /**
093 * @return String url for the location to return to after the lookup
094 */
095 public String getReturnLocation();
096
097 /**
098 * @return List of Column objects used to render the result table
099 */
100 public List<Column> getColumns();
101
102 /**
103 * Validates the values filled in as search criteria, also checks for required field values.
104 *
105 * @param fieldValues - Map of property/value pairs
106 */
107 public void validateSearchParameters(Map<String, String> fieldValues);
108
109 /**
110 *
111 * This method performs the lookup and returns a collection of lookup items
112 * @param lookupForm
113 * @param resultTable
114 * @param bounded
115 * @return results of lookup
116 */
117 public Collection<? extends BusinessObject> performLookup(LookupForm lookupForm, List<ResultRow> resultTable, boolean bounded);
118
119 /**
120 * Performs a search and returns result list.
121 *
122 * @param fieldValues - Map of property/value pairs
123 * @return List of business objects found by the search
124 * @throws Exception
125 */
126 public List<? extends BusinessObject> getSearchResults(Map<String, String> fieldValues);
127
128 /**
129 * Similar to getSearchResults, but the number of returned rows is not bounded
130 *
131 * @param fieldValues
132 * @return
133 */
134 public List<? extends BusinessObject> getSearchResultsUnbounded(Map<String, String> fieldValues);
135
136 /**
137 * @return String providing source for optional extra button
138 */
139 public String getExtraButtonSource();
140
141 /**
142 * @return String providing return parameters for optional extra button
143 */
144 public String getExtraButtonParams();
145
146 /**
147 * Determines if there should be more search fields rendered based on already entered search criteria.
148 *
149 * @param fieldValues - Map of property/value pairs
150 * @return boolean
151 */
152 public boolean checkForAdditionalFields(Map<String, String> fieldValues);
153
154 /**
155 * Builds the return value url.
156 *
157 * @param businessObject - Instance of a business object containing the return values
158 * @param fieldConversions - Map of conversions mapping bo names to caller field names.
159 * @param lookupImpl - Current lookup impl name
160 * @return String url called when selecting a row from the result set
161 */
162 public HtmlData getReturnUrl(BusinessObject businessObject, Map<String, String> fieldConversions, String lookupImpl, BusinessObjectRestrictions businessObjectRestrictions);
163
164 /**
165 * Builds the Url for a maintenance new document for the lookup business object class
166 * @param businessObject
167 * @return String rendered on Lookup screen for maintenance new document
168 */
169 public String getCreateNewUrl();
170
171 /**
172 * Sets the requested fields conversions in the lookupable
173 *
174 * @param fieldConversions
175 */
176 public void setFieldConversions(Map<String, String> fieldConversions);
177
178 /**
179 * Sets the requested read only fields list in the lookupable
180 *
181 * @param readOnlyFieldsList
182 */
183 public void setReadOnlyFieldsList(List<String> readOnlyFieldsList);
184
185 /**
186 * Sets the helper service for instance
187 * @param helper the helper service
188 */
189 public void setLookupableHelperService(LookupableHelperService helper);
190
191 /**
192 * Returns the LookupableHelperService designated to help this lookup
193 * @return
194 */
195 public LookupableHelperService getLookupableHelperService();
196
197 /**
198 * Returns whether this search was performed using the values of the primary keys only
199 *
200 * @return
201 */
202 public boolean isSearchUsingOnlyPrimaryKeyValues();
203
204 /**
205 * Returns a comma delimited list of primary key field labels, as defined in the DD
206 *
207 * @return
208 */
209 public String getPrimaryKeyFieldLabels();
210
211 /**
212 * This method returns a list of the default columns used to sort the result set. For multiple value lookups,
213 * this method does not change when different columns are sorted.
214 *
215 * @return
216 */
217 public List<String> getDefaultSortColumns();
218
219 /**
220 *
221 * This method allows for customization of the lookup clear
222 *
223 */
224 public void performClear(LookupForm lookupForm);
225
226 /**
227 *
228 * This method checks whether the header non maint actions should be shown
229 *
230 */
231 public boolean shouldDisplayHeaderNonMaintActions();
232
233 /**
234 *
235 * This method checks whether the criteria should be shown
236 *
237 */
238 public boolean shouldDisplayLookupCriteria();
239
240 /**
241 *
242 * This method is called from a custom action button or script
243 *
244 */
245 public boolean performCustomAction(boolean ignoreErrors);
246
247 /**
248 *
249 * get extra field
250 *
251 * @return
252 */
253 public Field getExtraField();
254
255 /**
256 * method returns the extraOnLoad variable. The
257 * varible is currently accessed in page.tag and is called in the onLoad.
258 * it allows us to inject javascript onload.
259 */
260 public String getExtraOnLoad();
261
262 public void setExtraOnLoad(String extraOnLoad);
263 public void applyFieldAuthorizationsFromNestedLookups(Field field);
264
265 /**
266 * Performs conditional logic (based on current search values or other parameters) to
267 * override field hidden, read-only, and required attributes previously set.
268 */
269 public void applyConditionalLogicForFieldDisplay();
270 }