/*******************************************************************************
 * Copyright (c) 2010, 2013 E.D.Willink 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:
 *     E.D.Willink - initial API and implementation
 *     Adolfo Sanchez-Barbudo Herrera (University of York) - bug397429"
 * 
 * Run As->MWE2 Workflow to regenerate the pivot model.
 *******************************************************************************/
module GeneratePivotModel

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.*
import org.eclipse.uml2.uml.resource.XMI2UMLResource

var ecoreSlot = "ecore"
var umlSlot = "uml"
var projectName = "org.eclipse.ocl.examples.pivot"
//var platformURI = ".."

/**
 *	Generate the Pivot Model, by performing the merge to create the flattened package
 *  with additional MDT/OCL content, alphabeticsing the classes, reloading the genmodel
 *  and finally generating the model code.
 */
Workflow {
	bean = ResourceSetImpl : resourceSet {}
    bean = ProjectMapSetup { resourceSet = resourceSet }
    bean = UMLStandaloneSetup { resourceSet = resourceSet }
    bean = OCLStandaloneSetup {}
//    bean = GenModelSetup { resourceSet = resourceSet }
    bean = UMLGenModelSetup { resourceSet = resourceSet }
    component = ResourceReader { resourceSet = resourceSet skipOnErrors = true
    	modelSlot = "${umlSlot}"
    	uri = "/${projectName}/model/Pivot.uml"
	}
    component = PackageMerger { skipOnErrors = true
    	modelSlot = "${umlSlot}"
    }
    component = PackageAlphabetizer { skipOnErrors = true
    	modelSlot = "${umlSlot}"
    }
    component = ConstraintRemover { skipOnErrors = true
    	modelSlot = "${umlSlot}"
    }
    component = NonAbstractTypeZapper { 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/Pivot.merged.uml"
		contentTypeIdentifier = "org.eclipse.uml2.uml_4_0_0" // UMLResource.UML_CONTENT_TYPE_IDENTIFIER
    }
    component = GenmodelReloader { resourceSet = resourceSet skipOnErrors = true
    	projectName = "${projectName}"
    	modelSlot = "${ecoreSlot}"
    	genModel = "/${projectName}/model/Pivot.merged.genmodel"
    	ecoreFile = "/${projectName}/model/Pivot.ecore"
//    	modelImporter = "org.eclipse.uml2.uml.ecore.importer.UMLImporter"
//    	modelImporter = "org.eclipse.ocl.examples.build.utilities.UMLImporterWithDelegates"	
    }
    component = ResourceReader { resourceSet = resourceSet skipOnErrors = true
    	modelSlot = "${ecoreSlot}"
    	uri = "/${projectName}/model/Pivot.ecore"
    }
    component = ConstraintMerger { resourceSet = resourceSet skipOnErrors = true
    	projectName = "${projectName}"
    	modelSlot = "${ecoreSlot}"
    	uri = "model/Pivot.ocl"
    }
    component = EPackageAlphabetizer { skipOnErrors = true
    	modelSlot = "${ecoreSlot}"
    }
    component = PruneSuperClasses { skipOnErrors = true
    	modelSlot = "${ecoreSlot}"
    }
    component = SetASMetamodel { skipOnErrors = true
    	modelSlot = "${ecoreSlot}"
    }
//    component = PivotWorkarounds { skipOnErrors = true
//    	modelSlot = "${ecoreSlot}"
//    }
//    component = OCLDelegateActivator { skipOnErrors = true
//    	modelSlot = "${pivotSlot}"
//    }
    component = ResourceWriter { resourceSet = resourceSet skipOnErrors = true
    	modelSlot = "${ecoreSlot}"
    }
    
//****** ASBH
//    This doesn't work yet. Although it looks like the pattern is weaved
//    in the ecore model, if you remove any manually implemented accept method
//    and regenerates using the workflow, the accept methods are not generated.
//
//    NOTE: The read/write done before executing the VisitorPattern are needed
//    to see the changes serialized in the metamodel. Just debugging purposes.
//
//    component = ResourceReader { resourceSet = resourceSet skipOnErrors = true
//    	modelSlot = "${ecoreSlot}"
//    	uri = "/${projectName}/model/Pivot.ecore"
//    }
//    
//    component = OCLVisitorPatternWeaverComponent {
//    	resourceSet = resourceSet
//    	uri = "/org.eclipse.ocl.examples.build/qvtoTransf/VisitorPatternTransf.qvto"
//    	in = "/${projectName}/model/Pivot.ecore" 
//    	visitorInterfaceName = "Visitor"
//    	visitorInterfaceQualifiedName = "org.eclipse.ocl.examples.pivot.util.Visitor"
//    }
//    
//    component = ResourceWriter { resourceSet = resourceSet skipOnErrors = true
//    	modelSlot = "${ecoreSlot}"
//    }
//****** END OF ASBH
    component = GenerateModel { resourceSet = resourceSet skipOnErrors = true
//    	projectName = "${projectName}"
    	genModel = "/${projectName}/model/Pivot.merged.genmodel"
//    	clearResourceSet = false
//    	modelSlot = "${ecoreSlot}"
    }

/*    component = ModelVisitorCodeGenerator { resourceSet = resourceSet
    	projectName = "${projectName}"
    	genModelFile = "model/Pivot.merged.genmodel"
    	javaFolder = "emf-gen"
    	modelPackageName = "${projectName}"
    	visitorPackageName = "${projectName}.util"
    	visitorClassName = "Visitor"
    	visitableClassName = "Visitable"
    } */
    component = GenerateASVisitors { resourceSet = resourceSet
    	projectName = "${projectName}"
    	projectPrefix = "Pivot"
    	superProjectName = ""
    	genModelFile = "model/Pivot.merged.genmodel"
    	javaFolder = "emf-gen"
    	modelPackageName = "${projectName}"
    	visitorPackageName = "${projectName}.util"
    	visitorClassName = "Visitor"
//    	visitablePackageName = "${projectName}.util"
    	visitableClassName = "Visitable"
    }
//  	component = @GenerateOCLMetaModel {}
/*    component = OCLMetaModelCodeGenerator { resourceSet = resourceSet
    	projectName = "${projectName}"
    	libraryFile = "model/Pivot.ecore"
    	javaFolder = "emf-gen"
    	javaPackageName = "${projectName}.model"
    	javaClassName = "OCLMetaModel"
    } */
    component = GenerateOCLMetaModelXtend { //resourceSet = resourceSet
    	projectName = "${projectName}"
    	modelFile = "model/Pivot.ecore"
    	uri = "http://www.eclipse.org/ocl/3.1.0/Pivot"
    	javaFolder = "emf-gen"
    	javaPackageName = "${projectName}.model"
    	javaClassName = "OCLMetaModel"
    }
//    component = @GeneratePivotTables {}
//    component = Model2tablesGenerator { resourceSet = resourceSet
//    	genModelFile = "/${projectName}/model/Pivot.merged.genmodel"
//    }
}

