1
22
23 package com.liferay.portlet.tasks.social;
24
25 import com.liferay.portal.kernel.util.StringMaker;
26 import com.liferay.portal.kernel.util.StringPool;
27 import com.liferay.portal.model.User;
28 import com.liferay.portal.service.UserLocalServiceUtil;
29 import com.liferay.portal.theme.ThemeDisplay;
30 import com.liferay.portlet.social.model.SocialActivity;
31 import com.liferay.portlet.social.model.SocialActivityFeedEntry;
32 import com.liferay.portlet.social.model.SocialActivityInterpreter;
33 import com.liferay.portlet.tasks.model.TasksProposal;
34 import com.liferay.portlet.tasks.service.TasksProposalLocalServiceUtil;
35
36 import org.apache.commons.logging.Log;
37 import org.apache.commons.logging.LogFactory;
38
39 import org.json.JSONObject;
40
41
47 public class TasksActivityInterpreter implements SocialActivityInterpreter {
48
49 public String[] getClassNames() {
50 return _CLASS_NAMES;
51 }
52
53 public SocialActivityFeedEntry interpret(
54 SocialActivity activity, ThemeDisplay themeDisplay) {
55
56 try {
57 return doInterpret(activity, themeDisplay);
58 }
59 catch (Exception e) {
60 if (_log.isWarnEnabled()) {
61 _log.warn(e);
62 }
63 }
64
65 return null;
66 }
67
68 protected SocialActivityFeedEntry doInterpret(
69 SocialActivity activity, ThemeDisplay themeDisplay)
70 throws Exception {
71
72 User creatorUser = UserLocalServiceUtil.getUserById(
73 activity.getUserId());
74
75 String creatorUserName = "<b>" + creatorUser.getFullName() + "</b>";
76
77 String type = activity.getType();
78
79 String receiverUserName = activity.getReceiverUserName();
80
81 if (activity.getReceiverUserId() > 0) {
82 User receiverUser = UserLocalServiceUtil.getUserById(
83 activity.getReceiverUserId());
84
85 receiverUserName = "<b>" + receiverUser.getFullName() + "</b>";
86 }
87
88
90 String title = StringPool.BLANK;
91
92 if (type.equals(TasksActivityKeys.ASSIGN)) {
93 title = themeDisplay.translate(
94 "activity-tasks-x-assigned-proposal-to-x-for-review",
95 new Object[] {creatorUserName, receiverUserName});
96 }
97 else if (type.equals(TasksActivityKeys.PROPOSE)) {
98 title = themeDisplay.translate(
99 "activity-tasks-x-created-proposal", creatorUserName);
100 }
101 else if (type.equals(TasksActivityKeys.REVIEW)) {
102 title = themeDisplay.translate(
103 "activity-tasks-x-reviewed-proposal-from-x",
104 new Object[] {creatorUserName, receiverUserName});
105 }
106
107
109 TasksProposal proposal = TasksProposalLocalServiceUtil.getProposal(
110 activity.getClassPK());
111
112 StringMaker sm = new StringMaker();
113
114 sm.append("<b>");
115 sm.append(proposal.getName());
116 sm.append("</b> (");
117 sm.append(
118 themeDisplay.translate(
119 "model.resource." + proposal.getClassName()));
120 sm.append(")<br />");
121 sm.append(themeDisplay.translate("description"));
122 sm.append(": ");
123 sm.append(proposal.getDescription());
124
125 if (!activity.equals(TasksActivityKeys.PROPOSE)) {
126 JSONObject extraData = new JSONObject(activity.getExtraData());
127
128 int stage = extraData.getInt("stage");
129 boolean completed = extraData.getBoolean("completed");
130 boolean rejected = extraData.getBoolean("rejected");
131
132 sm.append("<br />");
133 sm.append(themeDisplay.translate("stage"));
134 sm.append(": ");
135 sm.append(stage);
136 sm.append("<br />");
137 sm.append(themeDisplay.translate("status"));
138 sm.append(": ");
139
140 if (completed && rejected) {
141 sm.append(themeDisplay.translate("rejected"));
142 }
143 else if (completed && !rejected) {
144 sm.append(themeDisplay.translate("approved"));
145 }
146 else {
147 sm.append(themeDisplay.translate("awaiting-approval"));
148 }
149 }
150
151 String body = sm.toString();
152
153 return new SocialActivityFeedEntry(title, body);
154 }
155
156 private static final String[] _CLASS_NAMES = new String[] {
157 TasksProposal.class.getName()
158 };
159
160 private static Log _log = LogFactory.getLog(TasksActivityInterpreter.class);
161
162 }