View Javadoc
1   package org.kuali.ole.select.rule;
2   
3   import org.apache.commons.lang3.StringUtils;
4   import org.apache.commons.collections.CollectionUtils;
5   import org.kuali.ole.OLEConstants;
6   import org.kuali.ole.select.bo.OLEAccessActivationConfiguration;
7   import org.kuali.ole.select.bo.OLEAccessActivationWorkFlow;
8   import org.kuali.rice.kim.api.identity.Person;
9   import org.kuali.rice.kim.api.identity.PersonService;
10  import org.kuali.rice.kim.api.services.KimApiServiceLocator;
11  import org.kuali.rice.kim.impl.role.RoleBo;
12  import org.kuali.rice.krad.maintenance.MaintenanceDocument;
13  import org.kuali.rice.krad.rules.MaintenanceDocumentRuleBase;
14  import org.kuali.rice.krad.util.GlobalVariables;
15  
16  import java.util.ArrayList;
17  import java.util.HashMap;
18  import java.util.List;
19  import java.util.Map;
20  
21  /**
22   * Created by hemalathas on 12/17/14.
23   */
24  
25  public class OLEAccessActivationConfigurationRule extends MaintenanceDocumentRuleBase {
26  
27      private PersonService personService;
28  
29      public PersonService getPersonService() {
30      if(personService == null){
31          personService = KimApiServiceLocator.getPersonService();
32      }
33          return personService;
34      }
35  
36  
37      public void setPersonService(PersonService personService) {
38          this.personService = personService;
39      }
40  
41      @Override
42      protected boolean processCustomSaveDocumentBusinessRules(MaintenanceDocument document) {
43          boolean isValid = true;
44          OLEAccessActivationConfiguration accessConfiguration = (OLEAccessActivationConfiguration) document.getNewMaintainableObject().getDataObject();
45          //OLERoleBo rolebo = (OLERoleBo ) document.getNewMaintainableObject().getDataObject()
46          isValid &= validateUniqueAccessName(accessConfiguration);
47          isValid &= validateAccessActivationWorkflows(accessConfiguration);
48          isValid &= validateUniqueStatus(accessConfiguration);
49          return isValid;
50      }
51  
52      public boolean validateUniqueAccessName(OLEAccessActivationConfiguration accessConfiguration) {
53          if (StringUtils.isNotBlank(accessConfiguration.getWorkflowName())) {
54              Map<String, String> criteria = new HashMap<String, String>();
55              criteria.put(OLEConstants.ACCESS_NAME, accessConfiguration.getWorkflowName());
56              List<OLEAccessActivationConfiguration> dataSourceNameInDatabaseAccessName = (List<OLEAccessActivationConfiguration>) getBoService().findMatching(OLEAccessActivationConfiguration.class, criteria);
57              if (dataSourceNameInDatabaseAccessName.size() > 0) {
58                  for (OLEAccessActivationConfiguration oleConfigurationName : dataSourceNameInDatabaseAccessName) {
59                      String accessActivationConfigurationId = oleConfigurationName.getAccessActivationConfigurationId();
60                      if (null == accessConfiguration.getAccessActivationConfigurationId() || (!accessConfiguration.getAccessActivationConfigurationId().equalsIgnoreCase(accessActivationConfigurationId))) {
61                          GlobalVariables.getMessageMap().putError(OLEConstants.ACCESS_NAME_FIELD, OLEConstants.ERROR_DUPLICATE_WORKFLOW_NAME);
62                          return false;
63                      }
64                  }
65              }
66          }
67          return true;
68      }
69  
70      public boolean validateUniqueOrderNo(OLEAccessActivationConfiguration accessConfiguration) {
71          if (accessConfiguration.getAccessActivationWorkflowList() != null) {
72              List<Integer> orderNos = new ArrayList<>();
73              for (OLEAccessActivationWorkFlow workflow : accessConfiguration.getAccessActivationWorkflowList()) {
74                  if (!orderNos.contains(workflow.getOrderNo())){
75                      orderNos.add(workflow.getOrderNo());
76                  }else {
77                      GlobalVariables.getMessageMap().putError(OLEConstants.ORDER_NO_FIELD, OLEConstants.ERROR_DUPLICATE_ORDER_NO_FOUND);
78                      return false;
79                  }
80              }
81          }
82          return true;
83      }
84  
85      public boolean validateUniqueStatus(OLEAccessActivationConfiguration accessConfiguration) {
86          if (accessConfiguration.getAccessActivationWorkflowList() != null) {
87              List<String> statusList = new ArrayList<>();
88              for (OLEAccessActivationWorkFlow workflow : accessConfiguration.getAccessActivationWorkflowList()) {
89                  if (!statusList.contains(workflow.getStatus())){
90                      statusList.add(workflow.getStatus());
91                  }else {
92                      GlobalVariables.getMessageMap().putError(OLEConstants.ORDER_NO_FIELD, OLEConstants.ERROR_DUPLICATE_STATUS_FOUND);
93                      return false;
94                  }
95              }
96          }
97          return true;
98      }
99  
100 
101     private boolean validateAccessActivationWorkflows(OLEAccessActivationConfiguration accessConfiguration) {
102         boolean isValid = true;
103         if (CollectionUtils.isEmpty(accessConfiguration.getAccessActivationWorkflowList())) {
104             GlobalVariables.getMessageMap().putError(OLEConstants.ACCESS_NAME_FIELD, OLEConstants.ERROR_ATLEAST_ONE_WORKFLOW);
105             isValid = false;
106         }else {
107             isValid &= validateUniqueOrderNo(accessConfiguration);
108 
109         }
110         return isValid;
111     }
112 }