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}