View Javadoc
1   /*
2    * Copyright 2007 The Kuali Foundation
3    * 
4    * Licensed under the Educational Community License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    * 
8    * http://www.opensource.org/licenses/ecl2.php
9    * 
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.ole.module.purap.document.validation.impl;
17  
18  import org.apache.commons.lang.StringUtils;
19  import org.kuali.ole.module.purap.PurapKeyConstants;
20  import org.kuali.ole.module.purap.businessobject.PurchaseOrderQuoteLanguage;
21  import org.kuali.rice.kns.document.MaintenanceDocument;
22  import org.kuali.rice.kns.maintenance.rules.MaintenanceDocumentRuleBase;
23  import org.kuali.rice.krad.service.BusinessObjectService;
24  import org.kuali.rice.krad.service.KRADServiceLocatorWeb;
25  
26  import java.util.HashMap;
27  import java.util.Map;
28  
29  /* 
30   * 
31  */
32  public class PurchaseOrderQuoteLanguageRule extends MaintenanceDocumentRuleBase {
33  
34      protected PurchaseOrderQuoteLanguage oldQuoteLanguage;
35      protected PurchaseOrderQuoteLanguage newQuoteLanguage;
36      protected BusinessObjectService boService;
37  
38      /**
39       * @see org.kuali.rice.kns.maintenance.rules.MaintenanceDocumentRuleBase#setupConvenienceObjects()
40       */
41      @Override
42      public void setupConvenienceObjects() {
43          oldQuoteLanguage = (PurchaseOrderQuoteLanguage) super.getOldBo();
44          // setup newDelegateChange convenience objects, make sure all possible sub-objects are populated
45          newQuoteLanguage = (PurchaseOrderQuoteLanguage) super.getNewBo();
46          boService = (BusinessObjectService) super.getBoService();
47          super.setupConvenienceObjects();
48      }
49  
50      protected boolean processCustomApproveDocumentBusinessRules(MaintenanceDocument document) {
51          LOG.info("processCustomApproveDocumentBusinessRules called");
52          this.setupConvenienceObjects();
53          boolean success = this.checkForDuplicate();
54          return success && super.processCustomApproveDocumentBusinessRules(document);
55      }
56  
57      protected boolean processCustomRouteDocumentBusinessRules(MaintenanceDocument document) {
58          LOG.info("processCustomRouteDocumentBusinessRules called");
59          this.setupConvenienceObjects();
60          boolean success = this.checkForDuplicate();
61          return success && super.processCustomRouteDocumentBusinessRules(document);
62      }
63  
64      protected boolean processCustomSaveDocumentBusinessRules(MaintenanceDocument document) {
65          LOG.info("processCustomSaveDocumentBusinessRules called");
66          this.setupConvenienceObjects();
67          boolean success = this.checkForDuplicate();
68          return success && super.processCustomSaveDocumentBusinessRules(document);
69      }
70  
71      protected boolean checkForDuplicate() {
72          LOG.info("checkForDuplicate called");
73          boolean success = true;
74          Map fieldValues = new HashMap();
75  
76          fieldValues.put("purchaseOrderQuoteLanguageDescription", newQuoteLanguage.getPurchaseOrderQuoteLanguageDescription());
77          fieldValues.put("purchaseOrderQuoteLanguageCreateDate", newQuoteLanguage.getPurchaseOrderQuoteLanguageCreateDate());
78  
79          if (oldQuoteLanguage != null && newQuoteLanguage != null &&
80                  newQuoteLanguage.getPurchaseOrderQuoteLanguageIdentifier() != null && oldQuoteLanguage.getPurchaseOrderQuoteLanguageIdentifier() != null &&
81                  newQuoteLanguage.getPurchaseOrderQuoteLanguageCreateDate() != null && oldQuoteLanguage.getPurchaseOrderQuoteLanguageCreateDate() != null &&
82                  StringUtils.equalsIgnoreCase(newQuoteLanguage.getPurchaseOrderQuoteLanguageDescription(), oldQuoteLanguage.getPurchaseOrderQuoteLanguageDescription()) &&
83                  newQuoteLanguage.getPurchaseOrderQuoteLanguageIdentifier().equals(oldQuoteLanguage.getPurchaseOrderQuoteLanguageIdentifier()) &&
84                  newQuoteLanguage.getPurchaseOrderQuoteLanguageCreateDate().equals(oldQuoteLanguage.getPurchaseOrderQuoteLanguageCreateDate())) {
85              success = true;
86          } else if ((KRADServiceLocatorWeb.getLegacyDataAdapter().findMatching(newQuoteLanguage.getClass(), fieldValues)).size() != 0) {
87              success &= false;
88              putGlobalError(PurapKeyConstants.PURAP_GENERAL_POTENTIAL_DUPLICATE);
89          }
90          return success;
91      }
92  }