/** | |
* Copyright (c)2020 CEA LIST, Committer Name, and others. | |
* | |
* All rights reserved. This program and the accompanying materials | |
* are made available under the terms of the Eclipse Public License 2.0 | |
* which accompanies this distribution, and is available at | |
* https://www.eclipse.org/legal/epl-2.0/ | |
* | |
* SPDX-License-Identifier: EPL-2.0 | |
* | |
* Contributors: | |
* CEA LIST - Initial API and implementation | |
* Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr | |
* | |
*/ | |
package org.eclipse.papyrus.pdp4eng.designer.controller.internal.processcreation; | |
import org.eclipse.uml2.uml.Activity; | |
import org.eclipse.uml2.uml.ActivityNode; | |
import org.eclipse.uml2.uml.Element; | |
import org.eclipse.uml2.uml.InputPin; | |
import org.eclipse.uml2.uml.NamedElement; | |
import org.eclipse.uml2.uml.ObjectFlow; | |
import org.eclipse.uml2.uml.OpaqueAction; | |
import org.eclipse.uml2.uml.OutputPin; | |
import org.eclipse.uml2.uml.UMLFactory; | |
public class ObjectFlowProcessCreation implements IProcessCreation { | |
@Override | |
public Element createElement(Element objectFlow, Element activity) { | |
if( objectFlow instanceof ObjectFlow) { | |
ObjectFlow anObjectFlow= UMLFactory.eINSTANCE.createObjectFlow(); | |
((Activity)activity).getEdges().add(anObjectFlow); | |
//set source | |
ActivityNode sourceNode=((ObjectFlow)objectFlow).getSource(); | |
if(sourceNode instanceof OutputPin) { | |
ActivityNode OpaqueBehaviorSource= (ActivityNode)((OutputPin)sourceNode).getOwner(); | |
OpaqueAction opaqueActionResult= (OpaqueAction) ((Activity)activity).getNode(OpaqueBehaviorSource.getName()); | |
OutputPin outputPinResult= opaqueActionResult.getOutputValue(sourceNode.getName(), null); | |
anObjectFlow.setSource(outputPinResult); | |
} | |
else { | |
ActivityNode opaqueActionResult= (ActivityNode) ((Activity)activity).getNode(sourceNode.getName()); | |
anObjectFlow.setSource(opaqueActionResult); | |
} | |
//set target | |
ActivityNode targetNode=((ObjectFlow)objectFlow).getTarget(); | |
if(targetNode instanceof InputPin) { | |
ActivityNode OpaqueBehaviorSource= (ActivityNode)((InputPin)targetNode).getOwner(); | |
OpaqueAction opaqueActionResult= (OpaqueAction) ((Activity)activity).getNode(OpaqueBehaviorSource.getName()); | |
InputPin inputPinResult= opaqueActionResult.getInputValue(targetNode.getName(), null); | |
anObjectFlow.setTarget(inputPinResult); | |
} | |
else { | |
ActivityNode opaqueActionResult= (ActivityNode) ((Activity)activity).getNode(targetNode.getName()); | |
anObjectFlow.setTarget(opaqueActionResult); | |
} | |
ProcessBuilder.createSatisfy((NamedElement)anObjectFlow, (NamedElement)objectFlow); | |
return anObjectFlow; | |
} | |
return null; | |
} | |
} |