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    }