001    package org.kuali.ole.catalog.rule;
002    
003    import org.kuali.ole.OLEConstants;
004    import org.kuali.ole.catalog.bo.OleLocationStatus;
005    import org.kuali.rice.krad.maintenance.MaintenanceDocument;
006    import org.kuali.rice.krad.rules.MaintenanceDocumentRuleBase;
007    
008    import java.util.HashMap;
009    import java.util.List;
010    import java.util.Map;
011    
012    /**
013     * OleLocationStatusRule validates maintenance object for Location Status Maintenance Document
014     */
015    public class OleLocationStatusRule extends MaintenanceDocumentRuleBase {
016    
017        /**
018         *
019         * @param document
020         * @return
021         */
022        @Override
023        protected boolean processCustomSaveDocumentBusinessRules(MaintenanceDocument document) {
024            boolean isValid = true;
025            OleLocationStatus oleLocationStatus = (OleLocationStatus) document.getNewMaintainableObject().getDataObject();
026    
027            isValid &= validateLocationStatusCode(oleLocationStatus);
028            return isValid;
029        }
030    
031        /**
032         *  This method  validates duplicate locationStatus Id and return boolean value.
033         * @param oleLocationStatus
034         * @return  boolean
035         */
036        private boolean validateLocationStatusCode(OleLocationStatus oleLocationStatus) {
037    
038            if (oleLocationStatus.getLocationStatusCode() != null) {
039    
040                Map<String, String> criteria = new HashMap<String, String>();
041    
042                criteria.put(OLEConstants.OleLocationStatus.LOCATION_STATUS_CD, oleLocationStatus.getLocationStatusCode());
043    
044                List<OleLocationStatus> locationStatusCodeInDatabase = (List<OleLocationStatus>) getBoService().findMatching(OleLocationStatus.class, criteria);
045    
046                if ((locationStatusCodeInDatabase.size() > 0)) {
047    
048                    for (OleLocationStatus locationStatusObj:locationStatusCodeInDatabase){
049                        String locationStatusId=locationStatusObj.getLocationStatusId();
050                        if(null == oleLocationStatus.getLocationStatusId() ||
051                                !(oleLocationStatus.getLocationStatusId().equalsIgnoreCase(locationStatusId))) {
052                            this.putFieldError(OLEConstants.OleLocationStatus.LOCATION_STATUS_CODE, "error.duplicate.code");
053                            return false;
054                        }
055                    }
056                }
057                return true;
058            }
059            return false;
060        }
061    }