1
22
23 package com.liferay.portlet.tasks.model.impl;
24
25 import com.liferay.portal.PortalException;
26 import com.liferay.portal.SystemException;
27 import com.liferay.portal.kernel.language.LanguageUtil;
28 import com.liferay.portal.model.Group;
29 import com.liferay.portal.service.GroupLocalServiceUtil;
30 import com.liferay.portlet.tasks.model.TasksProposal;
31 import com.liferay.portlet.tasks.model.TasksReview;
32 import com.liferay.portlet.tasks.service.TasksReviewLocalServiceUtil;
33
34 import java.util.List;
35 import java.util.Locale;
36
37
42 public class TasksProposalImpl
43 extends TasksProposalModelImpl implements TasksProposal {
44
45 public TasksProposalImpl() {
46 }
47
48 public String getStatus(Locale locale)
49 throws PortalException, SystemException {
50
51 String status = null;
52 int stage = 1;
53
54 Group group = GroupLocalServiceUtil.getGroup(getGroupId());
55
56 int stages = group.getWorkflowStages();
57
58 for (; stage <= stages; stage++) {
59 status = getStatus(stage);
60
61 if (status.equals(_STATUS_APPROVED)) {
62 }
63 else if (status.equals(_STATUS_PENDING) ||
64 status.equals(_STATUS_REJECTED)) {
65
66 break;
67 }
68 else if ((status.equals(_STATUS_UNASSIGNED)) &&
69 (stage > 1)) {
70 }
71 else if (stage == 0) {
72 break;
73 }
74
75 if (stage == stages) {
76 break;
77 }
78 }
79
80 return LanguageUtil.format(locale, status, String.valueOf(stage + 1));
81 }
82
83 protected String getStatus(int stage) throws SystemException {
84 List<TasksReview> reviews = TasksReviewLocalServiceUtil.getReviews(
85 getProposalId(), stage);
86
87 if (reviews.size() <= 0) {
88 return _STATUS_UNASSIGNED;
89 }
90
91 List<TasksReview> completedReviews =
92 TasksReviewLocalServiceUtil.getReviews(
93 getProposalId(), stage, true);
94
95 if (completedReviews.size() < reviews.size()) {
96 return _STATUS_PENDING;
97 }
98
99 List<TasksReview> completedRejectedReviews =
100 TasksReviewLocalServiceUtil.getReviews(
101 getProposalId(), stage, true, true);
102
103 if (completedRejectedReviews.size() > 0) {
104 return _STATUS_REJECTED;
105 }
106 else {
107 return _STATUS_APPROVED;
108 }
109 }
110
111 private static final String _STATUS_APPROVED = "stage-x-review-approved";
112
113 private static final String _STATUS_PENDING = "stage-x-pending-review";
114
115 private static final String _STATUS_REJECTED = "stage-x-review-rejected";
116
117 private static final String _STATUS_UNASSIGNED =
118 "stage-x-review-unassigned";
119
120 }