View Javadoc
1   package org.kuali.ole.describe.controller;
2   
3   import org.kuali.ole.OLEConstants;
4   import org.kuali.ole.describe.bo.OleAccessMethod;
5   import org.kuali.rice.core.api.criteria.QueryByCriteria;
6   import org.kuali.rice.core.api.util.RiceKeyConstants;
7   import org.kuali.rice.krad.bo.AdHocRouteRecipient;
8   import org.kuali.rice.krad.document.Document;
9   import org.kuali.rice.krad.maintenance.MaintenanceDocument;
10  import org.kuali.rice.kns.service.KNSServiceLocator;
11  import org.kuali.rice.krad.service.DocumentService;
12  import org.kuali.rice.krad.service.KRADServiceLocator;
13  import org.kuali.rice.krad.service.KRADServiceLocatorWeb;
14  import org.kuali.rice.krad.uif.UifConstants;
15  import org.kuali.rice.krad.util.GlobalVariables;
16  import org.kuali.rice.krad.maintenance.MaintenanceDocumentController;
17  import org.kuali.rice.krad.web.form.DocumentFormBase;
18  import org.kuali.rice.krad.web.form.MaintenanceDocumentForm;
19  import org.springframework.stereotype.Controller;
20  import org.springframework.validation.BindingResult;
21  import org.springframework.web.bind.annotation.ModelAttribute;
22  import org.springframework.web.bind.annotation.RequestMapping;
23  import org.springframework.web.servlet.ModelAndView;
24  
25  import javax.servlet.http.HttpServletRequest;
26  import javax.servlet.http.HttpServletResponse;
27  import java.util.ArrayList;
28  import java.util.HashMap;
29  import java.util.List;
30  import java.util.Map;
31  
32  /**
33   * Created with IntelliJ IDEA.
34   * User: ?
35   * Date: 1/23/13
36   * Time: 12:36 PM
37   * To change this template use File | Settings | File Templates.
38   */
39  @Controller
40  @RequestMapping(value = "/accessMethodMaintenance")
41  public class OleAccessMethodController extends MaintenanceDocumentController {
42      private DocumentService documentService;
43  
44      @RequestMapping(params = "methodToCall=blanketApprove")
45      public ModelAndView blanketApprove(@ModelAttribute("KualiForm") DocumentFormBase form, BindingResult result,
46                                         HttpServletRequest request, HttpServletResponse response) throws Exception {
47  
48          MaintenanceDocumentForm maintenanceForm = (MaintenanceDocumentForm) form;
49          MaintenanceDocument maintenanceDocument = (MaintenanceDocument) form.getDocument();
50          OleAccessMethod oleAccessMethod = (OleAccessMethod) maintenanceDocument.getDocumentDataObject();
51          String accessMethodName = oleAccessMethod.getAccessMethodName();
52          OleAccessMethod oleAccessMethodOld = (OleAccessMethod) maintenanceDocument.getOldMaintainableObject().getDataObject();
53          String newAccessMethodCode = oleAccessMethodOld.getAccessMethodCode();
54          Map<String, String> accessMethodMap = new HashMap<String, String>();
55          accessMethodMap.put(OLEConstants.OleAccessMethod.ACCESS_METHOD_CD, oleAccessMethod.getAccessMethodCode());
56          List<OleAccessMethod> accessMethodInDatabase = (List<OleAccessMethod>) KRADServiceLocator.getDataObjectService().findMatching(OleAccessMethod.class, QueryByCriteria.Builder.andAttributes(accessMethodMap).build()).getResults();
57          if ("Edit".equals(maintenanceDocument.getNewMaintainableObject().getMaintenanceAction())) {
58              Document document = form.getDocument();
59              String successMessageKey = null;
60              if (oleAccessMethod.getAccessMethodCode().equals(newAccessMethodCode) || accessMethodInDatabase.size() == 0) {
61                  getDocumentService().blanketApproveDocument(document, form.getAnnotation(), combineAdHocRecipients(
62                          form));
63                  successMessageKey = RiceKeyConstants.MESSAGE_ROUTE_APPROVED;
64                  GlobalVariables.getMessageMap().putInfo(OLEConstants.OleAccessMethod.ACCESS_METHOD_CODE, "message.route.approved");
65                  return getModelAndView(form);
66  
67              } else {
68                  if (accessMethodInDatabase.size() > 0) {
69                      for (OleAccessMethod accessMehtodObj : accessMethodInDatabase) {
70                          String accessMethodId = accessMehtodObj.getAccessMethodId().toString();
71                          //String accessMethodCode=accessMehtodObj.getAccessMethodCode();
72                          if (null == oleAccessMethod.getAccessMethodId() ||
73                                  !(oleAccessMethod.getAccessMethodId().equals(accessMethodId))) {
74                              GlobalVariables.getMessageMap().putError(OLEConstants.OleAccessMethod.ACCESS_METHOD_CODE, "error.duplicate.code.access");
75                              return getModelAndView(form);
76                          }
77                          getDocumentService().blanketApproveDocument(document, form.getAnnotation(), combineAdHocRecipients(
78                                  form));
79                          successMessageKey = RiceKeyConstants.MESSAGE_ROUTE_APPROVED;
80                          GlobalVariables.getMessageMap().putInfo(OLEConstants.OleAccessMethod.ACCESS_METHOD_CODE, "message.route.approved");
81                          return getModelAndView(form);
82  
83                      }
84                  }
85  
86              }
87  
88          } else if ("Copy".equals(maintenanceDocument.getNewMaintainableObject().getMaintenanceAction())) {
89              String successMessageKey = null;
90              Document document = form.getDocument();
91              if (accessMethodInDatabase.size() == 0) {
92                  getDocumentService().blanketApproveDocument(document, form.getAnnotation(), combineAdHocRecipients(
93                          form));
94                  successMessageKey = RiceKeyConstants.MESSAGE_ROUTE_APPROVED;
95                  GlobalVariables.getMessageMap().putInfo(OLEConstants.OleAccessMethod.ACCESS_METHOD_CODE, "message.route.approved");
96                  return getModelAndView(form);
97              } else if ((accessMethodInDatabase.size() > 0)) {
98  
99                  for (OleAccessMethod accessMehtodObj : accessMethodInDatabase) {
100                     String accessMethodId = accessMehtodObj.getAccessMethodId().toString();
101                     if (null == oleAccessMethod.getAccessMethodId() ||
102                             !(oleAccessMethod.getAccessMethodId().equals(accessMethodId))) {
103                         GlobalVariables.getMessageMap().putError(OLEConstants.OleAccessMethod.ACCESS_METHOD_CODE, "error.duplicate.code.access");
104                         return getModelAndView(form);
105                     }
106                 }
107 
108             }
109         } else if ("New".equals(maintenanceDocument.getNewMaintainableObject().getMaintenanceAction())) {
110             String successMessageKey = null;
111             Document document = form.getDocument();
112             if (accessMethodInDatabase.size() == 0) {
113                 getDocumentService().blanketApproveDocument(document, form.getAnnotation(), combineAdHocRecipients(
114                         form));
115                 successMessageKey = RiceKeyConstants.MESSAGE_ROUTE_APPROVED;
116                 GlobalVariables.getMessageMap().putInfo(OLEConstants.OleAccessMethod.ACCESS_METHOD_CODE, "message.route.approved");
117                 return getModelAndView(form);
118             } else if ((accessMethodInDatabase.size() > 0)) {
119 
120                 for (OleAccessMethod accessMehtodObj : accessMethodInDatabase) {
121                     String accessMethodId = accessMehtodObj.getAccessMethodId().toString();
122                     if (null == oleAccessMethod.getAccessMethodId() ||
123                             !(oleAccessMethod.getAccessMethodId().equals(accessMethodId))) {
124                         GlobalVariables.getMessageMap().putError(OLEConstants.OleAccessMethod.ACCESS_METHOD_CODE, "error.duplicate.code.access");
125                         return getModelAndView(form);
126                     }
127                 }
128 
129             }
130         }
131 
132         /*else if((accessMethodInDatabase.size() > 0)) {
133 
134             for(OleAccessMethod accessMehtodObj : accessMethodInDatabase){
135                 String accessMethodId =  accessMehtodObj.getAccessMethodId().toString();
136                 if (null == oleAccessMethod.getAccessMethodId()  ||
137                         !(oleAccessMethod.getAccessMethodId().equals(accessMethodId))) {
138                     GlobalVariables.getMessageMap().putError(OLEConstants.OleAccessMethod.ACCESS_METHOD_CODE, "error.duplicate.code");
139                     return getModelAndView(form);
140                 }
141             }
142 
143         }*/
144         getControllerService().performWorkflowAction(form, UifConstants.WorkflowAction.BLANKETAPPROVE);
145         return returnToPrevious(form);
146     }
147 
148     protected DocumentService getDocumentService() {
149         if (this.documentService == null) {
150             this.documentService = KRADServiceLocatorWeb.getDocumentService();
151         }
152         return this.documentService;
153     }
154 
155     protected List<AdHocRouteRecipient> combineAdHocRecipients(DocumentFormBase form) {
156         Document document = form.getDocument();
157 
158         List<AdHocRouteRecipient> adHocRecipients = new ArrayList<AdHocRouteRecipient>();
159         adHocRecipients.addAll(document.getAdHocRoutePersons());
160         adHocRecipients.addAll(document.getAdHocRouteWorkgroups());
161 
162         return adHocRecipients;
163     }
164 }