1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.rice.kew.superuser.web;
17
18 import org.apache.commons.lang.ArrayUtils;
19 import org.apache.struts.action.ActionMapping;
20 import org.kuali.rice.core.api.util.ConcreteKeyValue;
21 import org.kuali.rice.core.api.util.KeyValue;
22 import org.kuali.rice.kew.actionrequest.ActionRequestValue;
23 import org.kuali.rice.kew.api.KewApiServiceLocator;
24 import org.kuali.rice.kew.doctype.bo.DocumentType;
25 import org.kuali.rice.kew.routeheader.DocumentRouteHeaderValue;
26 import org.kuali.rice.kew.service.KEWServiceLocator;
27 import org.kuali.rice.kew.web.KewRoutingKualiForm;
28
29 import javax.servlet.http.HttpServletRequest;
30 import java.util.ArrayList;
31 import java.util.Arrays;
32 import java.util.HashSet;
33 import java.util.List;
34 import java.util.Set;
35
36
37
38
39
40
41
42 public class SuperUserForm extends KewRoutingKualiForm {
43
44 private static final long serialVersionUID = 982228198266403397L;
45 private String documentId;
46 private String docHandlerUrl;
47 private Integer routeLevel;
48 private List<String> futureNodeNames = new ArrayList<String>();
49 private String destNodeName;
50 private String returnDestNodeName;
51 private String action;
52 private List<ActionRequestValue> actionRequests = new ArrayList<ActionRequestValue>();
53 private String actionTakenActionRequestId;
54 private String actionTakenNetworkId;
55 private String actionTakenWorkGroupId;
56 private String actionTakenRecipientCode;
57 private boolean authorized;
58 private boolean blanketApprove;
59 private String methodToCall = "";
60 private boolean runPostProcessorLogic = true;
61 private String[] actionRequestRunPostProcessorCheck;
62
63 private String lookupableImplServiceName;
64 private String lookupType;
65
66 private DocumentRouteHeaderValue routeHeader;
67
68
69 private String returnLocation;
70
71 @Override
72 public String getMethodToCall() {
73 return methodToCall;
74 }
75 @Override
76 public void setMethodToCall(String methodToCall) {
77 this.methodToCall = methodToCall;
78 }
79
80 public boolean isBlanketApprove() {
81 return blanketApprove;
82 }
83
84 public void setBlanketApprove(boolean blanketApprove) {
85 this.blanketApprove = blanketApprove;
86 }
87
88 public DocumentRouteHeaderValue getRouteHeader() {
89 return routeHeader;
90 }
91
92 public void setRouteHeader(DocumentRouteHeaderValue routeHeader) {
93 this.routeHeader = routeHeader;
94 }
95
96 public String getDocumentId() {
97 return documentId;
98 }
99
100 public void setDocumentId(String documentId) {
101 this.documentId = documentId;
102 }
103
104 public String getDocHandlerUrl() {
105 return docHandlerUrl;
106 }
107
108 public void setDocHandlerUrl(String docHandlerUrl) {
109 this.docHandlerUrl = docHandlerUrl;
110 }
111
112 public Integer getRouteLevel() {
113 return routeLevel;
114 }
115
116 public void setRouteLevel(Integer routeLevel) {
117 this.routeLevel = routeLevel;
118 }
119
120 public String getAction() {
121 return action;
122 }
123
124 public void setAction(String action) {
125 this.action = action;
126 }
127
128 public List<ActionRequestValue> getActionRequests() {
129 return actionRequests;
130 }
131
132 public void setActionRequests(List<ActionRequestValue> actionRequests) {
133 this.actionRequests = actionRequests;
134 }
135
136 public String getActionTakenActionRequestId() {
137 return actionTakenActionRequestId;
138 }
139
140 public void setActionTakenActionRequestId(String actionTakenActionRequestId) {
141 this.actionTakenActionRequestId = actionTakenActionRequestId;
142 }
143
144 public String getActionTakenNetworkId() {
145 return actionTakenNetworkId;
146 }
147
148 public void setActionTakenNetworkId(String actionTakenNetworkId) {
149 this.actionTakenNetworkId = actionTakenNetworkId;
150 }
151
152 public String getActionTakenWorkGroupId() {
153 return actionTakenWorkGroupId;
154 }
155
156 public void setActionTakenWorkGroupId(String actionTakenWorkGroupId) {
157 this.actionTakenWorkGroupId = actionTakenWorkGroupId;
158 }
159
160
161
162
163
164
165
166
167
168 public boolean isAuthorized() {
169 return authorized;
170 }
171
172 public void setAuthorized(boolean authorized) {
173 this.authorized = authorized;
174 }
175
176 @Override
177 public void reset(ActionMapping mapping, HttpServletRequest request){
178 this.futureNodeNames = new ArrayList<String>();
179 }
180
181 public String getActionTakenRecipientCode() {
182 return actionTakenRecipientCode;
183 }
184
185 public void setActionTakenRecipientCode(String actionTakenRecipientCode) {
186 this.actionTakenRecipientCode = actionTakenRecipientCode;
187 }
188
189 public boolean isSUDocument() {
190 if (routeHeader.isStateInitiated() || routeHeader.isStateSaved()) {
191 return false;
192 }
193 return true;
194 }
195
196 public boolean isStateAllowsAction() {
197 if ( routeHeader.isProcessed() || routeHeader.isDisaproved() ) {
198 return false;
199 }
200 return true;
201 }
202
203 public boolean isSuperUserFinalApproveAllowed() {
204 return getDocumentType().getAllowSuperUserFinalApprovalPolicy().getPolicyValue().booleanValue();
205 }
206
207 public boolean isSuperUserFinalApproveAllowedForActionRequest() {
208 if (!isSuperUserFinalApproveAllowed() &&
209 KEWServiceLocator.getRouteNodeService().findFutureNodeNames(getRouteHeader().getDocumentId()).isEmpty()) {
210 return false;
211 } else {
212 return true;
213 }
214 }
215
216 public DocumentType getDocumentType() {
217 return getRouteHeader().getDocumentType();
218 }
219
220 public Set<KeyValue> getPreviousNodes() throws Exception {
221 List<String> nodeNames = KewApiServiceLocator.getWorkflowDocumentService().getPreviousRouteNodeNames(routeHeader.getDocumentId());
222 Set<KeyValue> previousNodes = new HashSet<KeyValue>();
223 for (String nodeName : nodeNames) {
224 previousNodes.add(new ConcreteKeyValue(nodeName, nodeName));
225 }
226 return previousNodes;
227 }
228
229 public String getDestNodeName() {
230 return destNodeName;
231 }
232 public void setDestNodeName(String previousNodeName) {
233 this.destNodeName = previousNodeName;
234 }
235 public List<String> getFutureNodeNames() {
236 return futureNodeNames;
237 }
238 public void setFutureNodeNames(List<String> futureNodeNames) {
239 this.futureNodeNames = futureNodeNames;
240 }
241 public String getReturnDestNodeName() {
242 return returnDestNodeName;
243 }
244 public void setReturnDestNodeName(String returnDestNodeName) {
245 this.returnDestNodeName = returnDestNodeName;
246 }
247 public String getLookupableImplServiceName() {
248 return lookupableImplServiceName;
249 }
250 public void setLookupableImplServiceName(String lookupableImplServiceName) {
251 this.lookupableImplServiceName = lookupableImplServiceName;
252 }
253 public String getLookupType() {
254 return lookupType;
255 }
256 public void setLookupType(String lookupType) {
257 this.lookupType = lookupType;
258 }
259 public boolean isRunPostProcessorLogic() {
260 return this.runPostProcessorLogic;
261 }
262 public void setRunPostProcessorLogic(boolean runPostProcessorLogic) {
263 this.runPostProcessorLogic = runPostProcessorLogic;
264 }
265 public String[] getActionRequestRunPostProcessorCheck() {
266 return this.actionRequestRunPostProcessorCheck;
267 }
268 public void setActionRequestRunPostProcessorCheck(String[] actionRequestRunPostProcessorCheck) {
269 this.actionRequestRunPostProcessorCheck = actionRequestRunPostProcessorCheck;
270 }
271 public Boolean getActionRequestPostProcessorCheck(String actionRequestId) {
272 return ArrayUtils.contains(getActionRequestRunPostProcessorCheck(), actionRequestId);
273 }
274 public List<String> getActionRequestPostProcessorCheck() {
275 if (getActionRequestRunPostProcessorCheck() == null) {
276 return null;
277 }
278 return Arrays.asList(getActionRequestRunPostProcessorCheck());
279 }
280
281 public String getReturnLocation() {
282 return returnLocation;
283 }
284 public void setReturnLocation(String returnLocation) {
285 this.returnLocation = returnLocation;
286 }
287 public boolean getActionRequestPostProcessorDisplayCheck(){
288 return getDocumentType().getSuPostprocessorOverridePolicy().getPolicyValue().booleanValue();
289 }
290 }