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.sec.util; 017 018 import java.util.List; 019 020 import org.kuali.kfs.sec.SecConstants; 021 import org.kuali.kfs.sec.service.AccessSecurityService; 022 import org.kuali.kfs.sys.KFSConstants; 023 import org.kuali.kfs.sys.businessobject.AccountingLine; 024 import org.kuali.kfs.sys.businessobject.GeneralLedgerPendingEntry; 025 import org.kuali.kfs.sys.businessobject.SourceAccountingLine; 026 import org.kuali.kfs.sys.context.SpringContext; 027 import org.kuali.kfs.sys.document.AccountingDocument; 028 import org.kuali.rice.kns.document.Document; 029 import org.kuali.rice.kns.service.KualiConfigurationService; 030 import org.kuali.rice.kns.util.GlobalVariables; 031 032 033 public class SecUtil { 034 035 /** 036 * Compares the size of the given list against the given previous size and if different adds an info message 037 * 038 * @param previousListSize int giving previous size of list to compare to 039 * @param results List to get size for and compare 040 * @param messageKey String key of message that should be added 041 */ 042 @SuppressWarnings("rawtypes") 043 public static void compareListSizeAndAddMessageIfChanged(int previousListSize, List results, String messageKey) { 044 int currentListSize = results.size(); 045 046 if (previousListSize != currentListSize) { 047 GlobalVariables.getMessageMap().putInfo(KFSConstants.GLOBAL_MESSAGES, messageKey, (String) null); 048 } 049 } 050 051 /** 052 * Calls access security service to check view access on given GLPE for current user. Access to view the GLPE on the document should be related to the view permissions for an 053 * accounting line with the same account attributes. Called from generalLedgerPendingEntries.tag 054 * 055 * @param pendingEntry GeneralLedgerPendingEntry to check access for 056 * @return boolean true if current user has view permission, false otherwise 057 */ 058 public static boolean canViewGLPE(Document document, GeneralLedgerPendingEntry pendingEntry) { 059 boolean canView = true; 060 061 // If the module has not been loaded, then just skip any further checks as the services will not be defined 062 if ( SpringContext.getBean(KualiConfigurationService.class).getPropertyAsBoolean(SecConstants.ACCESS_SECURITY_MODULE_ENABLED_PROPERTY_NAME) ) { 063 if (document instanceof AccountingDocument) { 064 AccountingLine line = new SourceAccountingLine(); 065 066 line.setPostingYear(pendingEntry.getUniversityFiscalYear()); 067 line.setChartOfAccountsCode(pendingEntry.getChartOfAccountsCode()); 068 line.setAccountNumber(pendingEntry.getAccountNumber()); 069 line.setSubAccountNumber(pendingEntry.getSubAccountNumber()); 070 line.setFinancialObjectCode(pendingEntry.getFinancialObjectCode()); 071 line.setFinancialSubObjectCode(pendingEntry.getFinancialSubObjectCode()); 072 line.setProjectCode(pendingEntry.getProjectCode()); 073 074 line.refreshNonUpdateableReferences(); 075 076 canView = SpringContext.getBean(AccessSecurityService.class).canViewDocumentAccountingLine((AccountingDocument) document, line, GlobalVariables.getUserSession().getPerson()); 077 } 078 } 079 080 return canView; 081 } 082 }