001package org.kuali.ole.describe.rule; 002 003import org.kuali.ole.OLEConstants; 004import org.kuali.ole.describe.bo.OleEncodingLevel; 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 * OleEncodingLevelRule validates maintenance object for Encoding Level Maintenance Document 014 */ 015public class OleEncodingLevelRule extends MaintenanceDocumentRuleBase { 016 017 018 protected boolean processCustomSaveDocumentBusinessRules(MaintenanceDocument document) { 019 boolean isValid = true; 020 OleEncodingLevel oleEncodingLevel = (OleEncodingLevel) document.getNewMaintainableObject().getDataObject(); 021 022 isValid &= validateEncodingLevelCode(oleEncodingLevel); 023 return isValid; 024 } 025 026 /** 027 * This method validates duplicate encodingLevel Id and return boolean value. 028 * 029 * @param oleEncodingLevel 030 * @return boolean 031 */ 032 private boolean validateEncodingLevelCode(OleEncodingLevel oleEncodingLevel) { 033 034 if (oleEncodingLevel.getEncodingLevelCode() != null) { 035 036 Map<String, String> criteria = new HashMap<String, String>(); 037 038 criteria.put(OLEConstants.OleEncodingLevel.ENCODING_LEVEL_CD, oleEncodingLevel.getEncodingLevelCode()); 039 040 041 List<OleEncodingLevel> encodingLevelInDatabase = (List<OleEncodingLevel>) getBoService().findMatching(OleEncodingLevel.class, criteria); 042 043 if ((encodingLevelInDatabase.size() > 0)) { 044 for (OleEncodingLevel oleEncodingLevelObj : encodingLevelInDatabase) { 045 Integer encodingLevelId = oleEncodingLevelObj.getEncodingLevelId(); 046 if (null == oleEncodingLevel.getEncodingLevelId() || oleEncodingLevel.getEncodingLevelId().intValue() != encodingLevelId) { 047 this.putFieldError(OLEConstants.OleEncodingLevel.ENCODING_LEVEL_CODE, "error.duplicate.code"); 048 return false; 049 } 050 } 051 } 052 } 053 054 return true; 055 } 056}