blob: b4204d59505db5269d33b732ce1506c1ff8778dc [file] [log] [blame]
/*******************************************************************************
* 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"
// }
}