001package org.kuali.ole.select.rule;
002
003import org.kuali.ole.OLEConstants;
004import org.kuali.ole.select.bo.OleAgreementStatus;
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 * Created with IntelliJ IDEA.
014 * User: ?
015 * Date: 3/21/13
016 * Time: 1:17 PM
017 * To change this template use File | Settings | File Templates.
018 */
019public class OleAgreementStatusRule extends MaintenanceDocumentRuleBase {
020
021    protected boolean processCustomSaveDocumentBusinessRules(MaintenanceDocument document) {
022        boolean isValid = true;
023        OleAgreementStatus oleAgreementStatus = (OleAgreementStatus) document.getNewMaintainableObject().getDataObject();
024
025        isValid &= validateOleAgreementStatusName(oleAgreementStatus);
026        return isValid;
027    }
028
029    /**
030     * This method  validates duplicate Agreement status Id and return boolean value.
031     *
032     * @param oleAgreementStatus
033     * @return boolean
034     */
035    private boolean validateOleAgreementStatusName(OleAgreementStatus oleAgreementStatus) {
036
037        if (oleAgreementStatus.getAgreementStatusName() != null) {
038            Map<String, String> criteria = new HashMap<String, String>();
039            criteria.put(OLEConstants.OleAgreementStatusRule.AGR_STATUS_NAME, oleAgreementStatus.getAgreementStatusName());
040            List<OleAgreementStatus> savedOleAgreementStatus = (List<OleAgreementStatus>) getBoService().findMatching(OleAgreementStatus.class, criteria);
041            if ((savedOleAgreementStatus.size() > 0)) {
042                for (OleAgreementStatus agreementStatus : savedOleAgreementStatus) {
043                    String agreementStatusId = agreementStatus.getAgreementStatusId();
044                    if (null == oleAgreementStatus.getAgreementStatusId() || (!oleAgreementStatus.getAgreementStatusId().equalsIgnoreCase(agreementStatusId))) {
045                        this.putFieldError(OLEConstants.OleAgreementStatusRule.AGR_STATUS_NAME_FIELD, OLEConstants.ERROR_DUPLICATE_CODE);
046                        return false;
047                    }
048                }
049            }
050        }
051        return true;
052    }
053}