/* 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.designer.util; import java.util.ArrayList; import java.util.List; import org.activiti.bpmn.model.ActivitiListener; import org.activiti.bpmn.model.Activity; import org.activiti.bpmn.model.FieldExtension; import org.activiti.bpmn.model.Pool; import org.activiti.bpmn.model.Process; import org.activiti.bpmn.model.SequenceFlow; import org.activiti.bpmn.model.UserTask; import org.activiti.designer.util.editor.Bpmn2MemoryModel; import org.activiti.designer.util.editor.ModelHandler; import org.eclipse.emf.ecore.util.EcoreUtil; import org.eclipse.graphiti.mm.pictograms.Diagram; import org.eclipse.graphiti.mm.pictograms.PictogramElement; /** * @author Tijs Rademakers */ public class BpmnBOUtil { public static Object getExecutionListenerBO(PictogramElement pe, Diagram diagram) { Bpmn2MemoryModel model = ModelHandler.getModel(EcoreUtil.getURI(diagram)); Object bo = null; if(pe instanceof Diagram) { bo = model.getBpmnModel().getMainProcess(); } else { bo = model.getFeatureProvider().getBusinessObjectForPictogramElement(pe); } return bo; } public static List<ActivitiListener> getListeners(Object bo, Diagram diagram) { List<ActivitiListener> listenerList = null; if(bo instanceof UserTask) { listenerList = ((UserTask) bo).getTaskListeners(); } else if(bo instanceof Activity) { listenerList = ((Activity) bo).getExecutionListeners(); } else if(bo instanceof SequenceFlow) { listenerList = ((SequenceFlow) bo).getExecutionListeners(); } else if(bo instanceof Process) { listenerList = ((Process) bo).getExecutionListeners(); } else if(bo instanceof Pool) { Pool pool = ((Pool) bo); Bpmn2MemoryModel model = ModelHandler.getModel(EcoreUtil.getURI(diagram)); listenerList = model.getBpmnModel().getProcess(pool.getId()).getExecutionListeners(); } return listenerList; } public static void addListener(Object bo, ActivitiListener listener, Diagram diagram) { if(bo instanceof UserTask) { ((UserTask) bo).getTaskListeners().add(listener); } else if(bo instanceof Activity) { ((Activity) bo).getExecutionListeners().add(listener); } else if(bo instanceof SequenceFlow) { ((SequenceFlow) bo).getExecutionListeners().add(listener); } else if(bo instanceof Process) { ((Process) bo).getExecutionListeners().add(listener); } else if(bo instanceof Pool) { Pool pool = ((Pool) bo); Bpmn2MemoryModel model = ModelHandler.getModel(EcoreUtil.getURI(diagram)); model.getBpmnModel().getProcess(pool.getId()).getExecutionListeners().add(listener); } } public static void setListener(Object bo, ActivitiListener listener, int index, Diagram diagram) { if(bo instanceof UserTask) { ((UserTask) bo).getTaskListeners().set(index, listener); } else if(bo instanceof Activity) { ((Activity) bo).getExecutionListeners().set(index, listener); } else if(bo instanceof SequenceFlow) { ((SequenceFlow) bo).getExecutionListeners().set(index, listener); } else if(bo instanceof Process) { ((Process) bo).getExecutionListeners().set(index, listener); } else if(bo instanceof Pool) { Pool pool = ((Pool) bo); Bpmn2MemoryModel model = ModelHandler.getModel(EcoreUtil.getURI(diagram)); model.getBpmnModel().getProcess(pool.getId()).getExecutionListeners().set(index, listener); } } public static void removeListener(Object bo, ActivitiListener listener, Diagram diagram) { if(bo instanceof UserTask) { ((UserTask) bo).getTaskListeners().remove(listener); } else if(bo instanceof Activity) { ((Activity) bo).getExecutionListeners().remove(listener); } else if(bo instanceof SequenceFlow) { ((SequenceFlow) bo).getExecutionListeners().remove(listener); } else if(bo instanceof Process) { ((Process) bo).getExecutionListeners().remove(listener); } else if(bo instanceof Pool) { Pool pool = ((Pool) bo); Bpmn2MemoryModel model = ModelHandler.getModel(EcoreUtil.getURI(diagram)); model.getBpmnModel().getProcess(pool.getId()).getExecutionListeners().remove(listener); } } public static List<FieldExtension> getFieldModelList(String fieldString) { String[] fieldStringList = fieldString.split("� "); List<FieldExtension> fieldList = new ArrayList<FieldExtension>(); for (String field : fieldStringList) { String[] fieldExtensionStringList = field.split(":"); if(fieldExtensionStringList != null && fieldExtensionStringList.length >= 2) { FieldExtension fieldExtension = new FieldExtension(); fieldExtension.setFieldName(fieldExtensionStringList[0]); String expression = null; for(int i = 1; i < fieldExtensionStringList.length; i++) { if(i == 1) { expression = fieldExtensionStringList[i]; } else { expression += ":" + fieldExtensionStringList[i]; } } if (expression.contains("${") || expression.contains("#{")) { fieldExtension.setExpression(expression); } else { fieldExtension.setStringValue(expression); } fieldList.add(fieldExtension); } } return fieldList; } }