/*****************************************************************************
 * Copyright (c) 2017 CEA LIST and others.
 *
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * 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.sysml14.sysml.SysMLBlockDefinitionDiagram;
import org.eclipse.papyrus.interoperability.sysml14.sysml.SysMLInternalBlockDiagram;
import org.eclipse.papyrus.interoperability.sysml14.sysml.SysMLParametricDiagram;
import org.eclipse.papyrus.interoperability.sysml14.sysml.SysMLRequirementDiagram;
import org.eclipse.papyrus.interoperability.sysml14.sysml.SysMLAllocationTable;
import org.eclipse.papyrus.interoperability.sysml14.sysml.SysMLRequirementTable;

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 architecture "strict" uses 'http://www.eclipse.org/papyrus/infra/core/architecture';
modeltype SysML11 "strict" uses 'http://www.eclipse.org/papyrus/0.7.0/SysML';
modeltype SysML14 "strict" uses 'http://www.eclipse.org/papyrus/sysml/1.4/SysML';
modeltype nattable "strict" uses 'http://www.eclipse.org/papyrus/nattable/model';
modeltype gmfdiagrepresentation "strict" uses 'http://www.eclipse.org/papyrus/infra/gmfdiag/representation';
modeltype nattablerepresentation "strict" uses 'http://www.eclipse.org/papyrus/infra/nattable/representation';


transformation SysMLNotation(in sysml14architecture : architecture, in umlFile : UML, in inS14Profile : SysML14, in requirementNatTableS11 : nattable, in allocationNatTableS11 : nattable, in requirementNatTableS14 : nattable, in allocationNatTableS14 : 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::fromSysML11BlockDefinitionDiagram,
	notation::Diagram::fromSysML11InternalBlockDiagram,
	notation::Diagram::fromSysML11ParametricDiagram,
	notation::Diagram::fromSysML11RequirementDiagram
{}

mapping nattable::Table::filterSysMLTables() : nattable::Table disjuncts
	nattable::Table::fromSysML11RequirementTable,
	nattable::Table::fromSysML11AllocationTable
{}