001/** 002 * Copyright 2005-2018 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 */ 016package org.kuali.rice.kns.lookup; 017 018import org.kuali.rice.kns.document.authorization.BusinessObjectRestrictions; 019import org.kuali.rice.kns.web.struts.form.LookupForm; 020import org.kuali.rice.kns.web.ui.Column; 021import org.kuali.rice.kns.web.ui.Field; 022import org.kuali.rice.kns.web.ui.ResultRow; 023import org.kuali.rice.kns.web.ui.Row; 024import org.kuali.rice.krad.bo.BusinessObject; 025import org.kuali.rice.kns.service.BusinessObjectDictionaryService; 026import org.kuali.rice.krad.service.DataDictionaryService; 027import org.kuali.rice.krad.util.KRADConstants; 028import org.kuali.rice.krad.util.UrlFactory; 029import org.springframework.transaction.annotation.Transactional; 030 031import java.util.Collection; 032import java.util.List; 033import java.util.Map; 034import java.util.Properties; 035 036/** 037 * Kuali lookup implementation. Implements methods necessary to render the lookup and provides search and return methods. 038 */ 039@Deprecated 040@Transactional 041public class KualiLookupableImpl implements Lookupable { 042 private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(KualiLookupableImpl.class); 043 protected static final String[] IGNORE_LIST = { KRADConstants.DOC_FORM_KEY, KRADConstants.BACK_LOCATION }; 044 045 protected Class businessObjectClass; 046 protected LookupableHelperService lookupableHelperService; 047 protected String extraOnLoad = ""; // This is supposed to be a javascript function. 048 049 /** 050 * Default constructor initializes services from spring 051 */ 052 public KualiLookupableImpl() { 053 } 054 055 /** 056 * Sets the business object class for the lookup instance, then rows can be set for search render. 057 * 058 * @param boClass Class for the lookup business object 059 */ 060 public void setBusinessObjectClass(Class boClass) { 061 if (boClass == null) { 062 throw new RuntimeException("Business object class is null."); 063 } 064 065 this.businessObjectClass = boClass; 066 067 // next line initializes the helper to return correct values for getRow(); 068 getLookupableHelperService().setBusinessObjectClass(boClass); 069 } 070 071 /** 072 * Initializes the lookup with the given Map of parameters. 073 * 074 * @param parameters 075 */ 076 public void setParameters(Map<String, String[]> parameters) { 077 getLookupableHelperService().setParameters(parameters); 078 } 079 080 /** 081 * @return Returns the parameters passed to this lookup 082 */ 083 public Map<String, String[]> getParameters() { 084 return getLookupableHelperService().getParameters(); 085 } 086 087 /** 088 * Constructs the list of columns for the search results. All properties for the column objects come from the DataDictionary. 089 */ 090 public List<Column> getColumns() { 091 return getLookupableHelperService().getColumns(); 092 } 093 094 /** 095 * Checks that any required search fields have value. 096 * 097 * @see Lookupable#validateSearchParameters(java.util.Map) 098 */ 099 public void validateSearchParameters(Map<String, String> fieldValues) { 100 getLookupableHelperService().validateSearchParameters(fieldValues); 101 } 102 103 /** 104 * Uses Lookup Service to provide a basic unbounded search. 105 * 106 * @param fieldValues - Map containing prop name keys and search values 107 * 108 * @return List found business objects 109 */ 110 public List<? extends BusinessObject> getSearchResultsUnbounded(Map<String, String> fieldValues) { 111 return getLookupableHelperService().getSearchResultsUnbounded(fieldValues); 112 } 113 114 /** 115 * Uses Lookup Service to provide a basic search. 116 * 117 * @param fieldValues - Map containing prop name keys and search values 118 * 119 * @return List found business objects 120 */ 121 public List<? extends BusinessObject> getSearchResults(Map<String, String> fieldValues) { 122 return getLookupableHelperService().getSearchResults(fieldValues); 123 } 124 125 /** 126 * @return the return url for each result row. 127 */ 128 public HtmlData getReturnUrl(BusinessObject bo, Map fieldConversions, String lookupImpl, BusinessObjectRestrictions businessObjectRestrictions) { 129 return getLookupableHelperService().getReturnUrl(bo, fieldConversions, lookupImpl, getReturnKeys(), businessObjectRestrictions); 130 } 131 132 /** 133 * @see Lookupable#getCreateNewUrl() 134 */ 135 public String getCreateNewUrl() { 136 String url = ""; 137 138 if (getLookupableHelperService().allowsMaintenanceNewOrCopyAction()) { 139 Properties parameters = new Properties(); 140 parameters.put(KRADConstants.DISPATCH_REQUEST_PARAMETER, KRADConstants.MAINTENANCE_NEW_METHOD_TO_CALL); 141 parameters.put(KRADConstants.BUSINESS_OBJECT_CLASS_ATTRIBUTE, this.businessObjectClass.getName()); 142 143 url = UrlFactory.parameterizeUrl(KRADConstants.MAINTENANCE_ACTION, parameters); 144 url = "<a title=\"Create a new record\" href=\"" + url + "\"><img src=\"images/tinybutton-createnew.gif\" alt=\"create new\" width=\"70\" height=\"15\"/></a>"; 145 } 146 147 return url; 148 } 149 150 151 /** 152 * @see Lookupable#getHtmlMenuBar() 153 */ 154 public String getHtmlMenuBar() { 155 return getBusinessObjectDictionaryService().getLookupMenuBar(getBusinessObjectClass()); 156 } 157 158 /** 159 * @see Lookupable#getSupplementalMenuBar() 160 */ 161 public String getSupplementalMenuBar() { 162 return getLookupableHelperService().getSupplementalMenuBar(); 163 } 164 165 /** 166 * @see Lookupable#getRows() 167 */ 168 public List<Row> getRows() { 169 return getLookupableHelperService().getRows(); 170 } 171 172 /** 173 * @see Lookupable#getTitle() 174 */ 175 public String getTitle() { 176 return getLookupableHelperService().getTitle(); 177 } 178 179 /** 180 * @see Lookupable#getReturnLocation() 181 */ 182 public String getReturnLocation() { 183 return getLookupableHelperService().getReturnLocation(); 184 } 185 186 /** 187 * @return Returns the dataObjectClass. 188 */ 189 public Class getBusinessObjectClass() { 190 return businessObjectClass; 191 } 192 193 /** 194 * @return a List of the names of fields which are marked in data dictionary as return fields. 195 */ 196 public List<String> getReturnKeys() { 197 return getLookupableHelperService().getReturnKeys(); 198 } 199 200 201 /** 202 * @see Lookupable#getExtraButtonSource() 203 */ 204 public String getExtraButtonSource() { 205 return getBusinessObjectDictionaryService().getExtraButtonSource(getBusinessObjectClass()); 206 } 207 208 /** 209 * @see Lookupable#getExtraButtonParams() 210 */ 211 public String getExtraButtonParams() { 212 return getBusinessObjectDictionaryService().getExtraButtonParams(getBusinessObjectClass()); 213 } 214 215 /** 216 * @return property names that will be used to sort on by default 217 */ 218 public List<String> getDefaultSortColumns() { 219 return getLookupableHelperService().getDefaultSortColumns(); 220 } 221 222 /** 223 * @see Lookupable#checkForAdditionalFields(java.util.Map) 224 */ 225 public boolean checkForAdditionalFields(Map<String, String> fieldValues) { 226 return getLookupableHelperService().checkForAdditionalFields(fieldValues); 227 } 228 229 /** 230 * @return Returns the backLocation. 231 */ 232 public String getBackLocation() { 233 return getLookupableHelperService().getBackLocation(); 234 } 235 236 /** 237 * @param backLocation The backLocation to set. 238 */ 239 public void setBackLocation(String backLocation) { 240 getLookupableHelperService().setBackLocation(backLocation); 241 } 242 243 /** 244 * @return Returns the docFormKey. 245 */ 246 public String getDocFormKey() { 247 return getLookupableHelperService().getDocFormKey(); 248 } 249 250 /** 251 * // this method is public because unit tests depend upon it 252 * @param docFormKey The docFormKey to set. 253 */ 254 public void setDocFormKey(String docFormKey) { 255 getLookupableHelperService().setDocFormKey(docFormKey); 256 } 257 258 /** 259 * @return Returns the businessObjectDictionaryService. 260 */ 261 protected BusinessObjectDictionaryService getBusinessObjectDictionaryService() { 262 return getLookupableHelperService().getBusinessObjectDictionaryService(); 263 } 264 265 /** 266 * @see Lookupable#setFieldConversions(java.util.Map) 267 */ 268 public void setFieldConversions(Map fieldConversions) { 269 getLookupableHelperService().setFieldConversions(fieldConversions); 270 } 271 272 /** 273 * @return Returns the dataDictionaryService. 274 */ 275 protected DataDictionaryService getDataDictionaryService() { 276 return getLookupableHelperService().getDataDictionaryService(); 277 } 278 279 280 /** 281 * Sets the readOnlyFieldsList attribute value. 282 * 283 * @param readOnlyFieldsList The readOnlyFieldsList to set. 284 */ 285 public void setReadOnlyFieldsList(List<String> readOnlyFieldsList) { 286 getLookupableHelperService().setReadOnlyFieldsList(readOnlyFieldsList); 287 } 288 289 290 public LookupableHelperService getLookupableHelperService() { 291 return lookupableHelperService; 292 } 293 294 295 /** 296 * Sets the lookupableHelperService attribute value. 297 * @param lookupableHelperService The lookupableHelperService to set. 298 */ 299 public void setLookupableHelperService(LookupableHelperService lookupableHelperService) { 300 this.lookupableHelperService = lookupableHelperService; 301 } 302 303 /** 304 * Performs a lookup that can only return one row. 305 * @see Lookupable#performLookup(org.kuali.rice.krad.web.struts.form.LookupForm, java.util.List, boolean) 306 */ 307 public Collection<? extends BusinessObject> performLookup(LookupForm lookupForm, List<ResultRow> resultTable, boolean bounded) { 308 return getLookupableHelperService().performLookup(lookupForm, resultTable, bounded); 309 } 310 311 312 public boolean isSearchUsingOnlyPrimaryKeyValues() { 313 return getLookupableHelperService().isSearchUsingOnlyPrimaryKeyValues(); 314 } 315 316 317 public String getPrimaryKeyFieldLabels() { 318 return getLookupableHelperService().getPrimaryKeyFieldLabels(); 319 } 320 321 /** 322 * calls the lookup helper service to do "clear" behaviors 323 * 324 * @see Lookupable#performClear() 325 */ 326 public void performClear(LookupForm lookupForm) { 327 getLookupableHelperService().performClear(lookupForm); 328 } 329 330 /** 331 * calls the lookup helper service to check if non maintenance actions should be displayed 332 * 333 * @see Lookupable#shouldDisplayHeaderNonMaintActions() 334 */ 335 public boolean shouldDisplayHeaderNonMaintActions() { 336 return getLookupableHelperService().shouldDisplayHeaderNonMaintActions(); 337 } 338 339 /** 340 * calls the lookup helper service to check if criteria should be displayed 341 * 342 * @see Lookupable#shouldDisplayLookupCriteria() 343 */ 344 public boolean shouldDisplayLookupCriteria() { 345 return getLookupableHelperService().shouldDisplayLookupCriteria(); 346 } 347 348 protected String getCreateNewUrl(String url){ 349 return "<a title=\"Create a new record\" href=\"" + url + "\"><img src=\"images/tinybutton-createnew.gif\" alt=\"create new\" width=\"70\" height=\"15\"/></a>"; 350 } 351 352 /** 353 * @see Lookupable#performCustomAction(boolean) 354 */ 355 public boolean performCustomAction(boolean ignoreErrors) { 356 return getLookupableHelperService().performCustomAction(ignoreErrors); 357 } 358 359 /** 360 * This overridden method ... 361 * 362 * @see Lookupable#getExtraField() 363 */ 364 public Field getExtraField() { 365 return getLookupableHelperService().getExtraField(); 366 } 367 368 /** 369 * This overridden method ... 370 * 371 * @see Lookupable#applyFieldAuthorizationsFromNestedLookups(org.kuali.rice.krad.web.ui.Field) 372 */ 373 public void applyFieldAuthorizationsFromNestedLookups(Field field) { 374 getLookupableHelperService().applyFieldAuthorizationsFromNestedLookups(field); 375 } 376 377 /** 378 * This overridden method returns the extraOnLoad variable. The 379 * varible is currently accessed in page.tag and is called in the onLoad. 380 * it allows us to inject javascript onload. 381 * 382 * @see Lookupable#getExtraOnLoad() 383 */ 384 public String getExtraOnLoad() { 385 return extraOnLoad; 386 } 387 388 /** 389 * @param extraOnLoad the extraOnLoad to set 390 */ 391 public void setExtraOnLoad(String extraOnLoad) { 392 this.extraOnLoad = extraOnLoad; 393 } 394 395 /** 396 * @see Lookupable#applyConditionalLogicForFieldDisplay() 397 */ 398 public void applyConditionalLogicForFieldDisplay() { 399 getLookupableHelperService().applyConditionalLogicForFieldDisplay(); 400 } 401 402}