/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.portal.workflow.task.web.internal.display.context;
import com.liferay.asset.kernel.AssetRendererFactoryRegistryUtil;
import com.liferay.asset.kernel.model.AssetEntry;
import com.liferay.asset.kernel.model.AssetRenderer;
import com.liferay.asset.kernel.model.AssetRendererFactory;
import com.liferay.portal.kernel.dao.orm.QueryUtil;
import com.liferay.portal.kernel.dao.search.DisplayTerms;
import com.liferay.portal.kernel.dao.search.ResultRow;
import com.liferay.portal.kernel.dao.search.SearchContainer;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.language.LanguageUtil;
import com.liferay.portal.kernel.model.Role;
import com.liferay.portal.kernel.model.User;
import com.liferay.portal.kernel.portlet.LiferayPortletRequest;
import com.liferay.portal.kernel.portlet.LiferayPortletResponse;
import com.liferay.portal.kernel.portlet.LiferayWindowState;
import com.liferay.portal.kernel.portlet.PortalPreferences;
import com.liferay.portal.kernel.portlet.PortletPreferencesFactoryUtil;
import com.liferay.portal.kernel.portlet.PortletURLUtil;
import com.liferay.portal.kernel.security.permission.ResourceActionsUtil;
import com.liferay.portal.kernel.service.RoleLocalServiceUtil;
import com.liferay.portal.kernel.service.UserLocalServiceUtil;
import com.liferay.portal.kernel.service.WorkflowInstanceLinkLocalServiceUtil;
import com.liferay.portal.kernel.theme.ThemeDisplay;
import com.liferay.portal.kernel.util.ArrayUtil;
import com.liferay.portal.kernel.util.FastDateFormatFactoryUtil;
import com.liferay.portal.kernel.util.GetterUtil;
import com.liferay.portal.kernel.util.HtmlUtil;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.PortalUtil;
import com.liferay.portal.kernel.util.PortletKeys;
import com.liferay.portal.kernel.util.StringBundler;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.StringUtil;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.portal.kernel.workflow.WorkflowConstants;
import com.liferay.portal.kernel.workflow.WorkflowHandler;
import com.liferay.portal.kernel.workflow.WorkflowHandlerRegistryUtil;
import com.liferay.portal.kernel.workflow.WorkflowInstance;
import com.liferay.portal.kernel.workflow.WorkflowInstanceManagerUtil;
import com.liferay.portal.kernel.workflow.WorkflowLog;
import com.liferay.portal.kernel.workflow.WorkflowLogManagerUtil;
import com.liferay.portal.kernel.workflow.WorkflowTask;
import com.liferay.portal.kernel.workflow.WorkflowTaskManagerUtil;
import com.liferay.portal.kernel.workflow.comparator.WorkflowComparatorFactoryUtil;
import com.liferay.portal.workflow.task.web.internal.display.context.util.WorkflowTaskRequestHelper;
import com.liferay.portal.workflow.task.web.internal.search.WorkflowTaskSearch;
import com.liferay.portal.workflow.task.web.internal.util.WorkflowTaskPortletUtil;
import java.io.Serializable;
import java.text.Format;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import javax.portlet.PortletException;
import javax.portlet.PortletMode;
import javax.portlet.PortletURL;
import javax.portlet.WindowState;
import javax.servlet.http.HttpServletRequest;
/**
* @author Leonardo Barros
*/
public class WorkflowTaskDisplayContext {
public WorkflowTaskDisplayContext(
LiferayPortletRequest liferayPortletRequest,
LiferayPortletResponse liferayPortletResponse) {
_liferayPortletRequest = liferayPortletRequest;
_liferayPortletResponse = liferayPortletResponse;
_request = PortalUtil.getHttpServletRequest(liferayPortletRequest);
_portalPreferences = PortletPreferencesFactoryUtil.getPortalPreferences(
_request);
ThemeDisplay themeDisplay =
(ThemeDisplay)_liferayPortletRequest.getAttribute(
WebKeys.THEME_DISPLAY);
_dateFormatDateTime = FastDateFormatFactoryUtil.getDateTime(
themeDisplay.getLocale(), themeDisplay.getTimeZone());
_workflowTaskRequestHelper = new WorkflowTaskRequestHelper(_request);
}
public String getActorName(long actorId) {
return HtmlUtil.escape(
PortalUtil.getUserName(actorId, StringPool.BLANK));
}
public long[] getActorsIds(WorkflowTask workflowTask)
throws PortalException {
List<Long> pooledActorIdsList = new ArrayList<>();
long[] pooledActorsIds = getPooledActorsIds(workflowTask);
for (long pooledActorId : pooledActorsIds) {
if (pooledActorId != _workflowTaskRequestHelper.getUserId()) {
pooledActorIdsList.add(pooledActorId);
}
}
return ArrayUtil.toLongArray(pooledActorIdsList);
}
public AssetEntry getAssetEntry() throws PortalException {
long assetEntryId = ParamUtil.getLong(
_liferayPortletRequest, "assetEntryId");
AssetRendererFactory<?> assetRendererFactory =
getAssetRendererFactory();
return assetRendererFactory.getAssetEntry(assetEntryId);
}
public String getAssetIconCssClass(WorkflowTask workflowTask)
throws PortalException {
WorkflowHandler<?> workflowHandler = getWorkflowHandler(workflowTask);
return workflowHandler.getIconCssClass();
}
public AssetRenderer<?> getAssetRenderer() throws PortalException {
long assetEntryClassPK = ParamUtil.getLong(
_workflowTaskRequestHelper.getRequest(), "assetEntryClassPK");
AssetRendererFactory<?> assetRendererFactory =
getAssetRendererFactory();
return assetRendererFactory.getAssetRenderer(
assetEntryClassPK, AssetRendererFactory.TYPE_LATEST);
}
public AssetRenderer<?> getAssetRenderer(WorkflowTask workflowTask)
throws PortalException, PortletException {
WorkflowHandler<?> workflowHandler = getWorkflowHandler(workflowTask);
long classPK = getWorkflowContextEntryClassPK(workflowTask);
return workflowHandler.getAssetRenderer(classPK);
}
public AssetRendererFactory<?> getAssetRendererFactory() {
String type = ParamUtil.getString(_liferayPortletRequest, "type");
return AssetRendererFactoryRegistryUtil.getAssetRendererFactoryByType(
type);
}
public String getAssetTitle(WorkflowTask workflowTask)
throws PortalException {
long classPK = getWorkflowContextEntryClassPK(workflowTask);
WorkflowHandler<?> workflowHandler = getWorkflowHandler(workflowTask);
return HtmlUtil.escape(
workflowHandler.getTitle(
classPK, _workflowTaskRequestHelper.getLocale()));
}
public String getAssetType(WorkflowTask workflowTask)
throws PortalException {
WorkflowHandler<?> workflowHandler = getWorkflowHandler(workflowTask);
return workflowHandler.getType(_workflowTaskRequestHelper.getLocale());
}
public String getAssignedTheTaskMessageKey(WorkflowLog workflowLog)
throws PortalException {
User user = _users.get(workflowLog.getUserId());
if (user.isMale()) {
return "x-assigned-the-task-to-himself";
}
else {
return "x-assigned-the-task-to-herself";
}
}
public Object getAssignedTheTaskToMessageArguments(WorkflowLog workflowLog)
throws PortalException {
String actorName = getActorName(workflowLog);
return new Object[] {
HtmlUtil.escape(
PortalUtil.getUserName(
workflowLog.getAuditUserId(), StringPool.BLANK)),
HtmlUtil.escape(actorName)
};
}
public String getCreateDate(WorkflowLog workflowLog) {
return _dateFormatDateTime.format(workflowLog.getCreateDate());
}
public String getCreateDate(WorkflowTask workflowTask) {
return _dateFormatDateTime.format(workflowTask.getCreateDate());
}
public String getCurrentURL() {
PortletURL portletURL = PortletURLUtil.getCurrent(
_liferayPortletRequest, _liferayPortletResponse);
return portletURL.toString();
}
public String getDescription(WorkflowTask workflowTask) {
return HtmlUtil.escape(workflowTask.getDescription());
}
public String getDisplayStyle() {
if (_displayStyle == null) {
_displayStyle = WorkflowTaskPortletUtil.getWorkflowTaskDisplayStyle(
_liferayPortletRequest, getDisplayViews());
}
return _displayStyle;
}
public String[] getDisplayViews() {
return _DISPLAY_VIEWS;
}
public Date getDueDate(WorkflowTask workflowTask) {
return workflowTask.getDueDate();
}
public String getDueDateString(WorkflowTask workflowTask) {
if (workflowTask.getDueDate() == null) {
return LanguageUtil.get(
_workflowTaskRequestHelper.getRequest(), "never");
}
else {
return _dateFormatDateTime.format(workflowTask.getDueDate());
}
}
public PortletURL getEditPortletURL(WorkflowTask workflowTask)
throws PortalException {
WorkflowHandler<?> workflowHandler = getWorkflowHandler(workflowTask);
long classPK = getWorkflowContextEntryClassPK(workflowTask);
return workflowHandler.getURLEdit(
classPK, _liferayPortletRequest, _liferayPortletResponse);
}
public String getEditTaskName(WorkflowTask workflowTask) {
return LanguageUtil.get(
_workflowTaskRequestHelper.getRequest(),
HtmlUtil.escape(workflowTask.getName()));
}
public String getHeaderTitle(WorkflowTask workflowTask)
throws PortalException {
String taskName = LanguageUtil.get(
_workflowTaskRequestHelper.getRequest(), workflowTask.getName());
WorkflowHandler<?> workflowHandler = getWorkflowHandler(workflowTask);
long classPK = getWorkflowContextEntryClassPK(workflowTask);
String title = workflowHandler.getTitle(
classPK, _workflowTaskRequestHelper.getLocale());
return taskName + ": " + title;
}
public String getKeywords() {
if (_keywords != null) {
return _keywords;
}
_keywords = ParamUtil.getString(_liferayPortletRequest, "keywords");
return _keywords;
}
public Date getLastActivityDate(WorkflowTask workflowTask)
throws PortalException {
WorkflowLog workflowLog = getWorkflowLog(workflowTask);
if (workflowLog != null) {
return workflowLog.getCreateDate();
}
return null;
}
public String[] getMetadataFields() {
return new String[] {"author", "categories", "tags"};
}
public String getNavigation() {
if (_navigation != null) {
return _navigation;
}
_navigation = ParamUtil.getString(_request, "navigation", "all");
return _navigation;
}
public String getOrderByCol() {
if (_orderByCol != null) {
return _orderByCol;
}
_orderByCol = ParamUtil.getString(_request, "orderByCol");
if (Validator.isNull(_orderByCol)) {
_orderByCol = _portalPreferences.getValue(
PortletKeys.MY_WORKFLOW_TASK, "order-by-col",
"last-activity-date");
}
else {
boolean saveOrderBy = ParamUtil.getBoolean(_request, "saveOrderBy");
if (saveOrderBy) {
_portalPreferences.setValue(
PortletKeys.MY_WORKFLOW_TASK, "order-by-col", _orderByCol);
}
}
return _orderByCol;
}
public String getOrderByType() {
if (_orderByType != null) {
return _orderByType;
}
_orderByType = ParamUtil.getString(_request, "orderByType");
if (Validator.isNull(_orderByType)) {
_orderByType = _portalPreferences.getValue(
PortletKeys.MY_WORKFLOW_TASK, "order-by-type", "asc");
}
else {
boolean saveOrderBy = ParamUtil.getBoolean(_request, "saveOrderBy");
if (saveOrderBy) {
_portalPreferences.setValue(
PortletKeys.MY_WORKFLOW_TASK, "order-by-type",
_orderByType);
}
}
return _orderByType;
}
public PortletURL getPortletURL() {
PortletURL portletURL = _liferayPortletResponse.createRenderURL();
portletURL.setParameter("tabs1", getTabs1());
String navigation = ParamUtil.getString(_request, "navigation");
if (Validator.isNotNull(navigation)) {
portletURL.setParameter("navigation", getNavigation());
}
return portletURL;
}
public String getPreviewOfTitle(WorkflowTask workflowTask)
throws PortalException {
String className = getWorkflowContextEntryClassName(workflowTask);
String modelResource = ResourceActionsUtil.getModelResource(
_workflowTaskRequestHelper.getLocale(), className);
return LanguageUtil.format(
_workflowTaskRequestHelper.getRequest(), "preview-of-x",
modelResource, false);
}
public String getPreviousAssigneeMessageArguments(WorkflowLog workflowLog) {
String userName = PortalUtil.getUserName(
workflowLog.getPreviousUserId(), StringPool.BLANK);
return HtmlUtil.escape(userName);
}
public List<WorkflowHandler<?>> getSearchableAssetsWorkflowHandlers() {
List<WorkflowHandler<?>> searchableAssetsWorkflowHandlers =
new ArrayList<>();
List<WorkflowHandler<?>> workflowHandlers =
WorkflowHandlerRegistryUtil.getWorkflowHandlers();
for (WorkflowHandler<?> workflowHandler : workflowHandlers) {
if (workflowHandler.isAssetTypeSearchable()) {
searchableAssetsWorkflowHandlers.add(workflowHandler);
}
}
return searchableAssetsWorkflowHandlers;
}
public String getState(WorkflowTask workflowTask) throws PortalException {
long companyId = getWorkflowCompanyId(workflowTask);
long groupId = getWorkflowGroupId(workflowTask);
String className = getWorkflowContextEntryClassName(workflowTask);
long classPK = getWorkflowContextEntryClassPK(workflowTask);
String state = HtmlUtil.escape(
WorkflowInstanceLinkLocalServiceUtil.getState(
companyId, groupId, className, classPK));
return LanguageUtil.get(_workflowTaskRequestHelper.getRequest(), state);
}
public String getTabs1() {
return ParamUtil.getString(
_liferayPortletRequest, "tabs1", "assigned-to-me");
}
public String getTaglibEditURL(WorkflowTask workflowTask)
throws PortalException, PortletException {
StringBundler sb = new StringBundler(7);
sb.append("javascript:Liferay.Util.openWindow({id: '");
sb.append(_liferayPortletResponse.getNamespace());
sb.append("editAsset', title: '");
AssetRenderer<?> assetRenderer = getAssetRenderer(workflowTask);
String assetTitle = HtmlUtil.escape(
assetRenderer.getTitle(_workflowTaskRequestHelper.getLocale()));
sb.append(
LanguageUtil.format(
_workflowTaskRequestHelper.getRequest(), "edit-x", assetTitle));
sb.append("', uri:'");
PortletURL editPortletURL = getEditPortletURL(workflowTask);
ThemeDisplay themeDisplay =
_workflowTaskRequestHelper.getThemeDisplay();
editPortletURL.setParameter(
"refererPlid", String.valueOf(themeDisplay.getPlid()));
editPortletURL.setParameter(
"workflowTaskId", String.valueOf(workflowTask.getWorkflowTaskId()));
editPortletURL.setPortletMode(PortletMode.VIEW);
editPortletURL.setWindowState(LiferayWindowState.POP_UP);
sb.append(HtmlUtil.escapeJS(editPortletURL.toString()));
sb.append("'});");
return sb.toString();
}
public String getTaglibViewDiffsURL(WorkflowTask workflowTask)
throws PortalException, PortletException {
StringBundler sb = new StringBundler(7);
sb.append("javascript:Liferay.Util.openWindow({id: '");
sb.append(_liferayPortletResponse.getNamespace());
sb.append("viewDiffs', title: '");
String title = LanguageUtil.get(
_workflowTaskRequestHelper.getRequest(), "diffs");
sb.append(HtmlUtil.escapeJS(title));
sb.append("', uri:'");
PortletURL viewDiffsPortletURL = getViewDiffsPortletURL(workflowTask);
viewDiffsPortletURL.setParameter("redirect", getCurrentURL());
viewDiffsPortletURL.setParameter(
"hideControls", Boolean.TRUE.toString());
viewDiffsPortletURL.setWindowState(LiferayWindowState.POP_UP);
viewDiffsPortletURL.setPortletMode(PortletMode.VIEW);
sb.append(HtmlUtil.escapeJS(viewDiffsPortletURL.toString()));
sb.append("'});");
return sb.toString();
}
public Object getTaskCompletionMessageArguments(WorkflowLog workflowLog)
throws PortalException {
String actorName = getActorName(workflowLog);
return new Object[] {
HtmlUtil.escape(actorName), HtmlUtil.escape(workflowLog.getState())
};
}
public String getTaskContentTitle(WorkflowTask workflowTask)
throws PortalException {
WorkflowHandler<?> workflowHandler = getWorkflowHandler(workflowTask);
long classPK = getWorkflowContextEntryClassPK(workflowTask);
return HtmlUtil.escape(
workflowHandler.getTitle(
classPK, _workflowTaskRequestHelper.getLocale()));
}
public String getTaskInitiallyAssignedMessageArguments(
WorkflowLog workflowLog)
throws PortalException {
String actorName = getActorName(workflowLog);
return HtmlUtil.escape(actorName);
}
public String getTaskName(WorkflowTask workflowTask) {
return HtmlUtil.escape(workflowTask.getName());
}
public WorkflowTaskSearch getTasksAssignedToMe() throws PortalException {
return searchTasks(false);
}
public WorkflowTaskSearch getTasksAssignedToMyRoles()
throws PortalException {
return searchTasks(true);
}
public Object getTaskUpdateMessageArguments(WorkflowLog workflowLog)
throws PortalException {
String actorName = getActorName(workflowLog);
return HtmlUtil.escape(actorName);
}
public String getTransitionMessage(String transitionName) {
if (Validator.isNull(transitionName)) {
return "proceed";
}
return HtmlUtil.escape(transitionName);
}
public Object getTransitionMessageArguments(WorkflowLog workflowLog)
throws PortalException {
String actorName = getActorName(workflowLog);
return new Object[] {
HtmlUtil.escape(actorName),
HtmlUtil.escape(workflowLog.getPreviousState()),
HtmlUtil.escape(workflowLog.getState())
};
}
public List<String> getTransitionNames(WorkflowTask workflowTask)
throws PortalException {
return WorkflowTaskManagerUtil.getNextTransitionNames(
_workflowTaskRequestHelper.getCompanyId(),
_workflowTaskRequestHelper.getUserId(),
workflowTask.getWorkflowTaskId());
}
public String getUserFullName(WorkflowLog workflowLog) {
User user = _users.get(workflowLog.getUserId());
return HtmlUtil.escape(user.getFullName());
}
public PortletURL getViewDiffsPortletURL(WorkflowTask workflowTask)
throws PortalException {
WorkflowHandler<?> workflowHandler = getWorkflowHandler(workflowTask);
long classPK = getWorkflowContextEntryClassPK(workflowTask);
return workflowHandler.getURLViewDiffs(
classPK, _liferayPortletRequest, _liferayPortletResponse);
}
public WindowState getWindowState() {
return _liferayPortletRequest.getWindowState();
}
public long getWorkflowCompanyId(WorkflowTask workflowTask)
throws PortalException {
WorkflowInstance workflowInstance = getWorkflowInstance(workflowTask);
Map<String, Serializable> workflowContext =
workflowInstance.getWorkflowContext();
return GetterUtil.getLong(
(String)workflowContext.get(WorkflowConstants.CONTEXT_COMPANY_ID));
}
public String getWorkflowContextEntryClassName(WorkflowTask workflowTask)
throws PortalException {
Map<String, Serializable> workflowContext = getWorkflowContext(
workflowTask);
return (String)workflowContext.get(
WorkflowConstants.CONTEXT_ENTRY_CLASS_NAME);
}
public long getWorkflowContextEntryClassPK(WorkflowTask workflowTask)
throws PortalException {
Map<String, Serializable> workflowContext = getWorkflowContext(
workflowTask);
return GetterUtil.getLong(
(String)workflowContext.get(
WorkflowConstants.CONTEXT_ENTRY_CLASS_PK));
}
public long getWorkflowGroupId(WorkflowTask workflowTask)
throws PortalException {
WorkflowInstance workflowInstance = getWorkflowInstance(workflowTask);
Map<String, Serializable> workflowContext =
workflowInstance.getWorkflowContext();
return GetterUtil.getLong(
(String)workflowContext.get(WorkflowConstants.CONTEXT_GROUP_ID));
}
public WorkflowHandler<?> getWorkflowHandler(WorkflowTask workflowTask)
throws PortalException {
String className = getWorkflowContextEntryClassName(workflowTask);
return WorkflowHandlerRegistryUtil.getWorkflowHandler(className);
}
public WorkflowInstance getWorkflowInstance(WorkflowTask workflowTask)
throws PortalException {
return WorkflowInstanceManagerUtil.getWorkflowInstance(
_workflowTaskRequestHelper.getCompanyId(),
getWorkflowInstanceId(workflowTask));
}
public long getWorkflowInstanceId(WorkflowTask workflowTask) {
return workflowTask.getWorkflowInstanceId();
}
public WorkflowLog getWorkflowLog(WorkflowTask workflowTask)
throws PortalException {
List<WorkflowLog> workflowLogs =
WorkflowLogManagerUtil.getWorkflowLogsByWorkflowInstance(
_workflowTaskRequestHelper.getCompanyId(),
getWorkflowInstanceId(workflowTask), null, 0, 1,
WorkflowComparatorFactoryUtil.getLogCreateDateComparator());
if (!workflowLogs.isEmpty()) {
return workflowLogs.get(0);
}
return null;
}
public String getWorkflowLogComment(WorkflowLog workflowLog) {
return HtmlUtil.escape(workflowLog.getComment());
}
public String getWorkflowLogCreateDate(WorkflowLog workflowLog) {
return _dateFormatDateTime.format(workflowLog.getCreateDate());
}
public List<WorkflowLog> getWorkflowLogs(WorkflowTask workflowTask)
throws PortalException {
List<Integer> logTypes = new ArrayList<>();
logTypes.add(WorkflowLog.TASK_ASSIGN);
logTypes.add(WorkflowLog.TASK_COMPLETION);
logTypes.add(WorkflowLog.TASK_UPDATE);
logTypes.add(WorkflowLog.TRANSITION);
return WorkflowLogManagerUtil.getWorkflowLogsByWorkflowInstance(
_workflowTaskRequestHelper.getCompanyId(),
getWorkflowInstanceId(workflowTask), logTypes, QueryUtil.ALL_POS,
QueryUtil.ALL_POS,
WorkflowComparatorFactoryUtil.getLogCreateDateComparator(false));
}
public WorkflowTask getWorkflowTask() {
ResultRow resultRow = (ResultRow)_liferayPortletRequest.getAttribute(
WebKeys.SEARCH_CONTAINER_RESULT_ROW);
if (Validator.isNotNull(resultRow)) {
return (WorkflowTask)resultRow.getParameter("workflowTask");
}
else {
return (WorkflowTask)_liferayPortletRequest.getAttribute(
WebKeys.WORKFLOW_TASK);
}
}
public Map<String, Object> getWorkflowTaskActionLinkData() {
Map<String, Object> data = new HashMap<>();
return data;
}
public String getWorkflowTaskAssigneeUserName(WorkflowTask workflowTask) {
return PortalUtil.getUserName(
workflowTask.getAssigneeUserId(), StringPool.BLANK);
}
public String getWorkflowTaskRandomId() {
String randomId = StringPool.BLANK;
ResultRow resultRow = (ResultRow)_liferayPortletRequest.getAttribute(
WebKeys.SEARCH_CONTAINER_RESULT_ROW);
if (resultRow != null) {
randomId = StringUtil.randomId();
}
return randomId;
}
public String getWorkflowTaskUnassignedUserName() {
return LanguageUtil.get(
_workflowTaskRequestHelper.getRequest(), "nobody");
}
public boolean hasEditPortletURL(WorkflowTask workflowTask)
throws PortalException {
PortletURL editPortletURL = getEditPortletURL(workflowTask);
if (editPortletURL != null) {
return true;
}
return false;
}
public boolean hasOtherAssignees(WorkflowTask workflowTask)
throws PortalException {
if (workflowTask.isCompleted()) {
return false;
}
return WorkflowTaskManagerUtil.hasOtherAssignees(
workflowTask.getWorkflowTaskId(),
_workflowTaskRequestHelper.getUserId());
}
public boolean hasViewDiffsPortletURL(WorkflowTask workflowTask)
throws PortalException {
PortletURL viewDiffsPortletURL = getViewDiffsPortletURL(workflowTask);
if (viewDiffsPortletURL != null) {
return true;
}
return false;
}
public boolean isAssignedToMeTabSelected() {
String tabs1 = getTabs1();
if (tabs1.equals("assigned-to-me")) {
return true;
}
return false;
}
public boolean isAssignedToMyRolesTabSelected() {
String tabs1 = getTabs1();
if (tabs1.equals("assigned-to-my-roles")) {
return true;
}
return false;
}
public boolean isAssignedToUser(WorkflowTask workflowTask) {
if (workflowTask.getAssigneeUserId() ==
_workflowTaskRequestHelper.getUserId()) {
return true;
}
return false;
}
public boolean isAuditUser(WorkflowLog workflowLog) {
User user = null;
if (workflowLog.getUserId() != 0) {
user = _users.get(workflowLog.getUserId());
}
if ((user != null) &&
(workflowLog.getAuditUserId() == user.getUserId())) {
return true;
}
return false;
}
public boolean isNavigationAll() {
if (Objects.equals(getNavigation(), "all")) {
return true;
}
return false;
}
public boolean isNavigationCompleted() {
if (Objects.equals(getNavigation(), "completed")) {
return true;
}
return false;
}
public boolean isNavigationPending() {
if (Objects.equals(getNavigation(), "pending")) {
return true;
}
return false;
}
public boolean isSearch() {
if (Validator.isNotNull(getKeywords())) {
return true;
}
return false;
}
public boolean isShowEditURL(WorkflowTask workflowTask) {
boolean showEditURL = false;
if ((workflowTask.getAssigneeUserId() ==
_workflowTaskRequestHelper.getUserId()) &&
!workflowTask.isCompleted()) {
showEditURL = true;
}
return showEditURL;
}
protected String getActorName(WorkflowLog workflowLog)
throws PortalException {
if (workflowLog.getRoleId() != 0) {
Role role = getRole(workflowLog.getRoleId());
return role.getDescriptiveName();
}
else if (workflowLog.getUserId() != 0) {
User user = getUser(workflowLog.getUserId());
return user.getFullName();
}
return StringPool.BLANK;
}
protected String getAssetType(String keywords) {
for (WorkflowHandler<?> workflowHandler :
getSearchableAssetsWorkflowHandlers()) {
String assetType = workflowHandler.getType(
_workflowTaskRequestHelper.getLocale());
if (StringUtil.equalsIgnoreCase(keywords, assetType)) {
return workflowHandler.getClassName();
}
}
return StringPool.BLANK;
}
protected Boolean getCompleted() {
if (isNavigationAll()) {
return null;
}
if (isNavigationCompleted()) {
return Boolean.TRUE;
}
else {
return Boolean.FALSE;
}
}
protected String getCurParam(boolean searchByUserRoles) {
Boolean completedTasks = getCompleted();
String curParam;
if (!searchByUserRoles && (completedTasks == null)) {
curParam = SearchContainer.DEFAULT_CUR_PARAM;
}
else if (!searchByUserRoles && completedTasks) {
curParam = "cur1";
}
else if (!searchByUserRoles && !completedTasks) {
curParam = "cur2";
}
else if (searchByUserRoles && (completedTasks == null)) {
curParam = "cur3";
}
else if (searchByUserRoles && completedTasks) {
curParam = "cur4";
}
else {
curParam = "cur5";
}
return curParam;
}
protected long[] getPooledActorsIds(WorkflowTask workflowTask)
throws PortalException {
return WorkflowTaskManagerUtil.getPooledActorsIds(
_workflowTaskRequestHelper.getCompanyId(),
workflowTask.getWorkflowTaskId());
}
protected Role getRole(long roleId) throws PortalException {
Role role = _roles.get(roleId);
if (role == null) {
role = RoleLocalServiceUtil.getRole(roleId);
_roles.put(roleId, role);
}
return role;
}
protected User getUser(long userId) throws PortalException {
User user = _users.get(userId);
if (user == null) {
user = UserLocalServiceUtil.getUser(userId);
_users.put(userId, user);
}
return user;
}
protected Map<String, Serializable> getWorkflowContext(
WorkflowTask workflowTask)
throws PortalException {
return getWorkflowInstance(workflowTask).getWorkflowContext();
}
protected WorkflowTaskSearch searchTasks(boolean searchByUserRoles)
throws PortalException {
WorkflowTaskSearch searchContainer = new WorkflowTaskSearch(
_liferayPortletRequest, getCurParam(searchByUserRoles),
getPortletURL());
DisplayTerms searchTerms = searchContainer.getDisplayTerms();
int total = WorkflowTaskManagerUtil.searchCount(
_workflowTaskRequestHelper.getCompanyId(),
_workflowTaskRequestHelper.getUserId(), searchTerms.getKeywords(),
getAssetType(searchTerms.getKeywords()), null, null, null,
getCompleted(), searchByUserRoles, false);
searchContainer.setTotal(total);
List<WorkflowTask> results = WorkflowTaskManagerUtil.search(
_workflowTaskRequestHelper.getCompanyId(),
_workflowTaskRequestHelper.getUserId(), searchTerms.getKeywords(),
getAssetType(searchTerms.getKeywords()), null, null, null,
getCompleted(), searchByUserRoles, false,
searchContainer.getStart(), searchContainer.getEnd(),
searchContainer.getOrderByComparator());
searchContainer.setResults(results);
setSearchContainerEmptyResultsMessage(
searchContainer, searchByUserRoles, getCompleted());
return searchContainer;
}
protected void setSearchContainerEmptyResultsMessage(
WorkflowTaskSearch searchContainer, boolean searchByUserRoles,
Boolean completedTasks) {
DisplayTerms searchTerms = searchContainer.getDisplayTerms();
if (!searchByUserRoles && (completedTasks == null)) {
searchContainer.setEmptyResultsMessage(
"there-are-no-tasks-assigned-to-you");
}
else if (!searchByUserRoles && !completedTasks) {
searchContainer.setEmptyResultsMessage(
"there-are-no-pending-tasks-assigned-to-you");
}
else if (searchByUserRoles && (completedTasks == null)) {
searchContainer.setEmptyResultsMessage(
"there-are-no-tasks-assigned-to-your-roles");
}
else if (searchByUserRoles && !completedTasks) {
searchContainer.setEmptyResultsMessage(
"there-are-no-pending-tasks-assigned-to-your-roles");
}
else {
searchContainer.setEmptyResultsMessage(
"there-are-no-completed-tasks");
}
if (Validator.isNotNull(searchTerms.getKeywords())) {
searchContainer.setEmptyResultsMessage(
searchContainer.getEmptyResultsMessage() +
"-with-the-specified-search-criteria");
}
}
private static final String[] _DISPLAY_VIEWS = {"descriptive", "list"};
private final Format _dateFormatDateTime;
private String _displayStyle;
private String _keywords;
private final LiferayPortletRequest _liferayPortletRequest;
private final LiferayPortletResponse _liferayPortletResponse;
private String _navigation;
private String _orderByCol;
private String _orderByType;
private final PortalPreferences _portalPreferences;
private final HttpServletRequest _request;
private final Map<Long, Role> _roles = new HashMap<>();
private final Map<Long, User> _users = new HashMap<>();
private final WorkflowTaskRequestHelper _workflowTaskRequestHelper;
}