blob: d37cbac54224e3a877451fa2d5945a70a3fbddf4 [file] [log] [blame]
/*****************************************************************************
* Copyright (c) 2019 CEA LIST, 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:
* Nicolas FAUVERGUE (CEA LIST) nicolas.fauvergue@cea.fr - Initial API and implementation
*
*****************************************************************************/
import org.eclipse.papyrus.uml.m2m.qvto.common.blackboxes.emf.EMFResource;
import org.eclipse.papyrus.interoperability.sysml16.sysml14.blackboxes.VersioningHelper;
modeltype ecore "strict" uses 'http://www.eclipse.org/emf/2002/Ecore';
modeltype UML "strict" uses 'http://www.eclipse.org/uml2/5.0.0/UML';
modeltype SysML14 "strict" uses 'http://www.eclipse.org/papyrus/sysml/1.4/SysML';
modeltype SysML16 "strict" uses 'http://www.eclipse.org/papyrus/sysml/1.6/SysML';
/**
* This file provides useful method for SysML.
*/
library SysMLUtils;
/**
* Create the eAnnotation for the versioning with :
* <li>
* <ul> Source model name </ul>
* <ul> Migration date </ul>
* <ul> Migration bundle version </ul>
* </li>
**/
helper UML::Model::createEAnnotationForVersioning() : ecore::EAnnotation{
var versionning:EAnnotation:=object EAnnotation{
source := getEAnnotationSourceNameForVersioning();
details+= object EStringToStringMapEntry{
key := getKeyForSourceModelName();
value := getPapyrusResourceName(self);
};
details+= object EStringToStringMapEntry{
key := getKeyForPapyrusMigrationDate();
value := getPapyrusMigrationDate();
};
details+= object EStringToStringMapEntry{
key := getKeyForPapyrusMigrationBundleVersion();
value := getImportBundleSysMLMigrationVersion();
};
};
return versionning;
}
// This allows to transform the SysML1.4 FlowDirection to SysML1.6 FlowDirectionKind
helper getDirection(direction:SysML14::portsandflows::FlowDirection) : SysML16::portsandflows::FlowDirectionKind {
if(direction = SysML14::portsandflows::FlowDirection::_in){
return SysML16::portsandflows::FlowDirectionKind::_in;
}elif(direction = SysML14::portsandflows::FlowDirection::_out){
return SysML16::portsandflows::FlowDirectionKind::_out;
}elif(direction = SysML14::portsandflows::FlowDirection::_inout){
return SysML16::portsandflows::FlowDirectionKind::_inout;
};
return null;
}
// This allows to transform the SysML1.4 FeatureDirection to SysML1.6 FeatureDirectionKind
helper getDirection(direction:SysML14::portsandflows::FeatureDirection) : SysML16::portsandflows::FeatureDirectionKind {
if(direction = SysML14::portsandflows::FeatureDirection::provided){
return SysML16::portsandflows::FeatureDirectionKind::provided;
}elif(direction = SysML14::portsandflows::FeatureDirection::providedRequired){
return SysML16::portsandflows::FeatureDirectionKind::providedRequired;
}elif(direction = SysML14::portsandflows::FeatureDirection::required){
return SysML16::portsandflows::FeatureDirectionKind::required;
};
return null;
}