Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
WorkflowReports |
|
| 1.0;1 |
1 | /* | |
2 | * Copyright 2005-2008 The Kuali Foundation | |
3 | * | |
4 | * | |
5 | * Licensed under the Educational Community License, Version 2.0 (the "License"); | |
6 | * you may not use this file except in compliance with the License. | |
7 | * You may obtain a copy of the License at | |
8 | * | |
9 | * http://www.opensource.org/licenses/ecl2.php | |
10 | * | |
11 | * Unless required by applicable law or agreed to in writing, software | |
12 | * distributed under the License is distributed on an "AS IS" BASIS, | |
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
14 | * See the License for the specific language governing permissions and | |
15 | * limitations under the License. | |
16 | */ | |
17 | package org.kuali.rice.kew.service; | |
18 | ||
19 | import java.io.Serializable; | |
20 | ||
21 | import org.kuali.rice.kew.exception.WorkflowException; | |
22 | ||
23 | ||
24 | public class WorkflowReports implements Serializable { | |
25 | ||
26 | 0 | private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(WorkflowReports.class); |
27 | ||
28 | private static final long serialVersionUID = 2859218832130678115L; | |
29 | public WorkflowInfo workflowInfo; | |
30 | ||
31 | 0 | public WorkflowReports() { |
32 | 0 | workflowInfo = new WorkflowInfo(); |
33 | 0 | } |
34 | ||
35 | public boolean isUserAuthenticatedByRouteLog(Long routeHeaderId, String principalId, boolean lookFuture) throws WorkflowException { | |
36 | 0 | return workflowInfo.isUserAuthenticatedByRouteLog(routeHeaderId, principalId, lookFuture); |
37 | } | |
38 | ||
39 | /** | |
40 | * @deprecated use isLastApproverAtNode instead | |
41 | */ | |
42 | public boolean isLastApproverInRouteLevel(Long routeHeaderId, String principalId, Integer routeLevel) throws WorkflowException { | |
43 | 0 | return workflowInfo.isLastApproverInRouteLevel(routeHeaderId, principalId, routeLevel); |
44 | } | |
45 | ||
46 | public boolean isLastApproverAtNode(Long routeHeaderId, String principalId, String nodeName) throws WorkflowException { | |
47 | 0 | return workflowInfo.isLastApproverAtNode(routeHeaderId, principalId, nodeName); |
48 | } | |
49 | ||
50 | /** | |
51 | * @deprecated use routeNodeHasApproverActionRequest instead | |
52 | */ | |
53 | public boolean routeLevelHasApproverActionRequest(String docType, String docContent, Integer routeLevel) throws WorkflowException { | |
54 | 0 | return workflowInfo.routeLevelHasApproverActionRequest(docType, docContent, routeLevel); |
55 | } | |
56 | ||
57 | public boolean routeNodeHasApproverActionRequest(String docType, String docContent, String nodeName) throws WorkflowException { | |
58 | 0 | return workflowInfo.routeNodeHasApproverActionRequest(docType, docContent, nodeName); |
59 | } | |
60 | ||
61 | /** | |
62 | * User is considered the final approver for this document. | |
63 | * | |
64 | * @return True if user context applies to the final approver request for this document. | |
65 | */ | |
66 | public boolean isFinalApprover(Long routeHeaderId, String principalId) throws WorkflowException { | |
67 | 0 | return workflowInfo.isFinalApprover(routeHeaderId, principalId); |
68 | } | |
69 | ||
70 | /*public boolean isUserAuthenticatedByRouteLog(Long routeHeaderId, UserIdVO userId, boolean lookFuture) throws WorkflowException { | |
71 | ReportCriteriaDTO criteria = new ReportCriteriaDTO(routeHeaderId); | |
72 | criteria.setUsersToFilterIn(new UserIdVO[] { userId }); | |
73 | RouteHeaderDetailVO detail = workflowInfo.routingReport(criteria); | |
74 | if (isUser(detail.getInitiator(), userId) || detail.getActionsTaken().length > 0) { | |
75 | return true; | |
76 | } | |
77 | lookFuture = lookFuture && new Boolean(Utilities.getApplicationConstant(KEWConstants.CHECK_ROUTE_LOG_AUTH_FUTURE)).booleanValue(); | |
78 | for (int index = 0; index < detail.getActionRequests().length; index++) { | |
79 | ActionRequestVO actionRequest = detail.getActionRequests()[index]; | |
80 | if (actionRequest.getRouteLevel().intValue() > detail.getDocRouteLevel().intValue() && ! lookFuture) { | |
81 | continue; | |
82 | } | |
83 | return true; | |
84 | } | |
85 | return false; | |
86 | } | |
87 | | |
88 | public boolean isLastApproverInRouteLevel(Long routeHeaderId, UserIdVO userId, Integer routeLevel) throws WorkflowException { | |
89 | ReportCriteriaDTO criteria = new ReportCriteriaDTO(routeHeaderId, new Integer(0), routeLevel); | |
90 | RouteHeaderDetailVO detail = workflowInfo.routingReport(criteria); | |
91 | ActionTakenVO actionTaken = new ActionTakenVO(); | |
92 | actionTaken.setActionTaken(KEWConstants.ACTION_TAKEN_APPROVED_CD); | |
93 | actionTaken.setRouteHeaderId(routeHeaderId); | |
94 | actionTaken.setUserVO(workflowInfo.getWorkflowUser(userId)); | |
95 | actionTaken.setActionDate(Calendar.getInstance()); | |
96 | RouteHeaderDetailVO resultDetail = workflowInfo.routingSimulation(detail, new ActionTakenVO[] { actionTaken }); | |
97 | boolean lastApprover = true; | |
98 | // see if there are any non-deactivated requests left at this level | |
99 | for (int index = 0; index < resultDetail.getActionRequests().length; index++) { | |
100 | ActionRequestVO request = resultDetail.getActionRequests()[index]; | |
101 | if (request.getRouteLevel().equals(routeLevel) && !KEWConstants.ACTION_REQUEST_DONE_STATE.equals(request.getStatus())) { | |
102 | lastApprover = false; | |
103 | break; | |
104 | } | |
105 | } | |
106 | return lastApprover; | |
107 | //return workflowInfo.isLastApproverInRouteLevel(routeHeaderId, userId, routeLevel); | |
108 | } | |
109 | | |
110 | public boolean routeLevelHasApproverActionRequest(String docType, String docContent, Integer routeLevel) throws WorkflowException { | |
111 | //DocumentContentVO documentContent = new DocumentContentVO(); | |
112 | //documentContent.setAttributeContent(docContent); | |
113 | ReportCriteriaDTO criteria = new ReportCriteriaDTO(docType, docContent, routeLevel, routeLevel); | |
114 | RouteHeaderDetailVO detail = workflowInfo.routingReport(criteria); | |
115 | for (int index = 0; index < detail.getActionRequests().length; index++) { | |
116 | ActionRequestVO actionRequest = detail.getActionRequests()[index]; | |
117 | if (actionRequest.isApprovalRequest()) { | |
118 | return true; | |
119 | } | |
120 | } | |
121 | return false; | |
122 | } | |
123 | | |
124 | public boolean hasMember(WorkgroupVO workgroup, UserVO user) { | |
125 | UserVO[] users = workgroup.getMembers(); | |
126 | for (int index = 0; index < users.length; index++) { | |
127 | UserVO workgroupUser = users[index]; | |
128 | if (user.getNetworkId().equals(workgroupUser.getNetworkId())) { | |
129 | return true; | |
130 | } | |
131 | } | |
132 | return false; | |
133 | } | |
134 | | |
135 | private boolean isUser(UserVO user, UserIdVO userId) { | |
136 | boolean isUser = false; | |
137 | if (userId instanceof EmplIdVO) { | |
138 | isUser = ((EmplIdVO)userId).getEmplId().equals(user.getEmplId()); | |
139 | } else if (userId instanceof NetworkIdVO) { | |
140 | isUser = ((NetworkIdVO)userId).getNetworkId().equals(user.getNetworkId()); | |
141 | } else if (userId instanceof UuIdVO) { | |
142 | isUser = ((UuIdVO)userId).getUuId().equals(user.getUuId()); | |
143 | } else if (userId instanceof WorkflowIdVO) { | |
144 | isUser = ((WorkflowIdVO)userId).getWorkflowId().equals(user.getWorkflowId()); | |
145 | } | |
146 | return isUser; | |
147 | }*/ | |
148 | ||
149 | } |