blob: c757b96da3b931361ab4bbf7dff9835c91e47316 [file] [log] [blame]
/**
* <copyright>
*
* Copyright (c) 2011, 2013 Willink Transformations, University of York 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 - bug397429
*
* </copyright>
*
*
* Run As->MWE2 Workflow to regenerate QVTo models.
*/
module GenerateQVToASModels
import org.eclipse.ocl.examples.build.utilities.*
import org.eclipse.ocl.examples.build.xtend.*
import org.eclipse.emf.mwe.utils.*
import org.eclipse.emf.ecore.resource.impl.*
/**
* Generate the Pivot-based QVTo Models.
*/
var platformURI = ".."
var javaSrcFolder = "emf-gen"
/*
* OCL related configuration variables
*/
var oclProjectName = "org.eclipse.ocl.pivot"
var oclProjectURI = "platform:/resource/${oclProjectName}"
var oclProjectPrefix = ""
var oclEcoreProjectPath = "model/Pivot.ecore"
var oclEcoreURI = "${oclProjectURI}/${oclEcoreProjectPath}"
var oclModelPackage = "${oclProjectName}"
var oclVisitorPackage = "${oclModelPackage}.util"
var oclVisitorName = "Visitor"
var oclVisitorQualifiedName = "${oclVisitorPackage}.${oclVisitorName}"
var oclVisitablePackage = "${oclVisitorPackage}"
var oclVisitableName = "Visitable"
/*
* ImperativeOCL related configuration variables
*/
var imperativeOclProjectName = "org.eclipse.qvto.examples.pivot.imperativeocl"
var imperativeOclProjectURI = "platform:/resource/${imperativeOclProjectName}"
var imperativeOclProjectPrefix = "ImperativeOCL"
var imperativeOclEcoreProjectPath = "model/ImperativeOCL.ecore"
var imperativeOclEcoreURI = "${imperativeOclProjectURI}/${imperativeOclEcoreProjectPath}"
var imperativeOclGenModelProjectPath = "model/${imperativeOclProjectPrefix}.genmodel"
var imperativeOclGenModelPath = "${imperativeOclProjectName}/${imperativeOclGenModelProjectPath}"
var imperativeOclModelPackage = "${imperativeOclProjectName}"
var imperativeOclVisitorPackage = "${imperativeOclProjectName}.util"
var imperativeOclVisitorName = "${imperativeOclProjectPrefix}Visitor"
var imperativeOclVisitorQualifiedName = "${imperativeOclVisitorPackage}.${imperativeOclVisitorName}"
/*
* QVTOperational related configuration variables
*/
var qvtOperationalProjectName = "org.eclipse.qvto.examples.pivot.qvtoperational"
var qvtOperationalProjectURI = "platform:/resource/${qvtOperationalProjectName}"
var qvtOperationalProjectPrefix = "QVTOperational"
var qvtOperationalEcoreProjectPath = "model/QVTOperational.ecore"
var qvtOperationalEcoreURI = "${qvtOperationalProjectURI}/${qvtOperationalEcoreProjectPath}"
var qvtOperationalGenModelProjectPath = "model/${qvtOperationalProjectPrefix}.genmodel"
var qvtOperationalGenModelPath = "${qvtOperationalProjectName}/${qvtOperationalGenModelProjectPath}"
var qvtOperationalModelPackage = "${qvtOperationalProjectName}"
var qvtOperationalVisitorPackage = "${qvtOperationalProjectName}.util"
var qvtOperationalVisitorName = "${qvtOperationalProjectPrefix}Visitor"
var qvtOperationalVisitorQualifiedName = "${qvtOperationalVisitorPackage}.${qvtOperationalVisitorName}"
Workflow {
bean = ResourceSetImpl : resourceSet {}
// bean = ProjectMapSetup { resourceSet = resourceSet }
bean = StandaloneSetup { resourceSet = resourceSet
platformUri = platformURI // Common path from which...
scanClassPath = true // ... a scan finds all classes
// In case that the build.ocl plugin only resides in the workspace
// as might be the case for the *.build projects
uriMap = Mapping {
from = "platform:/plugin/org.eclipse.ocl.examples.build/"
to = "platform:/resource/org.eclipse.ocl.examples.build/"
}
}
bean = EcoreGenModelSetup { resourceSet = resourceSet }
/*
FIXME: We can't weave the visitor pattern into the model because OCL doesn't do it.
We are forced to use the OCL approach, in essence, using GenModel annotations wiht source:
http://www.eclipse.org/OCL/GenModel/Visitor
See (org.eclipse.ocl.pivot/model/Pivot.genmodel)
component = DerivedVisitorPatternWeaver {
resourceSet = resourceSet
in = imperativeOclEcoreURI
in = oclEcoreURI
in = oclEcoreURI
superVisitorInterfaceName = oclVisitorName
superVisitorInterfaceQualifiedName = oclVisitorQualifiedName
derivedVisitorInterfaceName = imperativeOclVisitorName
derivedVisitorInterfaceQualifiedName = imperativeOclVisitorQualifiedName
}
component = DerivedVisitorPatternWeaver {
resourceSet = resourceSet
in = qvtOperationalEcoreURI
in = imperativeOclEcoreURI
in = oclEcoreURI
rootVisitorInterfaceName = oclVisitorName
rootVisitorInterfaceQualifiedName = oclVisitorQualifiedName
superVisitorInterfaceName = imperativeOclVisitorName
superVisitorInterfaceQualifiedName = imperativeOclVisitorQualifiedName
derivedVisitorInterfaceName = qvtOperationalVisitorName
derivedVisitorInterfaceQualifiedName = qvtOperationalVisitorQualifiedName
} */
component = GenerateModel { resourceSet = resourceSet skipOnErrors = true
genModel = imperativeOclGenModelPath
clearResourceSet = false
}
component = GenerateModel { resourceSet = resourceSet skipOnErrors = true
genModel = qvtOperationalGenModelPath
clearResourceSet = false
}
component = GenerateASVisitors { resourceSet = resourceSet
projectName = imperativeOclProjectName
projectPrefix = imperativeOclProjectPrefix
superProjectName = oclProjectName
superProjectPrefix = oclProjectPrefix
javaFolder = javaSrcFolder
genModelFile = imperativeOclGenModelProjectPath
modelPackageName = imperativeOclModelPackage
visitorPackageName = imperativeOclVisitorPackage
visitorClassName = imperativeOclVisitorName
superVisitorPackageName = oclVisitorPackage
superVisitorClassName = oclVisitorName
visitablePackageName = oclVisitablePackage
visitableClassName = oclVisitableName
}
component = GenerateASVisitors { resourceSet = resourceSet
projectName = qvtOperationalProjectName
projectPrefix = qvtOperationalProjectPrefix
superProjectName = imperativeOclProjectName
superProjectPrefix = imperativeOclProjectPrefix
javaFolder = javaSrcFolder
genModelFile = qvtOperationalGenModelProjectPath
modelPackageName = qvtOperationalModelPackage
visitorPackageName = qvtOperationalVisitorPackage
visitorClassName = qvtOperationalVisitorName
superVisitorPackageName = imperativeOclVisitorPackage
superVisitorClassName = imperativeOclVisitorName
visitablePackageName = oclVisitablePackage
visitableClassName = oclVisitableName
}
}