View Javadoc

1   /**
2    * Copyright 2005-2011 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.kns.lookup;
17  
18  import org.kuali.rice.kns.document.authorization.BusinessObjectRestrictions;
19  import org.kuali.rice.kns.web.struts.form.LookupForm;
20  import org.kuali.rice.kns.web.ui.Field;
21  import org.kuali.rice.kns.web.ui.ResultRow;
22  import org.kuali.rice.kns.web.ui.Row;
23  import org.kuali.rice.krad.bo.BusinessObject;
24  
25  import java.io.Serializable;
26  import java.util.Collection;
27  import java.util.List;
28  import java.util.Map;
29  
30  /**
31   * This class defines an interface for lookupables.
32   *
33   * They should act as facades for LookupableHelperServices and also expose bean handlers
34   * (getCreateNewUrl, getHtmlMenuBar, getTitle, getRows, getExtraButton{Source,Params})
35   *
36   */
37  @Deprecated
38  public interface Lookupable extends Serializable {
39  
40      /**
41       * Initializes the lookup with a businss object class
42       *
43       * It is required that implementations of this method will initialize the
44       * search area used by the UI to provide the search form.  In particular,
45       * it will ensure that getRows() will return valid results
46       *
47       * @param boClass
48       */
49      public void setBusinessObjectClass(Class businessObjectClass);
50  
51      /**
52       *
53       * @return Returns the dataObjectClass this lookupable is representing
54       *
55       */
56      public Class getBusinessObjectClass();
57  
58      /**
59       * Initializes the lookup with the given Map of parameters.
60       *
61       * @param parameters
62       */
63      public void setParameters(Map<String, String[]> parameters);
64  
65      /**
66       * @return Returns the parameters passed to this lookup
67       */
68      public Map<String, String[]> getParameters();
69  
70      /**
71       * @return the html to be displayed as a menu bar
72       */
73      public String getHtmlMenuBar();
74  
75      /**
76       * @return the html to be displayed as a supplemental menu bar
77       */
78      public String getSupplementalMenuBar();
79  
80      /**
81       * @return List of Row objects used to render the search area
82       */
83      public List<? extends Row> getRows();
84  
85      /**
86       * @return String displayed as title for the lookup
87       */
88      public String getTitle();
89  
90      /**
91       * @return String url for the location to return to after the lookup
92       */
93      public String getReturnLocation();
94  
95      /**
96       * @return List of Column objects used to render the result table
97       */
98      public List getColumns();
99  
100     /**
101      * Validates the values filled in as search criteria, also checks for required field values.
102      *
103      * @param fieldValues - Map of property/value pairs
104      */
105     public void validateSearchParameters(Map fieldValues);
106 
107     /**
108      *
109      * This method performs the lookup and returns a collection of lookup items
110      * @param lookupForm
111      * @param resultTable
112      * @param bounded
113      * @return results of lookup
114      */
115     public Collection performLookup(LookupForm lookupForm, List<ResultRow> resultTable, boolean bounded);
116 
117     /**
118      * Performs a search and returns result list.
119      *
120      * @param fieldValues - Map of property/value pairs
121      * @return List of business objects found by the search
122      * @throws Exception
123      */
124     public List<BusinessObject> getSearchResults(Map<String, String> fieldValues);
125 
126     /**
127      * Similar to getSearchResults, but the number of returned rows is not bounded
128      *
129      * @param fieldValues
130      * @return
131      */
132     public List<BusinessObject> getSearchResultsUnbounded(Map<String, String> fieldValues);
133 
134     /**
135      * @return String providing source for optional extra button
136      */
137     public String getExtraButtonSource();
138 
139     /**
140      * @return String providing return parameters for optional extra button
141      */
142     public String getExtraButtonParams();
143 
144     /**
145      * Determines if there should be more search fields rendered based on already entered search criteria.
146      *
147      * @param fieldValues - Map of property/value pairs
148      * @return boolean
149      */
150     public boolean checkForAdditionalFields(Map fieldValues);
151 
152     /**
153      * Builds the return value url.
154      *
155      * @param businessObject - Instance of a business object containing the return values
156      * @param fieldConversions - Map of conversions mapping bo names to caller field names.
157      * @param lookupImpl - Current lookup impl name
158      * @return String url called when selecting a row from the result set
159      */
160     public HtmlData getReturnUrl(BusinessObject businessObject, Map fieldConversions, String lookupImpl, BusinessObjectRestrictions businessObjectRestrictions);
161 
162     /**
163      * Builds the Url for a maintenance new document for the lookup business object class
164      * @param businessObject
165      * @return String rendered on Lookup screen for maintenance new document
166      */
167     public String getCreateNewUrl();
168 
169     /**
170      * Sets the requested fields conversions in the lookupable
171      *
172      * @param fieldConversions
173      */
174     public void setFieldConversions(Map fieldConversions);
175 
176     /**
177      * Sets the requested read only fields list in the lookupable
178      *
179      * @param readOnlyFieldsList
180      */
181     public void setReadOnlyFieldsList(List<String> readOnlyFieldsList);
182 
183     /**
184      * Sets the helper service for instance
185      * @param helper the helper service
186      */
187     public void setLookupableHelperService(LookupableHelperService helper);
188 
189     /**
190      * Returns the LookupableHelperService designated to help this lookup
191      * @return
192      */
193     public LookupableHelperService getLookupableHelperService();
194 
195     /**
196      * Returns whether this search was performed using the values of the primary keys only
197      *
198      * @return
199      */
200     public boolean isSearchUsingOnlyPrimaryKeyValues();
201 
202     /**
203      * Returns a comma delimited list of primary key field labels, as defined in the DD
204      *
205      * @return
206      */
207     public String getPrimaryKeyFieldLabels();
208 
209     /**
210      * This method returns a list of the default columns used to sort the result set.  For multiple value lookups,
211      * this method does not change when different columns are sorted.
212      *
213      * @return
214      */
215     public List getDefaultSortColumns();
216 
217     /**
218      *
219      * This method allows for customization of the lookup clear
220      *
221      */
222     public void performClear(LookupForm lookupForm);
223 
224     /**
225      *
226      * This method checks whether the header non maint actions should be shown
227      *
228      */
229     public boolean shouldDisplayHeaderNonMaintActions();
230 
231     /**
232      *
233      * This method checks whether the criteria should be shown
234      *
235      */
236     public boolean shouldDisplayLookupCriteria();
237 
238     /**
239      *
240      * This method is called from a custom action button or script
241      *
242      */
243     public boolean performCustomAction(boolean ignoreErrors);
244 
245     /**
246      *
247      * get extra field
248      *
249      * @return
250      */
251     public Field getExtraField();
252 
253     /**
254      * method returns the extraOnLoad variable. The 
255 	 * varible is currently accessed in page.tag and is called in the onLoad.
256 	 * it allows us to inject javascript onload.
257 	 */
258     public String getExtraOnLoad();
259     
260     public void setExtraOnLoad(String extraOnLoad);
261     public void applyFieldAuthorizationsFromNestedLookups(Field field);
262     
263     /**
264      * Performs conditional logic (based on current search values or other parameters) to
265      * override field hidden, read-only, and required attributes previously set.
266      */
267     public void applyConditionalLogicForFieldDisplay();
268 }