/*******************************************************************************
 * Copyright (c) 2014 Willink Transformations and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v2.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v20.html
 *
 * Contributors:
 *     E.D.Willink - initial API and implementation
 *     Adolfo Sanchez-Barbudo Herrera (University of York) - bug397429"
 * 
 * Run As->MWE2 Workflow to regenerate the Xtest CS models.
 *******************************************************************************/
module GenerateCSModelsFromUML

import org.eclipse.ocl.examples.build.*
import org.eclipse.ocl.examples.build.utilities.*
import org.eclipse.ocl.examples.build.xtend.*
import org.eclipse.emf.mwe.utils.*
import org.eclipse.emf.mwe.utils.*
import org.eclipse.emf.ecore.resource.impl.*

var resourcesProjectName = "org.eclipse.ocl.examples.build" //"org.eclipse.ocl.resources"
var projectName = "org.eclipse.ocl.examples.build"

/**
 *	Migrate the CS models from their OMG UML representation to their Eclipse Ecore representation.
 */
Workflow {
	bean = ResourceSetImpl : resourceSet {}
    bean = StandaloneSetup { resourceSet = resourceSet
//    	uriMap = Mapping {
//    		from = "http://www.omg.org/spec/UML/20131001/PrimitiveTypes.xmi"
//    		to = "platform:/resource/${projectName}/model/PrimitiveTypes.xmi"
//    	}
//    	platformUri = ".."
//    	scanClassPath = true
//    	registerGeneratedEPackage = "org.eclipse.xtext.common.types.TypesPackage"
    }
    bean = ProjectMapSetup { resourceSet = resourceSet }
    bean = UMLStandaloneSetup { resourceSet = resourceSet }
    bean = OCLStandaloneSetup { resourceSet = resourceSet
    	dynamicPackage = Mapping {
    		from = "http://www.eclipse.org/ocl/2012/UML2EcoreControl"
    		to = "platform:/resource/${projectName}/model/UML2EcoreControl.ecore#/"
    	}
    	dynamicPackage = Mapping {
    		from = "http://www.eclipse.org/ocl/2012/UML2EcoreMapping"
    		to = "platform:/resource/${projectName}/model/UML2EcoreMapping.ecore#/"
    	}
    }
    bean = OCLDelegateSetup { resourceSet = resourceSet }
    bean = GenModelSetup { resourceSet = resourceSet }
    bean = UMLGenModelSetup { resourceSet = resourceSet }
    
    
    component = IdAssigner { resourceSet = resourceSet skipOnErrors = true
    	assignFlatIds = false
    	normalizeEcore = true
//    	normalizePrimitives = "/${resourcesProjectName}/model/pivot.uml"
    	alphabeticize = true
    	removeEcoreStereotypes = true
    	removeProfileApplications = true
//    	mapping = Mapping {
//    		from = "/${projectName}/model/ecore.uml"
//    		to = "/${projectName}/model-gen/CSEcore.uml"
//    	}
    	mapping = Mapping {
    		from = "/${resourcesProjectName}/model/pivot.uml"
    		to = "/${projectName}/model-gen/CSPivot.uml"
    	}
    	mapping = Mapping {
    		from = "/${resourcesProjectName}/model/basecs.uml"
    		to = "/${projectName}/model-gen/BaseCS.uml"
    	}
    	mapping = Mapping {
    		from = "/${resourcesProjectName}/model/essentialoclcs.uml"
    		to = "/${projectName}/model-gen/EssentialOCLCS.uml"
    	}
    	mapping = Mapping {
    		from = "/${resourcesProjectName}/model/completeoclcs.uml"
    		to = "/${projectName}/model-gen/CompleteOCLCS.uml"
    	}
    	mapping = Mapping {
    		from = "/${resourcesProjectName}/model/oclstdlibcs.uml"
    		to = "/${projectName}/model-gen/OCLstdlibCS.uml"
    	}
    	mapping = Mapping {
    		from = "/${resourcesProjectName}/model/oclinecorecs.uml"
    		to = "/${projectName}/model-gen/OCLinEcoreCS.uml"
    	}
    }
    
    component = QVToTransformationExecutor { resourceSet = resourceSet skipOnErrors = true validate = false
    	uri = "platform:/resource/${projectName}/src/org/eclipse/ocl/examples/build/qvto/UML2EcoreMerger.qvto"
    	in = "platform:/resource/${projectName}/model/CS2ASinEcore.xmi" 
    	out = "platform:/resource/${projectName}/model-gen/CS2ASinEcore.xmi" 
	}
    component = QVToTransformationExecutor { resourceSet = resourceSet skipOnErrors = true validate = false
    	uri = "platform:/resource/${projectName}/src/org/eclipse/ocl/examples/build/qvto/UML2EcoreAnalyzer.qvto"
    	in = "platform:/resource/${projectName}/model-gen/CS2ASinEcore.xmi" 
    	out = "platform:/resource/${projectName}/model-gen/CS2ASAnalysis.xmi" 
	}
    component = QVToTransformationExecutor { resourceSet = resourceSet skipOnErrors = true validate = false
    	uri = "platform:/resource/${projectName}/src/org/eclipse/ocl/examples/build/qvto/UML2EcoreSynthesizer.qvto"
    	in = "platform:/resource/${projectName}/model-gen/CS2ASAnalysis.xmi" 
    	in = "platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore" 
    	out = "platform:/resource/${projectName}/model-gen/CS2AS.ecore"
    	blackbox = "${projectName}.qvto.BlackBoxLibrary"
	}
     component = CSSplitter { resourceSet = resourceSet skipOnErrors = true
    	in = "platform:/resource/${projectName}/model-gen/CS2AS.ecore" 
     	exclude = Mapping {
    		from = "csecore"
    		to = "http://www.eclipse.org/emf/2002/Ecore"
    	}
     	exclude = Mapping {
    		from = "cspivot"
//    		to = "platform:/resource/org.eclipse.ocl.pivot/model/Pivot.ecore"
    		to = "Pivot.ecore"
    	}
     	include = Mapping {
    		from = "basecs"
    		to = "platform:/resource/${projectName}/model-gen/BaseCS.ecore"
    	}
     	include = Mapping {
    		from = "essentialoclcs"
    		to = "platform:/resource/${projectName}/model-gen/EssentialOCLCS.ecore"
    	}
     	include = Mapping {
    		from = "completeoclcs"
    		to = "platform:/resource/${projectName}/model-gen/CompleteOCLCS.ecore"
    	}
     	include = Mapping {
    		from = "oclstdlibcs"
    		to = "platform:/resource/${projectName}/model-gen/OCLstdlibCS.ecore"
    	}
     	include = Mapping {
    		from = "oclinecorecs"
    		to = "platform:/resource/${projectName}/model-gen/OCLinEcoreCS.ecore"
    	}
	}
    
/*    component = ResourceReader { resourceSet = resourceSet skipOnErrors = true
    	modelSlot = "${umlSlot}"
    	uri = "/${projectName}/model/basecs.uml"
	}
    component = PackageAlphabetizer { skipOnErrors = true
    	modelSlot = "${umlSlot}"
    }
    component = ConstraintRemover { skipOnErrors = true
    	modelSlot = "${umlSlot}"
    }
    component = CommentNormalizer { skipOnErrors = true
    	modelSlot = "${umlSlot}"
    }
    component = UMLIDAssigner { skipOnErrors = true
    	modelSlot = "${umlSlot}"
    }
    component = ResourceWriter { resourceSet = resourceSet skipOnErrors = true
    	modelSlot = "${umlSlot}"
    	uri = "/${projectName}/model-gen/BaseCS.merged.uml"
		contentTypeIdentifier = "org.eclipse.uml2.uml_5_0_0" // UMLResource.UML_CONTENT_TYPE_IDENTIFIER
    } */
}
