Authors: | Laurent Goubet |
---|---|
Contact: | laurent.goubet@obeo.fr |
Copyright © 2008, Obeo™.
The aim of an Acceleo project is to generate text from a model. For this tutorial, we will create a new Acceleo module for generating java beans from a UML model.
To create a new Acceleo project, you can use the Acceleo Module Project wizard.
On the Acceleo perspective, you can also right click on the package explorer view and select New->Acceleo Module Project.
Choose a correct plugin name for the project, then click next.
Next you can create a new Acceleo template.
Optionally you can browse an existing file, which will be copied into the template. This could be useful to create a template from an existing file.
Clicking on finish will create the template(s), and some files associated with it ( more on these below ).
The template editor provides the following features :
For more information about the Acceleo syntax, please read the official OMG specification : <http://www.omg.org/docs/ptc/07-08-16.pdf>
We would like to create a bean for each of the classes defined in the model. Here is the code for the template :
[module generate(http://www.eclipse.org/uml2/2.1.0/UML)/] [template public generate(c : Class)] [file (c.name.concat('.java'), false)] public class [c.name.toUpperFirst()/] { [for (p : Property | c.attribute)] private [p.type.name/] [p.name/]; [/for] [for (p : Property | c.attribute)] public [p.type.name/] get[p.name.toUpperFirst()/]() { return this.[p.name/]; } [/for] [for (o : Operation | c.ownedOperation)] public [o.type.name/] [o.name/]() { // TODO should be implemented } [/for] } [/file] [/template]
As shown below, the content assistant provides choices for the UML metamodel :
The resulting java file generated by this template will look like this :
Note : This feature may evolve in future releases.
Next to each template file, a java file with the same name is automatically generated. This allows you to launch the generation via the doGenerate() method. This can be achieved either by creating a new instance of the class, or calling the main() method of the file.
Note : This feature may evolve in future releases.
In the tasks folder can also be found an ant file which can be used to launch a generation with the specified template. In order to use this build file, copy it inside a project which contains the model to generate from, rename it to build.xml for example, then change the MODEL and TARGET properties. Launch the build via External Tools > Run As > Ant Build.