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.ArrayList; 019 import java.util.List; 020 import java.util.Map; 021 022 import org.kuali.kfs.coa.businessobject.Account; 023 import org.kuali.kfs.sys.KFSConstants; 024 import org.kuali.kfs.sys.KFSPropertyConstants; 025 import org.kuali.kfs.sys.context.SpringContext; 026 import org.kuali.rice.kim.bo.Person; 027 import org.kuali.rice.kim.service.IdentityManagementService; 028 import org.kuali.rice.kns.bo.BusinessObject; 029 import org.kuali.rice.kns.lookup.HtmlData; 030 import org.kuali.rice.kns.lookup.KualiLookupableHelperServiceImpl; 031 import org.kuali.rice.kns.lookup.HtmlData.AnchorHtmlData; 032 import org.kuali.rice.kns.util.GlobalVariables; 033 import org.kuali.rice.kns.util.KNSConstants; 034 035 /** 036 * This class overrids the base getActionUrls method 037 */ 038 public class KualiAccountLookupableHelperServiceImpl extends KualiLookupableHelperServiceImpl { 039 040 ThreadLocal<Person> currentUser = new ThreadLocal<Person>(); 041 042 /** 043 * If the account is not closed or the user is an Administrator the "edit" link is added The "copy" link is added for Accounts 044 * 045 * @returns links to edit and copy maintenance action for the current maintenance record. 046 * @see org.kuali.rice.kns.lookup.AbstractLookupableHelperServiceImpl#getCustomActionUrls(org.kuali.rice.kns.bo.BusinessObject, 047 * java.util.List) 048 */ 049 @Override 050 public List<HtmlData> getCustomActionUrls(BusinessObject businessObject, List pkNames) { 051 StringBuffer actions = new StringBuffer(); 052 Account theAccount = (Account) businessObject; 053 List<HtmlData> anchorHtmlDataList = new ArrayList<HtmlData>(); 054 Person user = currentUser.get(); 055 if (user == null) { 056 user = GlobalVariables.getUserSession().getPerson(); 057 currentUser.set(user); 058 } 059 AnchorHtmlData urlDataCopy = getUrlData(businessObject, KNSConstants.MAINTENANCE_COPY_METHOD_TO_CALL, pkNames); 060 061 if (theAccount.isActive()) { 062 anchorHtmlDataList.add(getUrlData(businessObject, KNSConstants.MAINTENANCE_EDIT_METHOD_TO_CALL, pkNames)); 063 } 064 else { 065 String principalId = user.getPrincipalId(); 066 String namespaceCode = KFSConstants.ParameterNamespaces.CHART; 067 String permissionName = KFSConstants.PermissionNames.EDIT_INACTIVE_ACCOUNT; 068 069 IdentityManagementService identityManagementService = SpringContext.getBean(IdentityManagementService.class); 070 Boolean isAuthorized = identityManagementService.hasPermission(principalId, namespaceCode, permissionName, null); 071 072 if (isAuthorized) { 073 anchorHtmlDataList.add(getUrlData(businessObject, KNSConstants.MAINTENANCE_EDIT_METHOD_TO_CALL, pkNames)); 074 } 075 else { 076 urlDataCopy.setPrependDisplayText(" "); 077 } 078 } 079 anchorHtmlDataList.add(urlDataCopy); 080 081 return anchorHtmlDataList; 082 } 083 084 /** 085 * Overridden to changed the "closed" parameter to an "active" parameter 086 * 087 * @see org.kuali.rice.kns.lookup.KualiLookupableHelperServiceImpl#getSearchResults(java.util.Map) 088 */ 089 @Override 090 public List<? extends BusinessObject> getSearchResults(Map<String, String> parameters) { 091 if (parameters.containsKey(KFSPropertyConstants.CLOSED)) { 092 final String closedValue = parameters.get(KFSPropertyConstants.CLOSED); 093 094 if (closedValue != null && closedValue.length() != 0) { 095 if ("Y1T".indexOf(closedValue) > -1) { 096 parameters.put(KFSPropertyConstants.ACTIVE, "N"); 097 } 098 else if ("N0F".indexOf(closedValue) > -1) { 099 parameters.put(KFSPropertyConstants.ACTIVE, "Y"); 100 } 101 } 102 103 parameters.remove(KFSPropertyConstants.CLOSED); 104 } 105 return super.getSearchResults(parameters); 106 } 107 108 109 }