PageRenderTime 25ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/modules/apps/forms-and-workflow/portal-workflow/portal-workflow-instance-web/src/main/java/com/liferay/portal/workflow/instance/web/internal/display/context/WorkflowInstanceEditDisplayContext.java

http://github.com/liferay/liferay-portal
Java | 402 lines | 290 code | 96 blank | 16 comment | 28 complexity | 1e8b033cd51570248374a9d14332efec MD5 | raw file
Possible License(s): LGPL-2.0
  1. /**
  2. * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
  3. *
  4. * This library is free software; you can redistribute it and/or modify it under
  5. * the terms of the GNU Lesser General Public License as published by the Free
  6. * Software Foundation; either version 2.1 of the License, or (at your option)
  7. * any later version.
  8. *
  9. * This library is distributed in the hope that it will be useful, but WITHOUT
  10. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  11. * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
  12. * details.
  13. */
  14. package com.liferay.portal.workflow.instance.web.internal.display.context;
  15. import com.liferay.asset.kernel.model.AssetEntry;
  16. import com.liferay.asset.kernel.model.AssetRenderer;
  17. import com.liferay.asset.kernel.model.AssetRendererFactory;
  18. import com.liferay.portal.kernel.dao.orm.QueryUtil;
  19. import com.liferay.portal.kernel.exception.PortalException;
  20. import com.liferay.portal.kernel.language.LanguageUtil;
  21. import com.liferay.portal.kernel.model.Role;
  22. import com.liferay.portal.kernel.model.User;
  23. import com.liferay.portal.kernel.portlet.LiferayPortletRequest;
  24. import com.liferay.portal.kernel.portlet.LiferayPortletResponse;
  25. import com.liferay.portal.kernel.security.permission.ResourceActionsUtil;
  26. import com.liferay.portal.kernel.service.RoleLocalServiceUtil;
  27. import com.liferay.portal.kernel.service.UserLocalServiceUtil;
  28. import com.liferay.portal.kernel.util.GetterUtil;
  29. import com.liferay.portal.kernel.util.HtmlUtil;
  30. import com.liferay.portal.kernel.util.OrderByComparator;
  31. import com.liferay.portal.kernel.util.PortalUtil;
  32. import com.liferay.portal.kernel.util.StringPool;
  33. import com.liferay.portal.kernel.util.WebKeys;
  34. import com.liferay.portal.kernel.workflow.WorkflowConstants;
  35. import com.liferay.portal.kernel.workflow.WorkflowException;
  36. import com.liferay.portal.kernel.workflow.WorkflowHandler;
  37. import com.liferay.portal.kernel.workflow.WorkflowHandlerRegistryUtil;
  38. import com.liferay.portal.kernel.workflow.WorkflowInstance;
  39. import com.liferay.portal.kernel.workflow.WorkflowLog;
  40. import com.liferay.portal.kernel.workflow.WorkflowLogManagerUtil;
  41. import com.liferay.portal.kernel.workflow.WorkflowTask;
  42. import com.liferay.portal.kernel.workflow.WorkflowTaskManagerUtil;
  43. import com.liferay.portal.kernel.workflow.comparator.WorkflowComparatorFactoryUtil;
  44. import java.io.Serializable;
  45. import java.util.Arrays;
  46. import java.util.HashMap;
  47. import java.util.List;
  48. import java.util.Map;
  49. /**
  50. * @author Leonardo Barros
  51. */
  52. public class WorkflowInstanceEditDisplayContext
  53. extends BaseWorkflowInstanceDisplayContext {
  54. public WorkflowInstanceEditDisplayContext(
  55. LiferayPortletRequest liferayPortletRequest,
  56. LiferayPortletResponse liferayPortletResponse) {
  57. super(liferayPortletRequest, liferayPortletResponse);
  58. }
  59. public AssetEntry getAssetEntry() throws PortalException {
  60. AssetRenderer<?> assetRenderer = getAssetRenderer();
  61. if (assetRenderer == null) {
  62. return null;
  63. }
  64. AssetRendererFactory<?> assetRendererFactory =
  65. getAssetRendererFactory();
  66. return assetRendererFactory.getAssetEntry(
  67. assetRendererFactory.getClassName(), assetRenderer.getClassPK());
  68. }
  69. public String getAssetEntryVersionId() {
  70. long classPK = getWorkflowContextEntryClassPK();
  71. return String.valueOf(classPK);
  72. }
  73. public String getAssetName() {
  74. return HtmlUtil.escape(getWorkflowDefinitionName());
  75. }
  76. public AssetRenderer<?> getAssetRenderer() throws PortalException {
  77. WorkflowHandler<?> workflowHandler = getWorkflowHandler();
  78. return workflowHandler.getAssetRenderer(
  79. getWorkflowContextEntryClassPK());
  80. }
  81. public AssetRendererFactory<?> getAssetRendererFactory() {
  82. WorkflowHandler<?> workflowHandler = getWorkflowHandler();
  83. return workflowHandler.getAssetRendererFactory();
  84. }
  85. public String getAssignedTheTaskMessageKey(WorkflowLog workflowLog)
  86. throws PortalException {
  87. User user = getUser(workflowLog.getUserId());
  88. if (user.isMale()) {
  89. return "x-assigned-the-task-to-himself";
  90. }
  91. else {
  92. return "x-assigned-the-task-to-herself";
  93. }
  94. }
  95. public Object getAssignedTheTaskToMessageArguments(WorkflowLog workflowLog)
  96. throws PortalException {
  97. String userName = PortalUtil.getUserName(
  98. workflowLog.getAuditUserId(), StringPool.BLANK);
  99. String actorName = getActorName(workflowLog);
  100. return new Object[] {
  101. HtmlUtil.escape(userName), HtmlUtil.escape(actorName)
  102. };
  103. }
  104. public String getHeaderTitle() {
  105. return LanguageUtil.get(
  106. workflowInstanceRequestHelper.getRequest(),
  107. getWorkflowDefinitionName());
  108. }
  109. public String getIconCssClass() {
  110. WorkflowHandler<?> workflowHandler = getWorkflowHandler();
  111. return workflowHandler.getIconCssClass();
  112. }
  113. public String getPanelTitle() {
  114. String modelResource = ResourceActionsUtil.getModelResource(
  115. workflowInstanceRequestHelper.getLocale(),
  116. getWorkflowContextEntryClassName());
  117. return LanguageUtil.format(
  118. workflowInstanceRequestHelper.getRequest(), "preview-of-x",
  119. modelResource, false);
  120. }
  121. public Object getPreviousAssigneeMessageArguments(WorkflowLog workflowLog) {
  122. return HtmlUtil.escape(
  123. PortalUtil.getUserName(
  124. workflowLog.getPreviousUserId(), StringPool.BLANK));
  125. }
  126. public String getTaskCompleted(WorkflowTask workflowTask) {
  127. if (workflowTask.isCompleted()) {
  128. return LanguageUtil.get(
  129. workflowInstanceRequestHelper.getRequest(), "yes");
  130. }
  131. return LanguageUtil.get(
  132. workflowInstanceRequestHelper.getRequest(), "no");
  133. }
  134. public Object getTaskCompletionMessageArguments(WorkflowLog workflowLog)
  135. throws PortalException {
  136. String actorName = getActorName(workflowLog);
  137. return new Object[] {
  138. HtmlUtil.escape(actorName), HtmlUtil.escape(workflowLog.getState())
  139. };
  140. }
  141. public String getTaskContentTitleMessage() {
  142. WorkflowHandler<?> workflowHandler = getWorkflowHandler();
  143. long classPK = getWorkflowContextEntryClassPK();
  144. return HtmlUtil.escape(
  145. workflowHandler.getTitle(
  146. classPK, workflowInstanceRequestHelper.getLocale()));
  147. }
  148. public String getTaskDueDate(WorkflowTask workflowTask) {
  149. if (workflowTask.getDueDate() == null) {
  150. return LanguageUtil.get(
  151. workflowInstanceRequestHelper.getRequest(), "never");
  152. }
  153. else {
  154. return dateFormatDateTime.format(workflowTask.getDueDate());
  155. }
  156. }
  157. public Object getTaskInitiallyAssignedMessageArguments(
  158. WorkflowLog workflowLog)
  159. throws PortalException {
  160. return HtmlUtil.escape(getActorName(workflowLog));
  161. }
  162. public String getTaskName(WorkflowTask workflowTask) {
  163. return HtmlUtil.escape(workflowTask.getName());
  164. }
  165. public Object getTaskUpdateMessageArguments(WorkflowLog workflowLog)
  166. throws PortalException {
  167. return HtmlUtil.escape(getActorName(workflowLog));
  168. }
  169. public Object getTransitionMessageArguments(WorkflowLog workflowLog)
  170. throws PortalException {
  171. String actorName = getActorName(workflowLog);
  172. return new Object[] {
  173. HtmlUtil.escape(actorName),
  174. HtmlUtil.escape(workflowLog.getPreviousState()),
  175. HtmlUtil.escape(workflowLog.getState())
  176. };
  177. }
  178. public String getUserFullName(WorkflowLog workflowLog)
  179. throws PortalException {
  180. User user = getUser(workflowLog.getUserId());
  181. return HtmlUtil.escape(user.getFullName());
  182. }
  183. public String getWorkflowInstanceEndDate() {
  184. WorkflowInstance workflowInstance = getWorkflowInstance();
  185. if (workflowInstance.getEndDate() == null) {
  186. return LanguageUtil.get(
  187. workflowInstanceRequestHelper.getRequest(), "never");
  188. }
  189. else {
  190. return dateFormatDateTime.format(workflowInstance.getEndDate());
  191. }
  192. }
  193. public String getWorkflowInstanceState() {
  194. WorkflowInstance workflowInstance = getWorkflowInstance();
  195. return LanguageUtil.get(
  196. workflowInstanceRequestHelper.getRequest(),
  197. workflowInstance.getState());
  198. }
  199. public String getWorkflowLogComment(WorkflowLog workflowLog) {
  200. return HtmlUtil.escape(workflowLog.getComment());
  201. }
  202. public String getWorkflowLogCreateDate(WorkflowLog workflowLog) {
  203. return dateFormatDateTime.format(workflowLog.getCreateDate());
  204. }
  205. public List<WorkflowLog> getWorkflowLogs() throws WorkflowException {
  206. if (_workflowLogs == null) {
  207. OrderByComparator<WorkflowLog> orderByComparator =
  208. WorkflowComparatorFactoryUtil.getLogCreateDateComparator(false);
  209. _workflowLogs =
  210. WorkflowLogManagerUtil.getWorkflowLogsByWorkflowInstance(
  211. workflowInstanceRequestHelper.getCompanyId(),
  212. getWorkflowInstanceId(), _logTypes, QueryUtil.ALL_POS,
  213. QueryUtil.ALL_POS, orderByComparator);
  214. }
  215. return _workflowLogs;
  216. }
  217. public List<WorkflowTask> getWorkflowTasks() throws PortalException {
  218. if (workflowTasks == null) {
  219. workflowTasks =
  220. WorkflowTaskManagerUtil.getWorkflowTasksByWorkflowInstance(
  221. workflowInstanceRequestHelper.getCompanyId(), null,
  222. getWorkflowInstanceId(), null, QueryUtil.ALL_POS,
  223. QueryUtil.ALL_POS, null);
  224. }
  225. return workflowTasks;
  226. }
  227. public boolean isAuditUser(WorkflowLog workflowLog) {
  228. if (workflowLog.getUserId() == 0) {
  229. return false;
  230. }
  231. if (workflowLog.getAuditUserId() == workflowLog.getUserId()) {
  232. return true;
  233. }
  234. return false;
  235. }
  236. public boolean isWorkflowTasksEmpty() throws PortalException {
  237. List<WorkflowTask> workflowTasks = getWorkflowTasks();
  238. return workflowTasks.isEmpty();
  239. }
  240. protected String getActorName(WorkflowLog workflowLog)
  241. throws PortalException {
  242. if (workflowLog.getRoleId() != 0) {
  243. Role role = getRole(workflowLog.getRoleId());
  244. return role.getDescriptiveName();
  245. }
  246. else if (workflowLog.getUserId() != 0) {
  247. User user = getUser(workflowLog.getUserId());
  248. return user.getFullName();
  249. }
  250. return StringPool.BLANK;
  251. }
  252. protected Role getRole(long roleId) throws PortalException {
  253. Role role = _roles.get(roleId);
  254. if (role == null) {
  255. role = RoleLocalServiceUtil.getRole(roleId);
  256. _roles.put(roleId, role);
  257. }
  258. return role;
  259. }
  260. protected User getUser(long userId) throws PortalException {
  261. User user = _users.get(userId);
  262. if (user == null) {
  263. user = UserLocalServiceUtil.getUser(userId);
  264. _users.put(userId, user);
  265. }
  266. return user;
  267. }
  268. protected Map<String, Serializable> getWorkflowContext() {
  269. WorkflowInstance workflowInstance = getWorkflowInstance();
  270. return workflowInstance.getWorkflowContext();
  271. }
  272. protected String getWorkflowContextEntryClassName() {
  273. Map<String, Serializable> workflowContext = getWorkflowContext();
  274. return (String)workflowContext.get(
  275. WorkflowConstants.CONTEXT_ENTRY_CLASS_NAME);
  276. }
  277. protected long getWorkflowContextEntryClassPK() {
  278. Map<String, Serializable> workflowContext = getWorkflowContext();
  279. return GetterUtil.getLong(
  280. (String)workflowContext.get(
  281. WorkflowConstants.CONTEXT_ENTRY_CLASS_PK));
  282. }
  283. protected String getWorkflowDefinitionName() {
  284. WorkflowInstance workflowInstance = getWorkflowInstance();
  285. return workflowInstance.getWorkflowDefinitionName();
  286. }
  287. protected WorkflowHandler<?> getWorkflowHandler() {
  288. String className = getWorkflowContextEntryClassName();
  289. return WorkflowHandlerRegistryUtil.getWorkflowHandler(className);
  290. }
  291. protected WorkflowInstance getWorkflowInstance() {
  292. return (WorkflowInstance)liferayPortletRequest.getAttribute(
  293. WebKeys.WORKFLOW_INSTANCE);
  294. }
  295. protected long getWorkflowInstanceId() {
  296. WorkflowInstance workflowInstance = getWorkflowInstance();
  297. return workflowInstance.getWorkflowInstanceId();
  298. }
  299. protected List<WorkflowTask> workflowTasks;
  300. private static final List<Integer> _logTypes = Arrays.asList(
  301. WorkflowLog.TASK_ASSIGN, WorkflowLog.TASK_COMPLETION,
  302. WorkflowLog.TASK_UPDATE, WorkflowLog.TRANSITION);
  303. private final Map<Long, Role> _roles = new HashMap<>();
  304. private final Map<Long, User> _users = new HashMap<>();
  305. private List<WorkflowLog> _workflowLogs;
  306. }