1 package org.kuali.ole.deliver.rule;
2
3 import org.kuali.ole.OLEConstants;
4 import org.kuali.ole.deliver.bo.OleFeeType;
5 import org.kuali.ole.deliver.bo.OleSourceBo;
6 import org.kuali.rice.core.api.criteria.QueryByCriteria;
7 import org.kuali.rice.krad.maintenance.MaintenanceDocument;
8 import org.kuali.rice.krad.rules.MaintenanceDocumentRuleBase;
9 import org.kuali.rice.krad.service.KRADServiceLocator;
10
11 import java.util.HashMap;
12 import java.util.List;
13 import java.util.Map;
14
15
16
17
18
19
20
21
22 public class OleSourceRule extends MaintenanceDocumentRuleBase {
23
24 protected boolean processCustomSaveDocumentBusinessRules(MaintenanceDocument document) {
25 boolean isValid = true;
26
27 isValid &= validateOleMaterialTypeCode(document);
28 return isValid;
29 }
30
31
32 private boolean validateOleMaterialTypeCode(MaintenanceDocument document) {
33 OleSourceBo oleSourceBo = (OleSourceBo) document.getNewMaintainableObject().getDataObject();
34 if (oleSourceBo.getOleSourceCode() != null) {
35 Map<String, String> criteria = new HashMap<String, String>();
36 criteria.put(OLEConstants.OleSourceBo.SOURCE_CODE, oleSourceBo.getOleSourceCode());
37 List<OleSourceBo> oleSourceBoList = (List<OleSourceBo>) KRADServiceLocator.getDataObjectService().findMatching(OleSourceBo.class, QueryByCriteria.Builder.andAttributes(criteria).build()).getResults();
38 if ((oleSourceBoList.size() > 0) && !document.getNewMaintainableObject().getMaintenanceAction().equals("Edit")) {
39 for (OleSourceBo sourceBo : oleSourceBoList) {
40 String sourceId = sourceBo.getOleSourceId();
41 if (null == oleSourceBo.getOleSourceId() || (!oleSourceBo.getOleSourceId().equalsIgnoreCase(sourceId))) {
42 this.putFieldError(OLEConstants.OleSourceBo.SOURCE_CODE_FIELD, OLEConstants.OleSourceBo.ERROR_SOURCE_CODE);
43 return false;
44 }
45 }
46 }
47 }
48 return true;
49 }
50 }