001 /* 002 * Copyright 2011 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.kfs.coa.businessobject.lookup; 017 018 import java.util.List; 019 import java.util.Map; 020 import java.util.Properties; 021 022 import org.kuali.kfs.coa.businessobject.AccountDelegateGlobal; 023 import org.kuali.kfs.sys.KFSConstants; 024 import org.kuali.rice.kns.authorization.BusinessObjectRestrictions; 025 import org.kuali.rice.kns.bo.BusinessObject; 026 import org.kuali.rice.kns.lookup.HtmlData; 027 import org.kuali.rice.kns.lookup.KualiLookupableHelperServiceImpl; 028 import org.kuali.rice.kns.util.UrlFactory; 029 import org.kuali.rice.kns.web.struts.form.LookupForm; 030 031 /** 032 * This class overrides the getBackLocation, getReturnUrl, setFieldConversions and getActionUrls for 033 * {@link OrganizationRoutingModelName} 034 */ 035 public class OrganizationRoutingModelNameLookupableHelperServiceImpl extends KualiLookupableHelperServiceImpl { 036 private boolean initializingDelegate = true; 037 038 /** 039 * Overrides the base implementation to always return to {@link KFSConstants.MAINTENANCE_ACTION} 040 * 041 * @see org.kuali.rice.kns.lookup.AbstractLookupableHelperServiceImpl#getBackLocation() 042 */ 043 @Override 044 public String getBackLocation() { 045 // it doesn't really matter what the backLocation is set to; we're 046 // always going to return to the maintenance screen 047 return KFSConstants.MAINTENANCE_ACTION; 048 } 049 050 /** 051 * Overrides the base implementation to add in new parameters to the return url 052 * <ul> 053 * <li>{@link KFSConstants.DISPATCH_REQUEST_PARAMETER}</li> 054 * <li>{@link KFSConstants.BUSINESS_OBJECT_CLASS_ATTRIBUTE}</li> 055 * <li>{@link KFSConstants.OVERRIDE_KEYS}</li> 056 * </ul> 057 * {@link KFSConstants.DISPATCH_REQUEST_PARAMETER} 058 * 059 * @see org.kuali.rice.kns.lookup.AbstractLookupableHelperServiceImpl#getReturnUrl(org.kuali.rice.kns.bo.BusinessObject, java.util.Map, 060 * java.lang.String) 061 */ 062 @Override 063 public HtmlData getReturnUrl(BusinessObject businessObject, LookupForm lookupForm, List returnKeys, BusinessObjectRestrictions businessObjectRestrictions) { 064 Properties parameters = getParameters(businessObject, lookupForm.getFieldConversions(), lookupForm.getLookupableImplServiceName(), returnKeys); 065 parameters.put(KFSConstants.DISPATCH_REQUEST_PARAMETER, KFSConstants.MAINTENANCE_NEWWITHEXISTING_ACTION); 066 parameters.put(KFSConstants.BUSINESS_OBJECT_CLASS_ATTRIBUTE, AccountDelegateGlobal.class.getName()); 067 parameters.put(KFSConstants.OVERRIDE_KEYS, "modelName" + KFSConstants.FIELD_CONVERSIONS_SEPERATOR + "modelChartOfAccountsCode" + KFSConstants.FIELD_CONVERSIONS_SEPERATOR + "modelOrganizationCode"); 068 setBackLocation(KFSConstants.MAINTENANCE_ACTION); 069 return getReturnAnchorHtmlData(businessObject, parameters, lookupForm, returnKeys, businessObjectRestrictions); 070 } 071 072 /** 073 * Overrides base implementation to determine whether or not we are dealing with looking up the model or editing it 074 * 075 * @see org.kuali.rice.kns.lookup.AbstractLookupableHelperServiceImpl#setFieldConversions(java.util.Map) 076 */ 077 @Override 078 public void setFieldConversions(Map fieldConversions) { 079 super.setFieldConversions(fieldConversions); 080 if (fieldConversions == null || fieldConversions.size() == 0) { 081 // if we don't have any field conversions, then we must be 082 // actually dealing with the model, instead of looking up the model 083 // in order to initalize a new global account delegate 084 // 085 // yeah, it's a hack...but at least a semi-clever hack 086 initializingDelegate = false; 087 } 088 } 089 090 /** 091 * Overrides base implementation to remove the action urls if we are initializing the delegate model 092 * 093 * @see org.kuali.rice.kns.lookup.AbstractLookupableHelperServiceImpl#getCustomActionUrls(org.kuali.rice.kns.bo.BusinessObject, java.util.List) 094 */ 095 @Override 096 public List<HtmlData> getCustomActionUrls(BusinessObject businessObject, List pkNames) { 097 if (!initializingDelegate) { 098 return super.getCustomActionUrls(businessObject, pkNames); 099 } 100 else { 101 return super.getEmptyActionUrls(); 102 } 103 } 104 }