/*****************************************************************************
 * 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.interoperability.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 viewpoint "strict" uses 'http://www.eclipse.org/papyrus/infra/viewpoints/configuration';
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';


transformation SysMLNotation(in blockDefinitionViewpoint : viewpoint, in internalBlockViewpoint : viewpoint, in parametricViewpoint : viewpoint, in requirementViewpoint : viewpoint, in umlFile : UML, in inS14Profile : SysML14, in requirementNatTableS11 : nattable, in allocationNatTableS11 : nattable, in requirementNatTableS14 : nattable, in allocationNatTableS14 : nattable, in requirementTableViewPoint : viewpoint, in allocationTableViewPoint : viewpoint, 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
{}