001package org.kuali.ole.describe.rule;
002
003import org.kuali.ole.OLEConstants;
004import org.kuali.ole.describe.bo.OleBibliographicRecordStatus;
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: 12/27/12
016 * Time: 1:03 PM
017 * To change this template use File | Settings | File Templates.
018 */
019public class OleBibliographicRecordStatusRule extends MaintenanceDocumentRuleBase {
020
021
022    protected boolean processCustomSaveDocumentBusinessRules(MaintenanceDocument document) {
023        boolean isValid = true;
024        OleBibliographicRecordStatus oleBibliographicRecordStatusStatus = (OleBibliographicRecordStatus) document.getNewMaintainableObject().getDataObject();
025
026        isValid &= validateBibliographicRecordStatusCode(oleBibliographicRecordStatusStatus);
027        return isValid;
028    }
029
030    private boolean validateBibliographicRecordStatusCode(OleBibliographicRecordStatus oleBibliographicRecordStatus) {
031
032        if (oleBibliographicRecordStatus.getBibliographicRecordStatusCode() != null) {
033
034            Map<String, String> criteria = new HashMap<String, String>();
035
036            criteria.put(OLEConstants.OleBibliographicRecordStatus.BIBLIOGRAPHICRECORD_STATUS_CD, oleBibliographicRecordStatus.getBibliographicRecordStatusCode());
037
038            List<OleBibliographicRecordStatus> biblographicRecordStatusCodeInDatabase = (List<OleBibliographicRecordStatus>) getBoService().findMatching(OleBibliographicRecordStatus.class, criteria);
039
040            if ((biblographicRecordStatusCodeInDatabase.size() > 0)) {
041
042                for (OleBibliographicRecordStatus biblographicRecordStatusObj : biblographicRecordStatusCodeInDatabase) {
043                    String biblographicRecordStatusId = biblographicRecordStatusObj.getBibliographicRecordStatusId();
044                    if (null == oleBibliographicRecordStatus.getBibliographicRecordStatusId() ||
045                            !(biblographicRecordStatusId.equalsIgnoreCase(oleBibliographicRecordStatus.getBibliographicRecordStatusId()))) {
046                        this.putFieldError(OLEConstants.OleBibliographicRecordStatus.BIBLIOGRAPHICRECORD_STATUS_CODE, "error.duplicate.code");
047                        return false;
048                    }
049                }
050            }
051            return true;
052        }
053        return false;
054    }
055}