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.purap.document.validation.impl; 017 018 import java.util.HashMap; 019 import java.util.Map; 020 021 import org.apache.commons.lang.StringUtils; 022 import org.kuali.kfs.module.purap.PurapKeyConstants; 023 import org.kuali.kfs.module.purap.businessobject.PurchaseOrderQuoteLanguage; 024 import org.kuali.rice.kns.document.MaintenanceDocument; 025 import org.kuali.rice.kns.maintenance.rules.MaintenanceDocumentRuleBase; 026 import org.kuali.rice.kns.service.BusinessObjectService; 027 028 /* 029 * 030 */ 031 public class PurchaseOrderQuoteLanguageRule extends MaintenanceDocumentRuleBase { 032 033 protected PurchaseOrderQuoteLanguage oldQuoteLanguage; 034 protected PurchaseOrderQuoteLanguage newQuoteLanguage; 035 protected BusinessObjectService boService; 036 037 /** 038 * @see org.kuali.rice.kns.maintenance.rules.MaintenanceDocumentRuleBase#setupConvenienceObjects() 039 */ 040 @Override 041 public void setupConvenienceObjects() { 042 oldQuoteLanguage = (PurchaseOrderQuoteLanguage) super.getOldBo(); 043 // setup newDelegateChange convenience objects, make sure all possible sub-objects are populated 044 newQuoteLanguage = (PurchaseOrderQuoteLanguage) super.getNewBo(); 045 boService = (BusinessObjectService) super.getBoService(); 046 super.setupConvenienceObjects(); 047 } 048 049 protected boolean processCustomApproveDocumentBusinessRules(MaintenanceDocument document) { 050 LOG.info("processCustomApproveDocumentBusinessRules called"); 051 this.setupConvenienceObjects(); 052 boolean success = this.checkForDuplicate(); 053 return success && super.processCustomApproveDocumentBusinessRules(document); 054 } 055 056 protected boolean processCustomRouteDocumentBusinessRules(MaintenanceDocument document) { 057 LOG.info("processCustomRouteDocumentBusinessRules called"); 058 this.setupConvenienceObjects(); 059 boolean success = this.checkForDuplicate(); 060 return success && super.processCustomRouteDocumentBusinessRules(document); 061 } 062 063 protected boolean processCustomSaveDocumentBusinessRules(MaintenanceDocument document) { 064 LOG.info("processCustomSaveDocumentBusinessRules called"); 065 this.setupConvenienceObjects(); 066 boolean success = this.checkForDuplicate(); 067 return success && super.processCustomSaveDocumentBusinessRules(document); 068 } 069 070 protected boolean checkForDuplicate() { 071 LOG.info("checkForDuplicate called"); 072 boolean success = true; 073 Map fieldValues = new HashMap(); 074 075 fieldValues.put("purchaseOrderQuoteLanguageDescription", newQuoteLanguage.getPurchaseOrderQuoteLanguageDescription()); 076 fieldValues.put("purchaseOrderQuoteLanguageCreateDate", newQuoteLanguage.getPurchaseOrderQuoteLanguageCreateDate()); 077 078 if (oldQuoteLanguage != null && newQuoteLanguage != null && 079 newQuoteLanguage.getPurchaseOrderQuoteLanguageIdentifier() != null && oldQuoteLanguage.getPurchaseOrderQuoteLanguageIdentifier() != null && 080 newQuoteLanguage.getPurchaseOrderQuoteLanguageCreateDate() != null && oldQuoteLanguage.getPurchaseOrderQuoteLanguageCreateDate() != null && 081 StringUtils.equalsIgnoreCase(newQuoteLanguage.getPurchaseOrderQuoteLanguageDescription(),oldQuoteLanguage.getPurchaseOrderQuoteLanguageDescription()) && 082 newQuoteLanguage.getPurchaseOrderQuoteLanguageIdentifier().equals(oldQuoteLanguage.getPurchaseOrderQuoteLanguageIdentifier()) && 083 newQuoteLanguage.getPurchaseOrderQuoteLanguageCreateDate().equals(oldQuoteLanguage.getPurchaseOrderQuoteLanguageCreateDate())){ 084 success = true; 085 }else if (boService.countMatching(newQuoteLanguage.getClass(), fieldValues) != 0) { 086 success &= false; 087 putGlobalError(PurapKeyConstants.PURAP_GENERAL_POTENTIAL_DUPLICATE); 088 } 089 return success; 090 } 091 }