001    package org.kuali.ole.catalog.rule;
002    
003    
004    import org.kuali.ole.OLEConstants;
005    import org.kuali.ole.catalog.bo.OleAcquisitionMethod;
006    import org.kuali.rice.krad.maintenance.MaintenanceDocument;
007    import org.kuali.rice.krad.rules.MaintenanceDocumentRuleBase;
008    
009    import java.util.HashMap;
010    import java.util.List;
011    import java.util.Map;
012    
013    /**
014     *  OleAcquisitionMethodsRule validates maintenance object for Acquisition Method Maintenance Document
015     */
016    public class OleAcquisitionMethodsRule extends MaintenanceDocumentRuleBase {
017    
018        @Override
019        protected boolean processCustomSaveDocumentBusinessRules(MaintenanceDocument document) {
020            boolean isValid = true;
021            OleAcquisitionMethod acquisitionMethod = (OleAcquisitionMethod) document.getNewMaintainableObject().getDataObject();
022    
023            isValid &= validateAcquisitionCodeMethod(acquisitionMethod);
024            return isValid;
025        }
026    
027        /**
028         *   This method  validates duplicate acquisitionMethod Id and return boolean value.
029         * @param acquisitionMethod
030         * @return boolean
031         */
032        private boolean validateAcquisitionCodeMethod(OleAcquisitionMethod acquisitionMethod) {
033    
034            if (acquisitionMethod.getAcquisitionMethodCode() != null) {
035                Map<String, String> criteria = new HashMap<String, String>();
036                criteria.put(OLEConstants.OleAcquisitionMethod.ACQUISITION_METHOD_CD, acquisitionMethod.getAcquisitionMethodCode());
037                List<OleAcquisitionMethod> acquisitionMethodInDatabase = (List<OleAcquisitionMethod>) getBoService().findMatching(OleAcquisitionMethod.class, criteria);
038                if ((acquisitionMethodInDatabase.size() > 0)) {
039                    for (OleAcquisitionMethod acquisitionObj : acquisitionMethodInDatabase) {
040                        Integer acquisitionMethodId = acquisitionObj.getAcquisitionMethodId();
041                        if (null == acquisitionMethod.getAcquisitionMethodId() || (acquisitionMethod.getAcquisitionMethodId().intValue() != acquisitionMethodId.intValue())) {
042                            this.putFieldError(OLEConstants.OleAcquisitionMethod.ACQUISITION_METHOD_CODE, "error.duplicate.code");
043                            return false;
044                        }
045                    }
046                }
047            }
048            return true;
049        }
050    }