/* 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.designer.model.FieldExtensionModel;
import org.activiti.designer.util.eclipse.ActivitiUiUtil;
import org.eclipse.bpmn2.ActivitiListener;
import org.eclipse.bpmn2.Activity;
import org.eclipse.bpmn2.SequenceFlow;
import org.eclipse.graphiti.mm.pictograms.Diagram;
import org.eclipse.graphiti.mm.pictograms.PictogramElement;
import org.eclipse.graphiti.services.Graphiti;
/**
* @author Tijs Rademakers
*/
public class BpmnBOUtil {
public static Object getExecutionListenerBO(PictogramElement pe, Diagram diagram) {
Object bo = null;
if(pe instanceof Diagram) {
bo = ActivitiUiUtil.getProcessObject(diagram);
} else {
bo = Graphiti.getLinkService().getBusinessObjectForLinkedPictogramElement(pe);
}
return bo;
}
public static List<ActivitiListener> getListeners(Object bo) {
List<ActivitiListener> listenerList = null;
if(bo instanceof Activity) {
listenerList = ((Activity) bo).getActivitiListeners();
} else if(bo instanceof SequenceFlow) {
listenerList = ((SequenceFlow) bo).getExecutionListeners();
} else if(bo instanceof org.eclipse.bpmn2.Process) {
listenerList = ((org.eclipse.bpmn2.Process) bo).getExecutionListeners();
}
return listenerList;
}
public static void addListener(Object bo, ActivitiListener listener) {
if(bo instanceof Activity) {
((Activity) bo).getActivitiListeners().add(listener);
} else if(bo instanceof SequenceFlow) {
((SequenceFlow) bo).getExecutionListeners().add(listener);
} else if(bo instanceof org.eclipse.bpmn2.Process) {
((org.eclipse.bpmn2.Process) bo).getExecutionListeners().add(listener);
}
}
public static void setListener(Object bo, ActivitiListener listener, int index) {
if(bo instanceof Activity) {
((Activity) bo).getActivitiListeners().set(index, listener);
} else if(bo instanceof SequenceFlow) {
((SequenceFlow) bo).getExecutionListeners().set(index, listener);
} else if(bo instanceof org.eclipse.bpmn2.Process) {
((org.eclipse.bpmn2.Process) bo).getExecutionListeners().set(index, listener);
}
}
public static void removeListener(Object bo, ActivitiListener listener) {
if(bo instanceof Activity) {
((Activity) bo).getActivitiListeners().remove(listener);
} else if(bo instanceof SequenceFlow) {
((SequenceFlow) bo).getExecutionListeners().remove(listener);
} else if(bo instanceof org.eclipse.bpmn2.Process) {
((org.eclipse.bpmn2.Process) bo).getExecutionListeners().remove(listener);
}
}
public static List<FieldExtensionModel> getFieldModelList(String fieldString) {
String[] fieldStringList = fieldString.split("� ");
List<FieldExtensionModel> fieldList = new ArrayList<FieldExtensionModel>();
for (String field : fieldStringList) {
String[] fieldExtensionStringList = field.split(":");
if(fieldExtensionStringList != null && fieldExtensionStringList.length >= 2) {
FieldExtensionModel fieldExtension = new FieldExtensionModel();
fieldExtension.fieldName = fieldExtensionStringList[0];
String expression = null;
for(int i = 1; i < fieldExtensionStringList.length; i++) {
if(i == 1) {
expression = fieldExtensionStringList[i];
} else {
expression += ":" + fieldExtensionStringList[i];
}
}
fieldExtension.expression = expression;
fieldList.add(fieldExtension);
}
}
return fieldList;
}
}