/*****************************************************************************
 * 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.ecore.EcoreHelper;
import org.eclipse.papyrus.interoperability.sysml16.sysml14.SysMLBlockDefinitionDiagram;
import org.eclipse.papyrus.interoperability.sysml16.sysml14.SysMLInternalBlockDiagram;
import org.eclipse.papyrus.interoperability.sysml16.sysml14.SysMLParametricDiagram;
import org.eclipse.papyrus.interoperability.sysml16.sysml14.SysMLRequirementDiagram;
import org.eclipse.papyrus.interoperability.sysml16.sysml14.SysMLAllocationTable;
import org.eclipse.papyrus.interoperability.sysml16.sysml14.SysMLRequirementTable;
import org.eclipse.papyrus.interoperability.sysml16.sysml14.SysMLRequirementTreeTable;

modeltype notation "strict" uses 'http://www.eclipse.org/gmf/runtime/1.0.2/notation';
modeltype UML "strict" uses 'http://www.eclipse.org/uml2/5.0.0/UML';
modeltype ecore "strict" uses 'http://www.eclipse.org/emf/2002/Ecore';
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';
modeltype nattable "strict" uses 'http://www.eclipse.org/papyrus/nattable/model';


transformation SysMLNotation(in umlFile : UML, in inS16Profile : SysML16, in requirementNatTableS14 : nattable, in allocationNatTableS14 : nattable, in requirementTreeNatTableS14 : nattable, in requirementNatTableS16 : nattable, in allocationNatTableS16 : nattable, in requirementTreeNatTableS16 : nattable, inout notationFile : notation);

main() {
	notationFile.objects()[notation::Diagram]->map filterSysMLDiagrams();
	notationFile.objects()[nattable::Table]->map filterSysMLTables();
}

mapping notation::Diagram::filterSysMLDiagrams() : notation::Diagram disjuncts
	notation::Diagram::fromSysML14BlockDefinitionDiagram,
	notation::Diagram::fromSysML14InternalBlockDiagram,
	notation::Diagram::fromSysML14ParametricDiagram,
	notation::Diagram::fromSysML14RequirementDiagram
{}

mapping nattable::Table::filterSysMLTables() : nattable::Table disjuncts
	nattable::Table::fromSysML14RequirementTreeTable,
	nattable::Table::fromSysML14RequirementTable,
	nattable::Table::fromSysML14AllocationTable
{}