import classes : '../Classes.ecore#/';
import classescs : '../ClassesCS.ecore#/';

transformation classescs2as
{
	leftCS imports classescs;
	rightAS imports classes;

	map mCreationRootCS2Root
	{
		guard:leftCS rootCS : RootCS;
		new:rightAS root : Root;
		set rootCS.ast := root;
	}
	
	map mCreationPackageCS2Package
	{
		guard:leftCS packageCS : PackageCS;
		new:rightAS _'package' : Package;
		set packageCS.ast := _'package';
	}
	
	
	map uPackage_name
	{
		guard:leftCS packageCS : PackageCS;
		var l1 : classes::Package := packageCS.ast.oclAsType(classes::Package);
		set l1.name := packageCS.name;
	}
	
	map uRoot_ownedPackages
	{
		guard:leftCS rootCS : RootCS;
		var z1 : classes::Root := rootCS.ast.oclAsType(classes::Root);
		set z1.ownedPackages :=
			rootCS.ownedPackages.ast.oclAsType(classes::Package)->asOrderedSet();
	}
	
	entry __root__ check leftCS enforce rightAS
	{
		for rootCS : classescs::RootCS in classescs::RootCS.allInstances() {
			call mCreationRootCS2Root {
				rootCS iterates rootCS;
			}
		}
		for packageCS : classescs::PackageCS in classescs::PackageCS.allInstances() {
			call mCreationPackageCS2Package {
				packageCS iterates packageCS;
			}
		}
		
		for rootCS : classescs::RootCS in classescs::RootCS.allInstances() {
			call uRoot_ownedPackages {
				rootCS iterates rootCS;
			}
		}
		for packageCS : classescs::PackageCS in classescs::PackageCS.allInstances() {
			call uPackage_name {
				packageCS iterates packageCS;
			}
		}
	}	
}