blob: ffe3b7979de67a9ecb0d1f95e26a93b5c86e2afc [file] [log] [blame]
/**
* 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;
}
}