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
34
35
36
37
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
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
133
134
135
136
137
138
139
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 }