|
Re: UML2C where to start [message #1695356 is a reply to message #1695346] |
Wed, 13 May 2015 17:16   |
|
Hi,
the first question i cannot answer, it is a matter of taste, features, maintenance etc
to the second question: here is a simple example template and workflow attached
src/workflow/workflow.mwe
<workflow>
<bean class="org.eclipse.xtend.typesystem.uml2.Setup" />
<bean class="org.eclipse.emf.mwe.utils.StandaloneSetup" platformUri=".." />
<component class="org.eclipse.emf.mwe.utils.Reader">
<uri value="platform:/resource/xpand.uml.sample/src/model/test.uml" />
<modelSlot value="model" />
</component>
<component class="org.eclipse.emf.mwe.utils.DirectoryCleaner">
<directory value="src-gen" />
</component>
<component class="org.eclipse.xpand2.Generator">
<metaModel class="org.eclipse.xtend.typesystem.uml2.UML2MetaModel" />
<expand value="template::Template::main FOR model" />
<outlet path="src-gen" >
<postprocessor class="org.eclipse.xpand2.output.JavaBeautifier" />
</outlet>
</component>
</workflow>
src/template/Template.xpt
«EXTENSION template::GeneratorExtensions»
«DEFINE main FOR uml::Model»
«EXPAND main FOREACH ownedElement»
«ENDDEFINE»
«DEFINE main FOR uml::Package»
«EXPAND main FOREACH ownedElement»
«ENDDEFINE»
«DEFINE main FOR uml::Class»
«FILE getFQPN().replaceAll("\\.","/")+"/"+name+".java"»
package «getFQPN()»;
public class «name» {
}
«ENDFILE»
«ENDDEFINE»
«DEFINE main FOR uml::Element»
«ENDDEFINE»
src/template/GeneratorExtensions.ext
String getFQPN(uml::Class c) : c.package.getFQN();
String getFQN(uml::Package p) : p.nestingPackage.getFQN() == "" ? p.name : (p.nestingPackage.getFQN() + "." + p.name);
String getFQN(uml::Model m) : "";
Need professional support for Xtext, Xpand, EMF?
Go to: https://www.itemis.com/en/it-services/methods-and-tools/xtext
Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
|
|
|
Re: UML2C where to start [message #1695358 is a reply to message #1695356] |
Wed, 13 May 2015 17:21   |
|
P.S. if you want to use a uml profile types you need a slightly different setup
<workflow>
<bean class="org.eclipse.xtend.typesystem.uml2.Setup" />
<bean class="org.eclipse.emf.mwe.utils.StandaloneSetup" platformUri=".." />
<component class="org.eclipse.emf.mwe.utils.Reader">
<uri value="platform:/resource/xpand.uml.profile.sample/src/model/test.uml" />
<modelSlot value="model" />
</component>
<component class="org.eclipse.emf.mwe.utils.DirectoryCleaner">
<directory value="src-gen" />
</component>
<component class="org.eclipse.xpand2.Generator">
<metaModel class="org.eclipse.xtend.typesystem.uml2.profile.ProfileMetaModel">
<profile value="platform:/resource/xpand.uml.profile.sample/src/model/test.profile.uml" />
</metaModel>
<metaModel class="org.eclipse.xtend.typesystem.uml2.UML2MetaModel" />
<expand value="template::Template::main FOR model" />
<outlet path="src-gen" >
<postprocessor class="org.eclipse.xpand2.output.JavaBeautifier" />
</outlet>
</component>
</workflow>
«DEFINE main FOR test::Bean»
«FILE getFQPN().replaceAll("\\.","/")+"/"+name+".java"»
package «getFQPN()»;
public class «name» {
}
«ENDFILE»
«ENDDEFINE»
(test.Bean is a Stereotype in the Profile)
Need professional support for Xtext, Xpand, EMF?
Go to: https://www.itemis.com/en/it-services/methods-and-tools/xtext
Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
|
|
|
|
Powered by
FUDForum. Page generated in 0.01905 seconds