Skip to main content
aboutsummaryrefslogtreecommitdiffstats
blob: 4751c33a8ab9a152546da71fc0fc613f4457ae50 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
[comment encoding = UTF-8 
/*******************************************************************************
 * Copyright (c) 2011 Obeo.
 * 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:
 *     Obeo - Initial API and implementation
 *******************************************************************************/
/]
[module GenFacade('http://www.eclipse.org/emf/2002/Ecore', 'http://www.eclipse.org/emf/2002/GenModel')/]

[import org::eclipse::emf::eef::codegen::ecore::model::buildproperties /]
[import org::eclipse::emf::eef::codegen::ecore::model::AdapterFactoryClass /]
[import org::eclipse::emf::eef::codegen::ecore::model::FactoryClass /]
[import org::eclipse::emf::eef::codegen::ecore::model::PackageClass /]
[import org::eclipse::papyrus::facade::codegen::GenFacade::Class /]
[import org::eclipse::emf::eef::codegen::ecore::model::EnumClass /]
[import org::eclipse::emf::eef::codegen::ecore::services::wrappers::GenModel /]
[import org::eclipse::emf::eef::codegen::ecore::services::wrappers::GenPackage /]
[import org::eclipse::emf::eef::codegen::ecore::services::wrappers::GenClass /]
[import org::eclipse::emf::eef::codegen::ecore::services::wrappers::GenEnum /]
[import org::eclipse::emf::eef::codegen::ecore::model::manifest /]
[import org::eclipse::emf::eef::codegen::ecore::model::module_gwt_xml /]
[import org::eclipse::emf::eef::codegen::ecore::model::Plugin /]
[import org::eclipse::emf::eef::codegen::ecore::model::plugin_properties /]
[import org::eclipse::emf::eef::codegen::ecore::model::plugin_xml /]
[import org::eclipse::papyrus::facade::codegen::GenFacade::ResourceClass /]
[import org::eclipse::emf::eef::codegen::ecore::model::ResourceFactoryClass /]
[import org::eclipse::emf::eef::codegen::ecore::model::SwitchClass /]
[import org::eclipse::emf::eef::codegen::ecore::model::ValidatorClass /]
[import org::eclipse::emf::eef::codegen::ecore::model::XmlProcessorClass /]
[import org::eclipse::emf::eef::codegen::ecore::services::fileUtil /]
[import org::eclipse::papyrus::facade::codegen::GenFacade::WrapperClass /]
[import org::eclipse::papyrus::facade::codegen::GenFacade::LoaderClass /]
[import org::eclipse::papyrus::facade::codegen::GenFacade::AbstractRepresentingClass /]
[import org::eclipse::papyrus::facade::codegen::GenFacade::RepresentingElementAdapter /]
[import org::eclipse::papyrus::facade::codegen::utils::FacadeCodegenUtils /]


[**
 * Generates all the classes of the Model plug-in from a genModel.
 * 
 * WARNING: The genModel passed to this template MUST be loaded and reconciled as in 
 * org.eclipse.emf.codegen.ecore.genmodel.presentation.GeneratorUIUtil.loadGenModels()
 * Otherwise canGenerate() will always return false, and invalid reference in the GenModel will cause problems.
 * In order to prevent a reference to an Ecore UI plug-in, this is done in the eef ui plug-in.
 * 
*/]
[template public GenAllGenClass(genModel : GenModel) ? (genModel.canGenerate())]
	[comment @main /]
	[if (not genModel.fileExistsModel(genModel.buildPropertiesFilePath()))]
		[genModel.buildProperties()/]
	[/if]

	[comment from EMF codegen : Do allow an existing MANIFEST.MF to be overwritten, since it may have been created as part of an empty EMF project.
        Use the existence of a plugin.xml as a guard against overwriting in a project that has already been generated. /]
	[if (not genModel.fileExistsModel(genModel.pluginXmlFilePath()))]
		[genModel.manifest()/]
	[/if]

	[comment @TODO See when and where GWT files are generated/]
	[comment][genModel.moduleGwt()/][/comment]

	[if (genModel.hasModelPluginClass())]
		[genModel.plugin()/]
	[/if]

	[if (genModel.hasPluginSupport())]
		[if (not genModel.sameModelEditProject() and not genModel.sameModelEditorProject())]
			[if (genModel.bundleManifest and not genModel.fileExistsModel(genModel.manifestFilePath()))]
				[genModel.manifest()/]
			[/if]
	
			[if (not genModel.fileExistsModel(genModel.pluginXmlFilePath()))]
				[genModel.pluginXml()/]
			[/if]
		[/if]
	
		[if (not genModel.fileExistsModel(genModel.pluginPropertiesFilePath()))]
			[genModel.pluginProperties()/]
		[/if]
	
		[if (not genModel.fileExistsModel(genModel.buildPropertiesFilePath()))]
			[genModel.buildProperties()/]
		[/if]
	[/if]

	[for (p : GenPackage | genModel.eAllContents(GenPackage))]
		[if (p.canGenerate())]
			[p.prepareCache()/][comment Create helpers to cache and supply information for unique naming./]

			[copyEcore(p)/]
	
			[for (genClass : GenClass | p.genClasses)]
				[if (genClass.canGenerate())]
					[if (not genClass.isExternalInterface() and (not genModel.suppressInterfaces or genClass.isInterface()))]
						[genClass.genGenClass(true, false)/]
					[/if]
					[if (not genClass.isInterface())]
						[genClass.genGenClass(if genModel.suppressInterfaces then true else false endif, true)/]
					[/if]
				[/if]
			[/for]
			[for (genEnum : GenEnum | p.genEnums)]
				[if (genEnum.canGenerate())]
					[genEnum.enumClass()/]
				[/if]
			[/for]
	
			[if (p.hasClassifiers())]
	
				[comment @TODO
					if genModel.generateSchema -> generateSchema,
					if p.loadingInitialization -> generateSerialization/]
	
				[if (not genModel.suppressEMFMetaData and not genModel.suppressInterfaces)]
					[p.packageClass(true, false)/]
				[/if]
		
				[p.packageClass(if genModel.suppressEMFMetaData or genModel.suppressInterfaces then true else false endif, true)/]
		
				[if (not genModel.suppressInterfaces)]
					[p.factoryClass(true, false)/]
				[/if]
		
				[p.factoryClass(if genModel.suppressInterfaces then true else false endif, true)/]
		
				[if (p.resource = GenResourceKind::XML)]
					[p.xmlProcessorClass()/]
				[/if]
		
				[if (p.hasConstraints())]
					[p.validatorClass()/]
				[/if]
		
				[if (p.adapterFactory and p.genClasses->notEmpty())]
					[p.switchClass()/]
					[p.adapterFactoryClass()/]
				[/if]
			[/if]

			[p.wrapperClass()/]
			[p.loaderClass()/]
			[p.abstractRepresentingClass()/]
			[p.representingElementAdapterClass()/]

		
			[if (p.resource <> GenResourceKind::None)]
				[p.resourceFactoryClass()/]
				[p.resourceClass()/]
			[/if]
	
			[p.clearCache()/]
		[/if]
	[/for]
[/template]

Back to the top