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.module.cam.document.authorization;
017
018 import java.util.HashMap;
019 import java.util.List;
020 import java.util.Map;
021
022 import org.kuali.kfs.module.cam.document.AssetPaymentDocument;
023 import org.kuali.kfs.sys.KFSConstants;
024 import org.kuali.kfs.sys.businessobject.AccountingLine;
025 import org.kuali.kfs.sys.document.AccountingDocument;
026 import org.kuali.kfs.sys.document.authorization.AccountingLineAuthorizerBase;
027 import org.kuali.kfs.sys.document.web.AccountingLineRenderingContext;
028 import org.kuali.kfs.sys.document.web.AccountingLineViewAction;
029 import org.kuali.rice.kim.bo.Person;
030 import org.kuali.rice.kns.util.KNSConstants;
031
032 public class AssetPaymentAccountingLineAuthorizer extends AccountingLineAuthorizerBase {
033
034 /**
035 * @see org.kuali.kfs.sys.document.authorization.AccountingLineAuthorizerBase#determineEditPermissionOnField(org.kuali.kfs.sys.document.AccountingDocument,
036 * org.kuali.kfs.sys.businessobject.AccountingLine, java.lang.String, java.lang.String)
037 */
038 @Override
039 public boolean determineEditPermissionOnField(AccountingDocument accountingDocument, AccountingLine accountingLine, String accountingLineCollectionProperty, String fieldName, boolean editablePage) {
040 AssetPaymentDocument assetPaymentDocument = (AssetPaymentDocument) accountingDocument;
041 if (assetPaymentDocument.isCapitalAssetBuilderOriginIndicator()) {
042 return false;
043 }
044
045 return super.determineEditPermissionOnField(accountingDocument, accountingLine, accountingLineCollectionProperty, fieldName, editablePage);
046 }
047
048 /**
049 * @see org.kuali.kfs.sys.document.authorization.AccountingLineAuthorizerBase#isGroupReadOnly(org.kuali.kfs.sys.document.AccountingDocument,
050 * java.lang.String, org.kuali.rice.kim.bo.Person)
051 */
052 @Override
053 public boolean isGroupEditable(AccountingDocument accountingDocument, List<? extends AccountingLineRenderingContext> accountingLineRenderingContexts, Person currentUser) {
054 AssetPaymentDocument assetPaymentDocument = (AssetPaymentDocument) accountingDocument;
055 if (assetPaymentDocument.isCapitalAssetBuilderOriginIndicator()) {
056 return false;
057 }
058
059 return super.isGroupEditable(accountingDocument, accountingLineRenderingContexts, currentUser);
060 }
061
062 @Override
063 protected Map<String, AccountingLineViewAction> getActionMap(AccountingLineRenderingContext accountingLineRenderingContext, String accountingLinePropertyName, Integer accountingLineIndex, String groupTitle) {
064 boolean isFromCab = false;
065 AccountingDocument accountingDocument = accountingLineRenderingContext.getAccountingDocument();
066 if (accountingDocument != null && AssetPaymentDocument.class.isAssignableFrom(accountingDocument.getClass())) {
067 isFromCab = ((AssetPaymentDocument) accountingDocument).isCapitalAssetBuilderOriginIndicator();
068 }
069 Map<String, AccountingLineViewAction> actionMap = new HashMap<String, AccountingLineViewAction>();
070
071 if (accountingLineIndex == null || accountingLineIndex < 0) {
072 AccountingLineViewAction addAction = this.getAddAction(accountingLineRenderingContext.getAccountingLine(), accountingLinePropertyName, groupTitle);
073 actionMap.put(KFSConstants.INSERT_METHOD, addAction);
074 }
075 else {
076 if (!isFromCab && accountingLineRenderingContext.allowDelete()) {
077 AccountingLineViewAction deleteAction = this.getDeleteAction(accountingLineRenderingContext.getAccountingLine(), accountingLinePropertyName, accountingLineIndex, groupTitle);
078 actionMap.put(KNSConstants.DELETE_METHOD, deleteAction);
079 }
080
081 AccountingLineViewAction balanceInquiryAction = this.getBalanceInquiryAction(accountingLineRenderingContext.getAccountingLine(), accountingLinePropertyName, accountingLineIndex, groupTitle);
082 actionMap.put(KFSConstants.PERFORMANCE_BALANCE_INQUIRY_FOR_METHOD, balanceInquiryAction);
083 }
084
085 return actionMap;
086 }
087 }