Package org.activiti.designer.util

Source Code of org.activiti.designer.util.BpmnBOUtil

/* 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;
  }
}
TOP

Related Classes of org.activiti.designer.util.BpmnBOUtil

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.