/* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.activiti.engine.impl.task; import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.activiti.engine.delegate.Expression; import org.activiti.engine.delegate.TaskListener; import org.activiti.engine.impl.form.TaskFormHandler; /** * Container for task definition information gathered at parsing time. * * @author Joram Barrez */ public class TaskDefinition implements Serializable { private static final long serialVersionUID = 1L; protected String key; // assignment fields protected Expression nameExpression; protected Expression ownerExpression; protected Expression descriptionExpression; protected Expression assigneeExpression; protected Set<Expression> candidateUserIdExpressions = new HashSet<Expression>(); protected Set<Expression> candidateGroupIdExpressions = new HashSet<Expression>(); protected Expression dueDateExpression; protected Expression businessCalendarNameExpression; protected Expression priorityExpression; protected Expression categoryExpression; protected Map<String, Set<Expression>> customUserIdentityLinkExpressions = new HashMap<String, Set<Expression>>(); protected Map<String, Set<Expression>> customGroupIdentityLinkExpressions = new HashMap<String, Set<Expression>>(); protected Expression skipExpression; // form fields protected TaskFormHandler taskFormHandler; protected Expression formKeyExpression; // task listeners protected Map<String, List<TaskListener>> taskListeners = new HashMap<String, List<TaskListener>>(); public TaskDefinition(TaskFormHandler taskFormHandler) { this.taskFormHandler = taskFormHandler; } // getters and setters ////////////////////////////////////////////////////// public Expression getNameExpression() { return nameExpression; } public void setNameExpression(Expression nameExpression) { this.nameExpression = nameExpression; } public Expression getOwnerExpression() { return ownerExpression; } public void setOwnerExpression(Expression ownerExpression) { this.ownerExpression = ownerExpression; } public Expression getDescriptionExpression() { return descriptionExpression; } public void setDescriptionExpression(Expression descriptionExpression) { this.descriptionExpression = descriptionExpression; } public Expression getAssigneeExpression() { return assigneeExpression; } public void setAssigneeExpression(Expression assigneeExpression) { this.assigneeExpression = assigneeExpression; } public Set<Expression> getCandidateUserIdExpressions() { return candidateUserIdExpressions; } public void addCandidateUserIdExpression(Expression userId) { candidateUserIdExpressions.add(userId); } public void setCandidateUserIdExpressions(Set<Expression> candidateUserIdExpressions) { this.candidateUserIdExpressions = candidateUserIdExpressions; } public Set<Expression> getCandidateGroupIdExpressions() { return candidateGroupIdExpressions; } public void addCandidateGroupIdExpression(Expression groupId) { candidateGroupIdExpressions.add(groupId); } public void setCandidateGroupIdExpressions(Set<Expression> candidateGroupIdExpressions) { this.candidateGroupIdExpressions = candidateGroupIdExpressions; } public Map<String, Set<Expression>> getCustomUserIdentityLinkExpressions() { return customUserIdentityLinkExpressions; } public void addCustomUserIdentityLinkExpression(String identityLinkType, Set<Expression> idList) { customUserIdentityLinkExpressions.put(identityLinkType, idList); } public Map<String, Set<Expression>> getCustomGroupIdentityLinkExpressions() { return customGroupIdentityLinkExpressions; } public void addCustomGroupIdentityLinkExpression(String identityLinkType, Set<Expression> idList) { customGroupIdentityLinkExpressions.put(identityLinkType, idList); } public Expression getPriorityExpression() { return priorityExpression; } public void setPriorityExpression(Expression priorityExpression) { this.priorityExpression = priorityExpression; } public TaskFormHandler getTaskFormHandler() { return taskFormHandler; } public void setTaskFormHandler(TaskFormHandler taskFormHandler) { this.taskFormHandler = taskFormHandler; } public Expression getFormKeyExpression() { return formKeyExpression; } public void setFormKeyExpression(Expression formKeyExpression) { this.formKeyExpression = formKeyExpression; } public String getKey() { return key; } public void setKey(String key) { this.key = key; } public Expression getDueDateExpression() { return dueDateExpression; } public void setDueDateExpression(Expression dueDateExpression) { this.dueDateExpression = dueDateExpression; } public Expression getBusinessCalendarNameExpression() { return businessCalendarNameExpression; } public void setBusinessCalendarNameExpression(Expression businessCalendarNameExpression) { this.businessCalendarNameExpression = businessCalendarNameExpression; } public Expression getCategoryExpression() { return categoryExpression; } public void setCategoryExpression(Expression categoryExpression) { this.categoryExpression = categoryExpression; } public Map<String, List<TaskListener>> getTaskListeners() { return taskListeners; } public void setTaskListeners(Map<String, List<TaskListener>> taskListeners) { this.taskListeners = taskListeners; } public List<TaskListener> getTaskListener(String eventName) { return taskListeners.get(eventName); } public void addTaskListener(String eventName, TaskListener taskListener) { if(TaskListener.EVENTNAME_ALL_EVENTS.equals(eventName)) { // In order to prevent having to merge the "all" tasklisteners with the ones for a specific eventName, // every time "getTaskListener()" is called, we add the listener explicitally to the individual lists this.addTaskListener(TaskListener.EVENTNAME_CREATE, taskListener); this.addTaskListener(TaskListener.EVENTNAME_ASSIGNMENT, taskListener); this.addTaskListener(TaskListener.EVENTNAME_COMPLETE, taskListener); this.addTaskListener(TaskListener.EVENTNAME_DELETE, taskListener); } else { List<TaskListener> taskEventListeners = taskListeners.get(eventName); if (taskEventListeners == null) { taskEventListeners = new ArrayList<TaskListener>(); taskListeners.put(eventName, taskEventListeners); } taskEventListeners.add(taskListener); } } public Expression getSkipExpression() { return skipExpression; } public void setSkipExpression(Expression skipExpression) { this.skipExpression = skipExpression; } }