/** * 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.kaleo.service.impl; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.model.ResourceAction; import com.liferay.portal.kernel.model.Role; import com.liferay.portal.kernel.model.User; import com.liferay.portal.kernel.service.ServiceContext; import com.liferay.portal.kernel.util.Validator; import com.liferay.portal.workflow.kaleo.definition.Assignment; import com.liferay.portal.workflow.kaleo.definition.AssignmentType; import com.liferay.portal.workflow.kaleo.definition.ResourceActionAssignment; import com.liferay.portal.workflow.kaleo.definition.RoleAssignment; import com.liferay.portal.workflow.kaleo.definition.ScriptAssignment; import com.liferay.portal.workflow.kaleo.definition.ScriptLanguage; import com.liferay.portal.workflow.kaleo.definition.UserAssignment; import com.liferay.portal.workflow.kaleo.model.KaleoTask; import com.liferay.portal.workflow.kaleo.model.KaleoTaskAssignment; import com.liferay.portal.workflow.kaleo.runtime.util.RoleUtil; import com.liferay.portal.workflow.kaleo.service.base.KaleoTaskAssignmentLocalServiceBaseImpl; import java.util.Date; import java.util.List; /** * @author Brian Wing Shun Chan */ public class KaleoTaskAssignmentLocalServiceImpl extends KaleoTaskAssignmentLocalServiceBaseImpl { @Override public KaleoTaskAssignment addKaleoTaskAssignment( String kaleoClassName, long kaleoClassPK, long kaleoDefinitionId, Assignment assignment, ServiceContext serviceContext) throws PortalException { User user = userLocalService.getUser(serviceContext.getGuestOrUserId()); Date now = new Date(); long kaleoTaskAssignmentId = counterLocalService.increment(); KaleoTaskAssignment kaleoTaskAssignment = kaleoTaskAssignmentPersistence.create(kaleoTaskAssignmentId); kaleoTaskAssignment.setCompanyId(user.getCompanyId()); kaleoTaskAssignment.setUserId(user.getUserId()); kaleoTaskAssignment.setUserName(user.getFullName()); kaleoTaskAssignment.setCreateDate(now); kaleoTaskAssignment.setModifiedDate(now); kaleoTaskAssignment.setKaleoClassName(kaleoClassName); kaleoTaskAssignment.setKaleoClassPK(kaleoClassPK); kaleoTaskAssignment.setKaleoDefinitionId(kaleoDefinitionId); setAssignee(kaleoTaskAssignment, assignment, serviceContext); kaleoTaskAssignmentPersistence.update(kaleoTaskAssignment); return kaleoTaskAssignment; } @Override public void deleteCompanyKaleoTaskAssignments(long companyId) { kaleoTaskAssignmentPersistence.removeByCompanyId(companyId); } @Override public void deleteKaleoDefinitionKaleoTaskAssignments( long kaleoDefinitionId) { kaleoTaskAssignmentPersistence.removeByKaleoDefinitionId( kaleoDefinitionId); } @Override public List<KaleoTaskAssignment> getKaleoTaskAssignments(long kaleoTaskId) { return kaleoTaskAssignmentPersistence.findByKCN_KCPK( KaleoTask.class.getName(), kaleoTaskId); } @Override public List<KaleoTaskAssignment> getKaleoTaskAssignments( long kaleoTaskId, String assigneeClassName) { return kaleoTaskAssignmentPersistence.findByKCN_KCPK_ACN( KaleoTask.class.getName(), kaleoTaskId, assigneeClassName); } @Override public List<KaleoTaskAssignment> getKaleoTaskAssignments( String kaleoClassName, long kaleoClassPK) { return kaleoTaskAssignmentPersistence.findByKCN_KCPK( kaleoClassName, kaleoClassPK); } @Override public int getKaleoTaskAssignmentsCount(long kaleoTaskId) { return kaleoTaskAssignmentPersistence.countByKCN_KCPK( KaleoTask.class.getName(), kaleoTaskId); } @Override public int getKaleoTaskAssignmentsCount( long kaleoTaskId, String assigneeClassName) { return kaleoTaskAssignmentPersistence.countByKCN_KCPK_ACN( KaleoTask.class.getName(), kaleoTaskId, assigneeClassName); } protected void setAssignee( KaleoTaskAssignment kaleoTaskAssignment, Assignment assignment, ServiceContext serviceContext) throws PortalException { AssignmentType assignmentType = assignment.getAssignmentType(); if (assignmentType.equals(AssignmentType.RESOURCE_ACTION)) { kaleoTaskAssignment.setAssigneeClassName( ResourceAction.class.getName()); ResourceActionAssignment resourceActionAssignment = (ResourceActionAssignment)assignment; String actionId = resourceActionAssignment.getActionId(); kaleoTaskAssignment.setAssigneeActionId(actionId); } else if (assignmentType.equals(AssignmentType.ROLE)) { kaleoTaskAssignment.setAssigneeClassName(Role.class.getName()); RoleAssignment roleAssignment = (RoleAssignment)assignment; Role role = null; if (Validator.isNotNull(roleAssignment.getRoleName())) { int roleType = RoleUtil.getRoleType( roleAssignment.getRoleType()); role = RoleUtil.getRole( roleAssignment.getRoleName(), roleType, roleAssignment.isAutoCreate(), serviceContext); } else { role = roleLocalService.getRole(roleAssignment.getRoleId()); } kaleoTaskAssignment.setAssigneeClassPK(role.getRoleId()); } else if (assignmentType.equals(AssignmentType.SCRIPT)) { kaleoTaskAssignment.setAssigneeClassName( AssignmentType.SCRIPT.name()); ScriptAssignment scriptAssignment = (ScriptAssignment)assignment; kaleoTaskAssignment.setAssigneeScript(scriptAssignment.getScript()); ScriptLanguage scriptLanguage = scriptAssignment.getScriptLanguage(); kaleoTaskAssignment.setAssigneeScriptLanguage( scriptLanguage.getValue()); kaleoTaskAssignment.setAssigneeScriptRequiredContexts( scriptAssignment.getScriptRequiredContexts()); } else if (assignmentType.equals(AssignmentType.USER)) { kaleoTaskAssignment.setAssigneeClassName(User.class.getName()); UserAssignment userAssignment = (UserAssignment)assignment; User user = null; if (userAssignment.getUserId() > 0) { user = userLocalService.getUser(userAssignment.getUserId()); } else if (Validator.isNotNull(userAssignment.getEmailAddress())) { user = userLocalService.getUserByEmailAddress( serviceContext.getCompanyId(), userAssignment.getEmailAddress()); } else if (Validator.isNotNull(userAssignment.getScreenName())) { user = userLocalService.getUserByScreenName( serviceContext.getCompanyId(), userAssignment.getScreenName()); } if (user != null) { kaleoTaskAssignment.setAssigneeClassPK(user.getUserId()); } else { kaleoTaskAssignment.setAssigneeClassPK(0); } } } }