blob: e81d6402a035dd3c70387c2f4e8e37f556e66d91 [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.ActivityParameterNode;
import org.eclipse.uml2.uml.DataStoreNode;
import org.eclipse.uml2.uml.Element;
import org.eclipse.uml2.uml.NamedElement;
import org.eclipse.uml2.uml.UMLFactory;
public class DataStoreProcessCreation implements IProcessCreation {
private boolean seekParameter;
private boolean sourceParameter;
@Override
public Element createElement(Element dataStore, Element activity) {
if( dataStore instanceof DataStoreNode) {
DataStoreNode dataStoreNode=(DataStoreNode)dataStore;
if( dataStoreNode.getIncomings().size()==0 && sourceParameter) {
ActivityParameterNode activityParameterNode= UMLFactory.eINSTANCE.createActivityParameterNode();
((Activity) activity).getOwnedNodes().add(activityParameterNode);
activityParameterNode.setName(((DataStoreNode)dataStore).getName());
ProcessBuilder.createSatisfy((NamedElement)activityParameterNode, (NamedElement)dataStore);
}
else if( dataStoreNode.getOutgoings().size()==0&& seekParameter) {
ActivityParameterNode activityParameterNode= UMLFactory.eINSTANCE.createActivityParameterNode();
((Activity) activity).getOwnedNodes().add(activityParameterNode);
activityParameterNode.setName(((DataStoreNode)dataStore).getName());
ProcessBuilder.createSatisfy((NamedElement)activityParameterNode, (NamedElement)dataStore);
}
else {
DataStoreNode aDataStoreNode= UMLFactory.eINSTANCE.createDataStoreNode();
((Activity) activity).getOwnedNodes().add(aDataStoreNode);
aDataStoreNode.setName(((DataStoreNode)dataStore).getName());
ProcessBuilder.createSatisfy((NamedElement)aDataStoreNode, (NamedElement)dataStore);
return aDataStoreNode;
}
}
return null;
}
public void generateParameterForSeek(boolean value) {
this.seekParameter=value;
}
public void generateParameterForSource(boolean value) {
this.sourceParameter=value;
}
}