blob: 959bd0e46ef0ef81d954adad9b20022331f337aa [file] [log] [blame]
Ed Willink17785c52014-05-20 12:29:51 +01001/*******************************************************************************
Ed Willink52e3d062015-05-19 10:14:44 +01002 * Copyright (c) 2013 Willink Transformations and others.
ewillinkb6c67562011-01-24 20:54:27 +00003 * All rights reserved. This program and the accompanying materials
Ed Willink2b4d8be2018-06-13 11:53:02 +01004 * are made available under the terms of the Eclipse Public License v2.0
ewillinkb6c67562011-01-24 20:54:27 +00005 * which accompanies this distribution, and is available at
Ed Willink2b4d8be2018-06-13 11:53:02 +01006 * http://www.eclipse.org/legal/epl-v20.html
ewillinkb6c67562011-01-24 20:54:27 +00007 *
8 * Contributors:
9 * E.D.Willink - initial API and implementation
ewillinkb6c67562011-01-24 20:54:27 +000010 *
11 * Run As->MWE2 Workflow to regenerate the pivot model.
Ed Willink17785c52014-05-20 12:29:51 +010012 *******************************************************************************/
ewillinkb6c67562011-01-24 20:54:27 +000013module GeneratePivotModel
14
15import org.eclipse.ocl.examples.build.utilities.*
Ed.Willink2dbd7b42013-06-08 17:16:10 +010016import org.eclipse.ocl.examples.build.xtend.*
ewillinkb6c67562011-01-24 20:54:27 +000017import org.eclipse.emf.mwe.utils.*
18import org.eclipse.emf.mwe.utils.*
19import org.eclipse.emf.ecore.resource.impl.*
Ed Willink9b04aba2022-09-19 10:29:51 +010020//import org.eclipse.uml2.uml.resource.XMI2UMLResource
ewillinkb6c67562011-01-24 20:54:27 +000021
Ed Willink9b04aba2022-09-19 10:29:51 +010022//var buildProjectName = "org.eclipse.ocl.examples.build"
Ed.Willink02006782011-12-10 14:28:26 +000023var ecoreSlot = "ecore"
Ed Willink9b04aba2022-09-19 10:29:51 +010024//var umlSlot = "uml"
Ed Willinkc8c4d362015-03-16 18:53:39 +000025var pivotProjectName = "org.eclipse.ocl.pivot"
Ed Willink30414ed2014-12-28 13:01:28 +000026var internalProjectName = "org.eclipse.ocl.pivot"
Ed Willink841cda92016-11-19 09:48:34 +000027var basePivotProject = "../../plugins/${pivotProjectName}"
Ed.Willink2dbd7b42013-06-08 17:16:10 +010028//var platformURI = ".."
ewillinkb6c67562011-01-24 20:54:27 +000029
30/**
31 * Generate the Pivot Model, by performing the merge to create the flattened package
32 * with additional MDT/OCL content, alphabeticsing the classes, reloading the genmodel
33 * and finally generating the model code.
34 */
35Workflow {
Ed Willink9b04aba2022-09-19 10:29:51 +010036/* Bug 580755 redesignates Pivot.ecore as the model master
37 bean = ResourceSetImpl : pivotCreateResourceSet {}
Ed Willinka896c6e2016-12-07 10:03:28 +000038 bean = StandaloneSetup { resourceSet = pivotCreateResourceSet
Ed Willinkad78e652015-03-16 21:01:05 +000039 uriMap = Mapping {
40 from = "http://www.omg.org/spec/UML/20131001/PrimitiveTypes.xmi"
41 to = "platform:/resource/${buildProjectName}/model/PrimitiveTypes.xmi"
42 }
43// platformUri = ".."
44// scanClassPath = true
45// registerGeneratedEPackage = "org.eclipse.xtext.common.types.TypesPackage"
46 }
Ed Willinka896c6e2016-12-07 10:03:28 +000047 bean = ProjectMapSetup { resourceSet = pivotCreateResourceSet }
48 bean = UMLStandaloneSetup { resourceSet = pivotCreateResourceSet }
49 bean = OCLStandaloneSetup { resourceSet = pivotCreateResourceSet
Ed Willinkad78e652015-03-16 21:01:05 +000050 dynamicPackage = Mapping {
51 from = "http://www.eclipse.org/ocl/2012/UML2EcoreControl"
52 to = "platform:/resource/${buildProjectName}/model/UML2EcoreControl.ecore#/"
53 }
54 dynamicPackage = Mapping {
55 from = "http://www.eclipse.org/ocl/2012/UML2EcoreMapping"
56 to = "platform:/resource/${buildProjectName}/model/UML2EcoreMapping.ecore#/"
57 }
58 }
59// bean = SplitGenModelSetup { resourceSet = resourceSet }
Ed Willinka896c6e2016-12-07 10:03:28 +000060 bean = OCLDelegateSetup { resourceSet = pivotCreateResourceSet }
Ed Willinkad78e652015-03-16 21:01:05 +000061 bean = CompleteOCLStandaloneSetup {}
62 //
63 // Fixup xmi:ids and convert cmof to uml
64 //
Ed Willinka896c6e2016-12-07 10:03:28 +000065 component = IdAssigner { resourceSet = pivotCreateResourceSet skipOnErrors = true
Ed Willinkad78e652015-03-16 21:01:05 +000066 assignFlatIds = true
67 mapping = Mapping {
68 from = "/${buildProjectName}/model/PrimitiveTypes.xmi"
69 to = "/${buildProjectName}/model-gen/PrimitiveTypes.uml"
70 }
71 mapping = Mapping {
72 from = "/${buildProjectName}/model/UML.xmi"
73 to = "/${buildProjectName}/model-gen/UML.uml"
74 }
75 }
Ed Willinka896c6e2016-12-07 10:03:28 +000076 component = IdAssigner { resourceSet = pivotCreateResourceSet skipOnErrors = true
Ed Willinkad78e652015-03-16 21:01:05 +000077 assignFlatIds = false
78 mapping = Mapping {
79 from = "/${buildProjectName}/model/OCL.uml"
80 to = "/${buildProjectName}/model-gen/OCL.uml"
81 }
82 mapping = Mapping {
83 from = "/${buildProjectName}/model/MDTOCL.uml"
84 to = "/${buildProjectName}/model-gen/MDTOCL.uml"
85 }
86 }
87 //
88 // Create an OclPivot.ecore that can be compared with the new.
89 //
Ed Willinka896c6e2016-12-07 10:03:28 +000090 component = ResourceReader { resourceSet = pivotCreateResourceSet skipOnErrors = true
Ed Willinkad78e652015-03-16 21:01:05 +000091 modelSlot = "${ecoreSlot}"
92 uri = "/org.eclipse.ocl.pivot/model/Pivot.ecore"
93 }
Ed Willinka896c6e2016-12-07 10:03:28 +000094 component = EcoreNormalizer { resourceSet = pivotCreateResourceSet skipOnErrors = true
Ed Willinkad78e652015-03-16 21:01:05 +000095 modelSlot = "${ecoreSlot}"
96 }
Ed Willinka896c6e2016-12-07 10:03:28 +000097 component = SetNsURI { resourceSet = pivotCreateResourceSet skipOnErrors = true
Ed Willinkad78e652015-03-16 21:01:05 +000098 modelSlot = "${ecoreSlot}"
99 nsURI = "http://www.eclipse.org/ocl/0.9.0/Pivot"
100 }
Ed Willinka896c6e2016-12-07 10:03:28 +0000101 component = ResourceWriter { resourceSet = pivotCreateResourceSet skipOnErrors = true
Ed Willinkad78e652015-03-16 21:01:05 +0000102 modelSlot = "${ecoreSlot}"
103 uri = "/${buildProjectName}/model-gen/OldPivot.ecore"
104 }
105
106
107
108
Ed Willinka896c6e2016-12-07 10:03:28 +0000109 component = QVToTransformationExecutor { resourceSet = pivotCreateResourceSet skipOnErrors = true
Ed Willinkad78e652015-03-16 21:01:05 +0000110 uri = "platform:/resource/${buildProjectName}/src/org/eclipse/ocl/examples/build/qvto/UML2EcoreAnalyzer.qvto"
111 in = "platform:/resource/${buildProjectName}/model/UML2ASinEcore.xmi"
112 out = "platform:/resource/${buildProjectName}/model-gen/UML2ASAnalysis.xmi"
Ed Willink5b1a8db2021-12-05 12:53:45 +0000113
114 ePackageMapping = { from = "org.eclipse.emf.ecore/model/Ecore.ecore" to = "http://www.eclipse.org/emf/2002/Ecore" }
115 ePackageMapping = { from = "org.eclipse.uml2.types/model/Types.ecore" to = "http://www.eclipse.org/uml2/5.0.0/Types" }
116 ePackageMapping = { from = "org.eclipse.uml2.uml/model/UML.ecore" to = "http://www.eclipse.org/uml2/5.0.0/UML" }
117 uriMapping = { from = "local://www.eclipse.org/ocl/2012/UML2EcoreControl" to = "org.eclipse.ocl.examples.build/model/UML2EcoreControl.ecore" }
118 uriMapping = { from = "local://www.eclipse.org/ocl/2012/UML2EcoreMapping" to = "org.eclipse.ocl.examples.build/model/UML2EcoreMapping.ecore" }
Ed Willinkad78e652015-03-16 21:01:05 +0000119 }
Ed Willinka896c6e2016-12-07 10:03:28 +0000120 component = QVToTransformationExecutor { resourceSet = pivotCreateResourceSet skipOnErrors = true
Ed Willinkad78e652015-03-16 21:01:05 +0000121 uri = "platform:/resource/${buildProjectName}/src/org/eclipse/ocl/examples/build/qvto/UML2EcoreSynthesizer.qvto"
122 in = "platform:/resource/${buildProjectName}/model-gen/UML2ASAnalysis.xmi"
123 in = "platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore"
124 out = "platform:/resource/${buildProjectName}/model-gen/UML2AS.ecore"
Ed Willink5b1a8db2021-12-05 12:53:45 +0000125
126 ePackageMapping = { from = "org.eclipse.emf.ecore/model/Ecore.ecore" to = "http://www.eclipse.org/emf/2002/Ecore" }
127 ePackageMapping = { from = "org.eclipse.uml2.types/model/Types.ecore" to = "http://www.eclipse.org/uml2/5.0.0/Types" }
128 ePackageMapping = { from = "org.eclipse.uml2.uml/model/UML.ecore" to = "http://www.eclipse.org/uml2/5.0.0/UML" }
129 uriMapping = { from = "local://www.eclipse.org/ocl/2012/UML2EcoreControl" to = "org.eclipse.ocl.examples.build/model/UML2EcoreControl.ecore" }
130 uriMapping = { from = "local://www.eclipse.org/ocl/2012/UML2EcoreMapping" to = "org.eclipse.ocl.examples.build/model/UML2EcoreMapping.ecore" }
Ed Willinkad78e652015-03-16 21:01:05 +0000131 }
Ed Willinka896c6e2016-12-07 10:03:28 +0000132 component = ResourceReader { resourceSet = pivotCreateResourceSet skipOnErrors = true
Ed Willinkad78e652015-03-16 21:01:05 +0000133 modelSlot = "${ecoreSlot}"
134 uri = "/${buildProjectName}/model-gen/UML2AS.ecore"
135 }
Ed Willink9b04aba2022-09-19 10:29:51 +0100136/ * component = ConstraintMerger { resourceSet = pivotCreateResourceSet skipOnErrors = true
Ed Willinkad78e652015-03-16 21:01:05 +0000137 projectName = "${buildProjectName}"
138 modelSlot = "${ecoreSlot}"
139 uri = "model/Pivot.ocl"
Ed Willink9b04aba2022-09-19 10:29:51 +0100140 } * /
Ed Willinkad78e652015-03-16 21:01:05 +0000141 component = EPackageAlphabetizer { skipOnErrors = true
142 modelSlot = "${ecoreSlot}"
143 }
144// component = PruneSuperClasses { skipOnErrors = true
145// modelSlot = "${ecoreSlot}"
146// }
147// component = OCLDelegateActivator { skipOnErrors = true
148// modelSlot = "${pivotSlot}"
149// }
Ed Willinka896c6e2016-12-07 10:03:28 +0000150 component = ResourceWriter { resourceSet = pivotCreateResourceSet skipOnErrors = true
Ed Willinkad78e652015-03-16 21:01:05 +0000151 modelSlot = "${ecoreSlot}"
152 uri = "/${buildProjectName}/model-gen/RawPivot.ecore"
153 }
154 //
155 // Create a NewPivot.ecore that can be compared with the old.
156 //
Ed Willinka896c6e2016-12-07 10:03:28 +0000157 component = ResourceReader { resourceSet = pivotCreateResourceSet skipOnErrors = true
Ed Willinkad78e652015-03-16 21:01:05 +0000158 modelSlot = "${ecoreSlot}"
159 uri = "/${buildProjectName}/model-gen/RawPivot.ecore"
160 }
Ed Willinka896c6e2016-12-07 10:03:28 +0000161 component = EcoreNormalizer { resourceSet = pivotCreateResourceSet skipOnErrors = true
Ed Willinkad78e652015-03-16 21:01:05 +0000162 modelSlot = "${ecoreSlot}"
163 }
Ed Willinka896c6e2016-12-07 10:03:28 +0000164 component = ResourceWriter { resourceSet = pivotCreateResourceSet skipOnErrors = true
Ed Willinkad78e652015-03-16 21:01:05 +0000165 modelSlot = "${ecoreSlot}"
166 uri = "/${buildProjectName}/model-gen/NewPivot.ecore"
167 }
168 //
169 //
170 //
171 component = Ecore2UMLConverter { skipOnErrors = true
172 ecoreSlot = "${ecoreSlot}"
173 umlSlot = "${umlSlot}"
174 }
175 component = PackageAlphabetizer { skipOnErrors = true
Ed.Willink02006782011-12-10 14:28:26 +0000176 modelSlot = "${umlSlot}"
Ed Willinkad78e652015-03-16 21:01:05 +0000177 }
Ed Willinka896c6e2016-12-07 10:03:28 +0000178 component = ResourceWriter { resourceSet = pivotCreateResourceSet skipOnErrors = true
Ed Willinkad78e652015-03-16 21:01:05 +0000179 modelSlot = "${umlSlot}"
180 uri = "/${buildProjectName}/model-gen/NewPivot.uml"
181 }
182 //
183 // Make manually copied Pivot.uml stable for diagrams
184 //
Ed Willinka896c6e2016-12-07 10:03:28 +0000185 component = ResourceReader { resourceSet = pivotCreateResourceSet skipOnErrors = true
Ed Willinkad78e652015-03-16 21:01:05 +0000186 modelSlot = "${umlSlot}"
187 uri = "/${buildProjectName}/model-gen/NewPivot.uml"
188 }
Ed Willinka896c6e2016-12-07 10:03:28 +0000189 component = UMLIDAssigner { resourceSet = pivotCreateResourceSet skipOnErrors = true
Ed Willinkad78e652015-03-16 21:01:05 +0000190 modelSlot = "${umlSlot}"
191 }
Ed Willinka896c6e2016-12-07 10:03:28 +0000192 component = ResourceWriter { resourceSet = pivotCreateResourceSet skipOnErrors = true
Ed Willinkad78e652015-03-16 21:01:05 +0000193 modelSlot = "${umlSlot}"
194 uri = "/${buildProjectName}/model-gen/Pivot.uml"
195 }
Ed Willink9b04aba2022-09-19 10:29:51 +0100196*/
Ed Willinkad78e652015-03-16 21:01:05 +0000197
Ed Willinka7c29522016-12-08 18:43:16 +0000198 bean = ResourceSetImpl : pivotRenameResourceSet {}
199 bean = ProjectMapSetup { resourceSet = pivotRenameResourceSet }
Ed Willink9b04aba2022-09-19 10:29:51 +0100200// bean = UMLStandaloneSetup { resourceSet = pivotRenameResourceSet }
Ed Willinka7c29522016-12-08 18:43:16 +0000201 bean = OCLStandaloneSetup {}
202 bean = EcoreGenModelSetup { resourceSet = pivotRenameResourceSet }
203 component = ResourceRenamer { resourceSet = pivotRenameResourceSet skipOnErrors = true
Ed Willink9b04aba2022-09-19 10:29:51 +0100204// projectName = "${buildProjectName}"
205 projectName = "${internalProjectName}"
Ed Willinka7c29522016-12-08 18:43:16 +0000206 resourceRename = {
Ed Willink9b04aba2022-09-19 10:29:51 +0100207// from = "model-gen/RawPivot.ecore"
208 from = "model/PivotStructural.ecore"
209 to = "model/Pivot.ecore"
Ed Willinka7c29522016-12-08 18:43:16 +0000210 }
211 }
212 //
213 //
214 //
Ed Willinke120f522016-12-07 19:24:32 +0000215 bean = ResourceSetImpl : pivotMergeResourceSet {}
216 bean = ProjectMapSetup { resourceSet = pivotMergeResourceSet }
Ed Willink9b04aba2022-09-19 10:29:51 +0100217// bean = UMLStandaloneSetup { resourceSet = pivotMergeResourceSet }
Ed Willinkad78e652015-03-16 21:01:05 +0000218 bean = OCLStandaloneSetup {}
Ed Willinke120f522016-12-07 19:24:32 +0000219 bean = EcoreGenModelSetup { resourceSet = pivotMergeResourceSet }
Ed Willinka7c29522016-12-08 18:43:16 +0000220 component = ConstraintMerger { resourceSet = pivotMergeResourceSet skipOnErrors = true
221 projectName = "${internalProjectName}"
222 libraryURI = "http://www.eclipse.org/ocl/2015/Library"
223 ecoreURI = "model/Pivot.ecore"
224 oclURI = "model/Pivot.ocl"
225 invariantPrefix = "validate"
226 }
Ed Willinke120f522016-12-07 19:24:32 +0000227 component = ResourceReader { resourceSet = pivotMergeResourceSet skipOnErrors = true
228 modelSlot = "${ecoreSlot}"
Ed Willink1d60b512014-12-16 12:41:23 +0000229 uri = "/${internalProjectName}/model/Pivot.ecore"
Ed Willinke120f522016-12-07 19:24:32 +0000230 }
ewillinkb6c67562011-01-24 20:54:27 +0000231 component = EPackageAlphabetizer { skipOnErrors = true
Ed.Willink02006782011-12-10 14:28:26 +0000232 modelSlot = "${ecoreSlot}"
ewillinkb6c67562011-01-24 20:54:27 +0000233 }
234 component = PruneSuperClasses { skipOnErrors = true
Ed.Willink02006782011-12-10 14:28:26 +0000235 modelSlot = "${ecoreSlot}"
ewillinkb6c67562011-01-24 20:54:27 +0000236 }
Ed Willink1637f092014-12-28 15:54:52 +0000237 component = SetASmetamodel { skipOnErrors = true
Ed.Willink67b50b72013-10-19 18:43:50 +0100238 modelSlot = "${ecoreSlot}"
239 }
Ed Willink566e1c32016-12-08 11:37:11 +0000240 component = StructuralENamedElementIdAssigner { skipOnErrors = true
241 modelSlot = "${ecoreSlot}"
242 }
Ed Willinke120f522016-12-07 19:24:32 +0000243 component = ResourceWriter { resourceSet = pivotMergeResourceSet skipOnErrors = true
244 modelSlot = "${ecoreSlot}"
245 uri = "/${internalProjectName}/model/Pivot.ecore"
246 }
247 //
248 //
249 //
250 bean = ResourceSetImpl : pivotGenerateResourceSet {}
251 bean = ProjectMapSetup { resourceSet = pivotGenerateResourceSet }
Ed Willink9b04aba2022-09-19 10:29:51 +0100252// bean = UMLStandaloneSetup { resourceSet = pivotGenerateResourceSet }
Ed Willinke120f522016-12-07 19:24:32 +0000253 bean = OCLStandaloneSetup {}
254 bean = EcoreGenModelSetup { resourceSet = pivotGenerateResourceSet }
255 component = GenmodelReloader { resourceSet = pivotGenerateResourceSet skipOnErrors = true
256 projectName = "${internalProjectName}"
Ed Willinke120f522016-12-07 19:24:32 +0000257 genModel = "/${internalProjectName}/model/Pivot.genmodel"
258 ecoreFile = "/${internalProjectName}/model/Pivot.ecore"
259 }
Adolfo SBH628cb442013-02-26 18:24:01 +0000260
Ed Willinka896c6e2016-12-07 10:03:28 +0000261 component = GenerateModel { resourceSet = pivotGenerateResourceSet skipOnErrors = true
Ed Willink1d60b512014-12-16 12:41:23 +0000262// projectName = "${internalProjectName}"
Ed Willinkbc2d6772015-03-10 19:17:55 +0000263 genModel = "/${internalProjectName}/model/Pivot.genmodel"
Adolfo SBH628cb442013-02-26 18:24:01 +0000264// clearResourceSet = false
Ed.Willink02006782011-12-10 14:28:26 +0000265// modelSlot = "${ecoreSlot}"
ewillinkb6c67562011-01-24 20:54:27 +0000266 }
Adolfo SBH3d87a6f2013-04-08 16:39:53 +0100267
Ed Willinka896c6e2016-12-07 10:03:28 +0000268 component = GenerateASVisitors { resourceSet = pivotGenerateResourceSet
Ed Willink1d60b512014-12-16 12:41:23 +0000269 projectName = "${internalProjectName}"
Ed Willinkbc2d6772015-03-10 19:17:55 +0000270 genModelFile = "model/Pivot.genmodel"
Ed.Willinkb6c26662011-11-20 16:42:55 +0000271 }
Adolfo SBH8acd5692016-01-20 17:53:47 +0000272
Ed Willinke120f522016-12-07 19:24:32 +0000273 component = GenerateOCLmetamodelXtend { resourceSet = pivotGenerateResourceSet
Ed Willink1d60b512014-12-16 12:41:23 +0000274 projectName = "${internalProjectName}"
Ed.Willink2dbd7b42013-06-08 17:16:10 +0100275 modelFile = "model/Pivot.ecore"
Ed Willink3bc7c042014-12-05 13:17:33 +0000276 uri = "http://www.eclipse.org/ocl/2015/Pivot"
Ed.Willink2dbd7b42013-06-08 17:16:10 +0100277 javaFolder = "emf-gen"
Ed Willinkc8c4d362015-03-16 18:53:39 +0000278 javaPackageName = "${pivotProjectName}.model"
Ed Willink1637f092014-12-28 15:54:52 +0000279 javaClassName = "OCLmetamodel"
Ed Willinkc8c4d362015-03-16 18:53:39 +0000280 }
Ed Willinkc960c3e2015-03-22 09:59:31 +0000281 component = ConvertToUnixLineEndings {
Ed Willink841cda92016-11-19 09:48:34 +0000282 directory = "${basePivotProject}/emf-gen"
Ed Willinkc960c3e2015-03-22 09:59:31 +0000283 }
ewillinkb6c67562011-01-24 20:54:27 +0000284}
285