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