/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates.
*
* 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.kie.workbench.common.stunner.bpmn.backend.legacy;
import org.eclipse.bpmn2.Association;
import org.eclipse.bpmn2.AssociationDirection;
import org.eclipse.bpmn2.BaseElement;
import org.eclipse.bpmn2.Bpmn2Factory;
import org.eclipse.bpmn2.Bpmn2Package;
import org.eclipse.bpmn2.CatchEvent;
import org.eclipse.bpmn2.EventDefinition;
import org.eclipse.bpmn2.ThrowEvent;
import org.eclipse.emf.ecore.EClass;
/**
* @author Antoine Toulme
* the mapping to stencil ids to BPMN 2.0 metamodel classes
*/
public enum Bpmn20Stencil {
Task(Bpmn2Package.eINSTANCE.getTask()),
BPMNDiagram(Bpmn2Package.eINSTANCE.getDefinitions()),
Pool(Bpmn2Package.eINSTANCE.getProcess()),
Lane(Bpmn2Package.eINSTANCE.getLane()),
SequenceFlow(Bpmn2Package.eINSTANCE.getSequenceFlow()),
Task_None(Bpmn2Package.eINSTANCE.getTask()),
Task_Custom(Bpmn2Package.eINSTANCE.getTask()),
Task_Script(Bpmn2Package.eINSTANCE.getScriptTask()),
Task_User(Bpmn2Package.eINSTANCE.getUserTask()),
Task_Business_rule(Bpmn2Package.eINSTANCE.getBusinessRuleTask()),
Task_Manual(Bpmn2Package.eINSTANCE.getManualTask()),
Task_Service(Bpmn2Package.eINSTANCE.getServiceTask()),
Task_Send(Bpmn2Package.eINSTANCE.getSendTask()),
Task_Receive(Bpmn2Package.eINSTANCE.getReceiveTask()),
Exclusive_Databased_Gateway(Bpmn2Package.eINSTANCE.getExclusiveGateway()),
ParallelGateway(Bpmn2Package.eINSTANCE.getParallelGateway()),
EventbasedGateway(Bpmn2Package.eINSTANCE.getEventBasedGateway()),
ComplexGateway(Bpmn2Package.eINSTANCE.getComplexGateway()),
InclusiveGateway(Bpmn2Package.eINSTANCE.getInclusiveGateway()),
StartNoneEvent(Bpmn2Package.eINSTANCE.getStartEvent()),
StartMessageEvent(Bpmn2Package.eINSTANCE.getStartEvent(),
Bpmn2Package.eINSTANCE.getMessageEventDefinition()),
StartEscalationEvent(Bpmn2Package.eINSTANCE.getStartEvent(),
Bpmn2Package.eINSTANCE.getEscalationEventDefinition()),
StartCompensationEvent(Bpmn2Package.eINSTANCE.getStartEvent(),
Bpmn2Package.eINSTANCE.getCompensateEventDefinition()),
StartSignalEvent(Bpmn2Package.eINSTANCE.getStartEvent(),
Bpmn2Package.eINSTANCE.getSignalEventDefinition()),
StartMultipleEvent(Bpmn2Package.eINSTANCE.getStartEvent()),
StartParallelMultipleEvent(Bpmn2Package.eINSTANCE.getStartEvent()),
StartTimerEvent(Bpmn2Package.eINSTANCE.getStartEvent(),
Bpmn2Package.eINSTANCE.getTimerEventDefinition()),
StartErrorEvent(Bpmn2Package.eINSTANCE.getStartEvent(),
Bpmn2Package.eINSTANCE.getErrorEventDefinition()),
StartConditionalEvent(Bpmn2Package.eINSTANCE.getStartEvent(),
Bpmn2Package.eINSTANCE.getConditionalEventDefinition()),
TextAnnotation(Bpmn2Package.eINSTANCE.getTextAnnotation()),
Group(Bpmn2Package.eINSTANCE.getGroup()),
DataObject(Bpmn2Package.eINSTANCE.getDataObject()),
DataStore(Bpmn2Package.eINSTANCE.getDataStore()),
Message(Bpmn2Package.eINSTANCE.getMessage()),
EndNoneEvent(Bpmn2Package.eINSTANCE.getEndEvent()),
EndMessageEvent(Bpmn2Package.eINSTANCE.getEndEvent(),
Bpmn2Package.eINSTANCE.getMessageEventDefinition()),
EndEscalationEvent(Bpmn2Package.eINSTANCE.getEndEvent(),
Bpmn2Package.eINSTANCE.getEscalationEventDefinition()),
EndCancelEvent(Bpmn2Package.eINSTANCE.getEndEvent(),
Bpmn2Package.eINSTANCE.getCancelEventDefinition()),
EndErrorEvent(Bpmn2Package.eINSTANCE.getEndEvent(),
Bpmn2Package.eINSTANCE.getErrorEventDefinition()),
EndSignalEvent(Bpmn2Package.eINSTANCE.getEndEvent(),
Bpmn2Package.eINSTANCE.getSignalEventDefinition()),
EndTerminateEvent(Bpmn2Package.eINSTANCE.getEndEvent(),
Bpmn2Package.eINSTANCE.getTerminateEventDefinition()),
EndMultipleEvent(Bpmn2Package.eINSTANCE.getEndEvent()),
EndCompensationEvent(Bpmn2Package.eINSTANCE.getEndEvent(),
Bpmn2Package.eINSTANCE.getCompensateEventDefinition()),
IntermediateMessageEventCatching(Bpmn2Package.eINSTANCE.getIntermediateCatchEvent(),
Bpmn2Package.eINSTANCE.getMessageEventDefinition()),
IntermediateSignalEventCatching(Bpmn2Package.eINSTANCE.getIntermediateCatchEvent(),
Bpmn2Package.eINSTANCE.getSignalEventDefinition()),
IntermediateErrorEventCatching(Bpmn2Package.eINSTANCE.getIntermediateCatchEvent(),
Bpmn2Package.eINSTANCE.getErrorEventDefinition()),
IntermediateTimerEvent(Bpmn2Package.eINSTANCE.getIntermediateCatchEvent(),
Bpmn2Package.eINSTANCE.getTimerEventDefinition()),
IntermediateEscalationEvent(Bpmn2Package.eINSTANCE.getIntermediateCatchEvent(),
Bpmn2Package.eINSTANCE.getEscalationEventDefinition()),
IntermediateConditionalEvent(Bpmn2Package.eINSTANCE.getIntermediateCatchEvent(),
Bpmn2Package.eINSTANCE.getConditionalEventDefinition()),
IntermediateLinkEventCatching(Bpmn2Package.eINSTANCE.getIntermediateCatchEvent(),
Bpmn2Package.eINSTANCE.getLinkEventDefinition()),
IntermediateErrorEvent(Bpmn2Package.eINSTANCE.getIntermediateCatchEvent(),
Bpmn2Package.eINSTANCE.getErrorEventDefinition()),
IntermediateCancelEvent(Bpmn2Package.eINSTANCE.getIntermediateCatchEvent(),
Bpmn2Package.eINSTANCE.getCancelEventDefinition()),
IntermediateCompensationEventCatching(Bpmn2Package.eINSTANCE.getIntermediateCatchEvent(),
Bpmn2Package.eINSTANCE.getCompensateEventDefinition()),
IntermediateMultipleEventCatching(Bpmn2Package.eINSTANCE.getIntermediateCatchEvent()),
IntermediateParallelMultipleEventCatching(Bpmn2Package.eINSTANCE.getIntermediateCatchEvent()),
IntermediateEvent(Bpmn2Package.eINSTANCE.getIntermediateThrowEvent()),
IntermediateMessageEventThrowing(Bpmn2Package.eINSTANCE.getIntermediateThrowEvent(),
Bpmn2Package.eINSTANCE.getMessageEventDefinition()),
IntermediateEscalationEventThrowing(Bpmn2Package.eINSTANCE.getIntermediateThrowEvent(),
Bpmn2Package.eINSTANCE.getEscalationEventDefinition()),
IntermediateLinkEventThrowing(Bpmn2Package.eINSTANCE.getIntermediateThrowEvent(),
Bpmn2Package.eINSTANCE.getLinkEventDefinition()),
IntermediateCompensationEventThrowing(Bpmn2Package.eINSTANCE.getIntermediateThrowEvent(),
Bpmn2Package.eINSTANCE.getCompensateEventDefinition()),
IntermediateSignalEventThrowing(Bpmn2Package.eINSTANCE.getIntermediateThrowEvent(),
Bpmn2Package.eINSTANCE.getSignalEventDefinition()),
IntermediateMultipleEventThrowing(Bpmn2Package.eINSTANCE.getIntermediateThrowEvent()),
Association_Undirected(Bpmn2Package.eINSTANCE.getAssociation(),
AssociationDirection.NONE),
Association_Unidirectional(Bpmn2Package.eINSTANCE.getAssociation(),
AssociationDirection.ONE),
Association_Bidirectional(Bpmn2Package.eINSTANCE.getAssociation(),
AssociationDirection.BOTH),
Subprocess(Bpmn2Package.eINSTANCE.getSubProcess()),
AdHocSubprocess(Bpmn2Package.eINSTANCE.getAdHocSubProcess()),
MultipleInstanceSubprocess(Bpmn2Package.eINSTANCE.getSubProcess()),
ReusableSubprocess(Bpmn2Package.eINSTANCE.getCallActivity()),
EventSubprocess(Bpmn2Package.eINSTANCE.getEventSubprocess()),
Relationship(Bpmn2Package.eINSTANCE.getRelationship()),
Import(Bpmn2Package.eINSTANCE.getImport());
public String id;
public EClass className;
public EClass eventType;
public AssociationDirection associationDirection;
private Bpmn20Stencil(EClass className) {
this.className = className;
}
private Bpmn20Stencil(EClass className,
AssociationDirection assocDir) {
this.className = className;
this.associationDirection = assocDir;
}
private Bpmn20Stencil(EClass className,
EClass eventType) {
this.className = className;
this.eventType = eventType;
}
public static BaseElement createElement(String stencilId,
String taskType,
boolean customElement) {
if (customElement) {
stencilId = "Task";
taskType = "Custom";
}
Bpmn20Stencil stencil = Bpmn20Stencil.valueOf(taskType == null ? stencilId : stencilId + "_" + taskType.replaceAll(" ",
"_"));
if (stencil == null) {
throw new IllegalArgumentException("unregistered stencil id: " + stencilId);
}
BaseElement elt = (BaseElement) Bpmn2Factory.eINSTANCE.create(stencil.className);
if (stencil.eventType != null) {
if (elt instanceof CatchEvent) {
((CatchEvent) elt).getEventDefinitions().add((EventDefinition) Bpmn2Factory.eINSTANCE.create(stencil.eventType));
} else if (elt instanceof ThrowEvent) {
((ThrowEvent) elt).getEventDefinitions().add((EventDefinition) Bpmn2Factory.eINSTANCE.create(stencil.eventType));
} else {
throw new IllegalArgumentException("Cannot set eventType on " + elt);
}
}
if (stencil.associationDirection != null) {
((Association) elt).setAssociationDirection(stencil.associationDirection);
}
return elt;
}
}