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}