blob: f68ccfe44c3b97e26b2279b992d1b5741530e9ad [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:mtl="http://www.eclipse.org/acceleo/mtl/3.0" xmlns:ocl.ecore="http://www.eclipse.org/ocl/1.1.0/Ecore">
<mtl:Module name="acceleoJavaClassGenerator" nsURI="org::eclipse::acceleo::module::sample::main::acceleoJavaClassGenerator" startHeaderPosition="412" endHeaderPosition="505">
<documentation xsi:type="mtl:ModuleDocumentation" author="sbegaudeau">
<body startPosition="33" endPosition="409" value="&#xD;&#xA;Copyright (c) 2008, 2012 Obeo.&lt;br/>&#xD;&#xA;All rights reserved. This program and the accompanying materials&#xD;&#xA;are made available under the terms of the Eclipse Public License v1.0&#xD;&#xA;which accompanies this distribution, and is available at&#xD;&#xA;http://www.eclipse.org/legal/epl-v10.html&#xD;&#xA;&#xD;&#xA;Contributors:&#xD;&#xA;Obeo - initial API and implementation&#xD;&#xA;@author sbegaudeau&#xD;&#xA;&#xD;&#xA;"/>
</documentation>
<input>
<takesTypesFrom href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#/"/>
</input>
<ownedModuleElement xsi:type="mtl:Template" name="genAbstractAcceleoGenerator" visibility="Public" main="true">
<body xsi:type="mtl:FileBlock" openMode="OverWrite">
<body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol="/*******************************************************************************&#xA; * Copyright (c) 2008, 2012 Obeo.&#xA; * All rights reserved. This program and the accompanying materials&#xA; * are made available under the terms of the Eclipse Public License v1.0&#xA; * which accompanies this distribution, and is available at&#xA; * http://www.eclipse.org/legal/epl-v10.html&#xA; * &#xA; * Contributors:&#xA; * Obeo - initial API and implementation&#xA; *******************************************************************************/&#xA;package "/>
<body xsi:type="ocl.ecore:PropertyCallExp">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
<source xsi:type="ocl.ecore:VariableExp" name="self" referredVariable="/8">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</source>
<referredProperty xsi:type="ecore:EAttribute" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass/basePackage"/>
</body>
<body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol=";&#xA;&#xA;import java.io.File;&#xA;import java.io.IOException;&#xA;import java.util.ArrayList;&#xA;import java.util.List;&#xA;&#xA;import org.eclipse.acceleo.engine.event.IAcceleoTextGenerationListener;&#xA;import org.eclipse.acceleo.engine.generation.strategy.IAcceleoGenerationStrategy;&#xA;import org.eclipse.acceleo.engine.service.AbstractAcceleoGenerator;&#xA;import org.eclipse.emf.common.util.BasicMonitor;&#xA;import org.eclipse.emf.common.util.Monitor;&#xA;import org.eclipse.emf.common.util.URI;&#xA;import org.eclipse.emf.ecore.EObject;&#xA;import org.eclipse.emf.ecore.resource.ResourceSet;&#xA;&#xA;/**&#xA; * Entry point of the '"/>
<body xsi:type="ocl.ecore:PropertyCallExp">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
<source xsi:type="ocl.ecore:VariableExp" name="self" referredVariable="/9">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</source>
<referredProperty xsi:type="ecore:EAttribute" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass/classShortName"/>
</body>
<body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol="' generation module.&#xA; *&#xA; * @generated&#xA; */&#xA;public class "/>
<body xsi:type="ocl.ecore:PropertyCallExp">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
<source xsi:type="ocl.ecore:VariableExp" name="self" referredVariable="/10">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</source>
<referredProperty xsi:type="ecore:EAttribute" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass/classShortName"/>
</body>
<body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol=" extends AbstractAcceleoGenerator {&#xA; /**&#xA; * The name of the module.&#xA; *&#xA; * @generated&#xA; */&#xA; public static final String MODULE_FILE_NAME = &quot;"/>
<body xsi:type="ocl.ecore:PropertyCallExp">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
<source xsi:type="ocl.ecore:VariableExp" name="self" referredVariable="/11">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</source>
<referredProperty xsi:type="ecore:EAttribute" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass/moduleFileShortName"/>
</body>
<body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol="&quot;;&#xA; &#xA; /**&#xA; * The name of the templates that are to be generated.&#xA; *&#xA; * @generated&#xA; */&#xA; public static final String"/>
<body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol="[]">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
</body>
<body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol=" TEMPLATE_NAMES = { "/>
<body xsi:type="ocl.ecore:OperationCallExp" eType="/13/Sequence(OclAny)" referredOperation="/1/Collection(T)_Class/sep">
<source xsi:type="ocl.ecore:IteratorExp" name="collect" eType="/13/Sequence(String)">
<source xsi:type="ocl.ecore:PropertyCallExp" eType="/13/OrderedSet(String)">
<source xsi:type="ocl.ecore:VariableExp" name="self" referredVariable="/14">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</source>
<referredProperty xsi:type="ecore:EAttribute" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass/templateNames"/>
</source>
<body xsi:type="ocl.ecore:OperationCallExp" referredOperation="/1/String_Class/+">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
<source xsi:type="ocl.ecore:OperationCallExp" referredOperation="/1/String_Class/+">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
<source xsi:type="ocl.ecore:StringLiteralExp" stringSymbol="&quot;">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
</source>
<argument xsi:type="ocl.ecore:VariableExp" name="str" referredVariable="/0/genAbstractAcceleoGenerator/@body.0/@body.11/collect/str">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
</argument>
</source>
<argument xsi:type="ocl.ecore:StringLiteralExp" stringSymbol="&quot;">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
</argument>
</body>
<iterator xsi:type="ocl.ecore:Variable" name="str">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
</iterator>
</source>
<argument xsi:type="ocl.ecore:StringLiteralExp" stringSymbol=", ">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
</argument>
</body>
<body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol=" };&#xA; &#xA; /**&#xA; * The list of properties files from the launch parameters (Launch configuration).&#xA; *&#xA; * @generated&#xA; */&#xA; private List&lt;String> propertiesFiles = new ArrayList&lt;String>();&#xA;&#xA; /**&#xA; * Allows the public constructor to be used. Note that a generator created&#xA; * this way cannot be used to launch generations before one of&#xA; * {@link #initialize(EObject, File, List)} or&#xA; * {@link #initialize(URI, File, List)} is called.&#xA; * &lt;p>&#xA; * The main reason for this constructor is to allow clients of this&#xA; * generation to call it from another Java file, as it allows for the&#xA; * retrieval of {@link #getProperties()} and&#xA; * {@link #getGenerationListeners()}.&#xA; * &lt;/p>&#xA; *&#xA; * @generated&#xA; */&#xA; public "/>
<body xsi:type="ocl.ecore:PropertyCallExp">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
<source xsi:type="ocl.ecore:VariableExp" name="self" referredVariable="/15">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</source>
<referredProperty xsi:type="ecore:EAttribute" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass/classShortName"/>
</body>
<body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol="() {&#xA; // Empty implementation&#xA; }&#xA;&#xA; /**&#xA; * This allows clients to instantiates a generator with all required information.&#xA; * &#xA; * @param modelURI&#xA; * URI where the model on which this generator will be used is located.&#xA; * @param targetFolder&#xA; * This will be used as the output folder for this generation : it will be the base path&#xA; * against which all file block URLs will be resolved.&#xA; * @param arguments&#xA; * If the template which will be called requires more than one argument taken from the model,&#xA; * pass them here.&#xA; * @throws IOException&#xA; * This can be thrown in three scenarios : the module cannot be found, it cannot be loaded, or&#xA; * the model cannot be loaded.&#xA; * @generated&#xA; */&#xA; public "/>
<body xsi:type="ocl.ecore:PropertyCallExp">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
<source xsi:type="ocl.ecore:VariableExp" name="self" referredVariable="/16">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</source>
<referredProperty xsi:type="ecore:EAttribute" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass/classShortName"/>
</body>
<body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol="(URI modelURI, File targetFolder,&#xA; List&lt;? extends Object> arguments) throws IOException {&#xA; initialize(modelURI, targetFolder, arguments);&#xA; }&#xA;&#xA; /**&#xA; * This allows clients to instantiates a generator with all required information.&#xA; * &#xA; * @param model&#xA; * We'll iterate over the content of this element to find Objects matching the first parameter&#xA; * of the template we need to call.&#xA; * @param targetFolder&#xA; * This will be used as the output folder for this generation : it will be the base path&#xA; * against which all file block URLs will be resolved.&#xA; * @param arguments&#xA; * If the template which will be called requires more than one argument taken from the model,&#xA; * pass them here.&#xA; * @throws IOException&#xA; * This can be thrown in two scenarios : the module cannot be found, or it cannot be loaded.&#xA; * @generated&#xA; */&#xA; public "/>
<body xsi:type="ocl.ecore:PropertyCallExp">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
<source xsi:type="ocl.ecore:VariableExp" name="self" referredVariable="/17">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</source>
<referredProperty xsi:type="ecore:EAttribute" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass/classShortName"/>
</body>
<body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol="(EObject model, File targetFolder,&#xA; List&lt;? extends Object> arguments) throws IOException {&#xA; initialize(model, targetFolder, arguments);&#xA; }&#xA; &#xA; /**&#xA; * This can be used to launch the generation from a standalone application.&#xA; * &#xA; * @param args&#xA; * Arguments of the generation.&#xA; * @generated&#xA; */&#xA; public static void main(String"/>
<body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol="[]">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
</body>
<body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol=" args) {&#xA; try {&#xA; if (args.length &lt; 2) {&#xA; System.out.println(&quot;Arguments not valid : {model, folder}.&quot;);&#xA; } else {&#xA; URI modelURI = URI.createFileURI(args"/>
<body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol="[0]">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
</body>
<body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol=");&#xA; File folder = new File(args"/>
<body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol="[1]">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
</body>
<body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol=");&#xA; &#xA; List&lt;String> arguments = new ArrayList&lt;String>();&#xA; &#xA; /*&#xA; * If you want to change the content of this method, do NOT forget to change the &quot;@generated&quot;&#xA; * tag in the Javadoc of this method to &quot;@generated NOT&quot;. Without this new tag, any compilation&#xA; * of the Acceleo module with the main template that has caused the creation of this class will&#xA; * revert your modifications.&#xA; */&#xA;&#xA; /*&#xA; * Add in this list all the arguments used by the starting point of the generation&#xA; * If your main template is called on an element of your model and a String, you can&#xA; * add in &quot;arguments&quot; this &quot;String&quot; attribute.&#xA; */&#xA; &#xA; "/>
<body xsi:type="ocl.ecore:PropertyCallExp">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
<source xsi:type="ocl.ecore:VariableExp" name="self" referredVariable="/21">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</source>
<referredProperty xsi:type="ecore:EAttribute" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass/classShortName"/>
</body>
<body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol=" generator = new "/>
<body xsi:type="ocl.ecore:PropertyCallExp">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
<source xsi:type="ocl.ecore:VariableExp" name="self" referredVariable="/22">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</source>
<referredProperty xsi:type="ecore:EAttribute" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass/classShortName"/>
</body>
<body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol="(modelURI, folder, arguments);&#xA; &#xA; /*&#xA; * Add the properties from the launch arguments.&#xA; * If you want to programmatically add new properties, add them in &quot;propertiesFiles&quot;&#xA; * You can add the absolute path of a properties files, or even a project relative path.&#xA; * If you want to add another &quot;protocol&quot; for your properties files, please override &#xA; * &quot;getPropertiesLoaderService(AcceleoService)&quot; in order to return a new property loader.&#xA; * The behavior of the properties loader service is explained in the Acceleo documentation&#xA; * (Help -> Help Contents).&#xA; */&#xA; &#xA; for (int i = 2; i &lt; args.length; i++) {&#xA; generator.addPropertiesFile(args"/>
<body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol="[i]">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
</body>
<body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol=");&#xA; }&#xA; &#xA; generator.doGenerate(new BasicMonitor());&#xA; }&#xA; } catch (IOException e) {&#xA; e.printStackTrace();&#xA; }&#xA; }&#xA;&#xA; /**&#xA; * Launches the generation described by this instance.&#xA; * &#xA; * @param monitor&#xA; * This will be used to display progress information to the user.&#xA; * @throws IOException&#xA; * This will be thrown if any of the output files cannot be saved to disk.&#xA; * @generated&#xA; */&#xA; @Override&#xA; public void doGenerate(Monitor monitor) throws IOException {&#xA; /*&#xA; * TODO if you wish to change the generation as a whole, override this. The default behavior should&#xA; * be sufficient in most cases. If you want to change the content of this method, do NOT forget to&#xA; * change the &quot;@generated&quot; tag in the Javadoc of this method to &quot;@generated NOT&quot;. Without this new tag,&#xA; * any compilation of the Acceleo module with the main template that has caused the creation of this&#xA; * class will revert your modifications. If you encounter a problem with an unresolved proxy during the&#xA; * generation, you can remove the comments in the following instructions to check for problems. Please&#xA; * note that those instructions may have a significant impact on the performances.&#xA; */&#xA;&#xA; //org.eclipse.emf.ecore.util.EcoreUtil.resolveAll(model);&#xA;&#xA; /*&#xA; * If you want to check for potential errors in your models before the launch of the generation, you&#xA; * use the code below.&#xA; */&#xA;&#xA; //if (model != null &amp;&amp; model.eResource() != null) {&#xA; // List&lt;org.eclipse.emf.ecore.resource.Resource.Diagnostic> errors = model.eResource().getErrors();&#xA; // for (org.eclipse.emf.ecore.resource.Resource.Diagnostic diagnostic : errors) {&#xA; // System.err.println(diagnostic.toString());&#xA; // }&#xA; //}&#xA;&#xA; super.doGenerate(monitor);&#xA; }&#xA; &#xA; /**&#xA; * If this generator needs to listen to text generation events, listeners can be returned from here.&#xA; * &#xA; * @return List of listeners that are to be notified when text is generated through this launch.&#xA; * @generated&#xA; */&#xA; @Override&#xA; public List&lt;IAcceleoTextGenerationListener> getGenerationListeners() {&#xA; List&lt;IAcceleoTextGenerationListener> listeners = super.getGenerationListeners();&#xA; /*&#xA; * TODO if you need to listen to generation event, add listeners to the list here. If you want to change&#xA; * the content of this method, do NOT forget to change the &quot;@generated&quot; tag in the Javadoc of this method&#xA; * to &quot;@generated NOT&quot;. Without this new tag, any compilation of the Acceleo module with the main template&#xA; * that has caused the creation of this class will revert your modifications.&#xA; */&#xA; return listeners;&#xA; }&#xA; &#xA; /**&#xA; * If you need to change the way files are generated, this is your entry point.&#xA; * &lt;p>&#xA; * The default is {@link org.eclipse.acceleo.engine.generation.strategy.DefaultStrategy}; it generates&#xA; * files on the fly. If you only need to preview the results, return a new&#xA; * {@link org.eclipse.acceleo.engine.generation.strategy.PreviewStrategy}. Both of these aren't aware of&#xA; * the running Eclipse and can be used standalone.&#xA; * &lt;/p>&#xA; * &lt;p>&#xA; * If you need the file generation to be aware of the workspace (A typical example is when you wanna&#xA; * override files that are under clear case or any other VCS that could forbid the overriding), then&#xA; * return a new {@link org.eclipse.acceleo.engine.generation.strategy.WorkspaceAwareStrategy}.&#xA; * &lt;b>Note&lt;/b>, however, that this &lt;b>cannot&lt;/b> be used standalone.&#xA; * &lt;/p>&#xA; * &lt;p>&#xA; * All three of these default strategies support merging through JMerge.&#xA; * &lt;/p>&#xA; * &#xA; * @return The generation strategy that is to be used for generations launched through this launcher.&#xA; * @generated&#xA; */&#xA; @Override&#xA; public IAcceleoGenerationStrategy getGenerationStrategy() {&#xA; return super.getGenerationStrategy();&#xA; }&#xA; &#xA; /**&#xA; * This will be called in order to find and load the module that will be launched through this launcher.&#xA; * We expect this name not to contain file extension, and the module to be located beside the launcher.&#xA; * &#xA; * @return The name of the module that is to be launched.&#xA; * @generated&#xA; */&#xA; @Override&#xA; public String getModuleName() {&#xA; return MODULE_FILE_NAME;&#xA; }&#xA; &#xA; /**&#xA; * If the module(s) called by this launcher require properties files, return their qualified path from&#xA; * here.Take note that the first added properties files will take precedence over subsequent ones if they&#xA; * contain conflicting keys.&#xA; * &#xA; * @return The list of properties file we need to add to the generation context.&#xA; * @see java.util.ResourceBundle#getBundle(String)&#xA; * @generated&#xA; */&#xA; @Override&#xA; public List&lt;String> getProperties() {&#xA; /*&#xA; * If you want to change the content of this method, do NOT forget to change the &quot;@generated&quot;&#xA; * tag in the Javadoc of this method to &quot;@generated NOT&quot;. Without this new tag, any compilation&#xA; * of the Acceleo module with the main template that has caused the creation of this class will&#xA; * revert your modifications.&#xA; */&#xA;&#xA; /*&#xA; * TODO if your generation module requires access to properties files, add their qualified path to the list here.&#xA; * &#xA; * Properties files can be located in an Eclipse plug-in or in the file system (all Acceleo projects are Eclipse&#xA; * plug-in). In order to use properties files located in an Eclipse plugin, you need to add the path of the properties&#xA; * files to the &quot;propertiesFiles&quot; list:&#xA; * &#xA; * final String prefix = &quot;platform:/plugin/&quot;;&#xA; * final String pluginName = &quot;org.eclipse.acceleo.module.sample&quot;;&#xA; * final String packagePath = &quot;/org/eclipse/acceleo/module/sample/properties/&quot;;&#xA; * final String fileName = &quot;default.properties&quot;;&#xA; * propertiesFiles.add(prefix + pluginName + packagePath + fileName);&#xA; * &#xA; * With this mechanism, you can load properties files from your plugin or from another plugin.&#xA; * &#xA; * You may want to load properties files from the file system, for that you need to add the absolute path of the file:&#xA; * &#xA; * propertiesFiles.add(&quot;C:\Users\MyName\MyFile.properties&quot;);&#xA; * &#xA; * If you want to let your users add properties files located in the same folder as the model:&#xA; *&#xA; * if (EMFPlugin.IS_ECLIPSE_RUNNING &amp;&amp; model != null &amp;&amp; model.eResource() != null) { &#xA; * propertiesFiles.addAll(AcceleoEngineUtils.getPropertiesFilesNearModel(model.eResource()));&#xA; * }&#xA; * &#xA; * To learn more about Properties Files, have a look at the Acceleo documentation (Help -> Help Contents).&#xA; */&#xA; return propertiesFiles;&#xA; }&#xA; &#xA; /**&#xA; * Adds a properties file in the list of properties files.&#xA; * &#xA; * @param propertiesFile&#xA; * The properties file to add.&#xA; * @generated&#xA; * @since 3.1&#xA; */&#xA; @Override&#xA; public void addPropertiesFile(String propertiesFile) {&#xA; this.propertiesFiles.add(propertiesFile);&#xA; }&#xA; &#xA; /**&#xA; * This will be used to get the list of templates that are to be launched by this launcher.&#xA; * &#xA; * @return The list of templates to call on the module {@link #getModuleName()}.&#xA; * @generated&#xA; */&#xA; @Override&#xA; public String"/>
<body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol="[]">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
</body>
<body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol=" getTemplateNames() {&#xA; return TEMPLATE_NAMES;&#xA; }&#xA; &#xA; /**&#xA; * This can be used to update the resource set's package registry with all needed EPackages.&#xA; * &#xA; * @param resourceSet&#xA; * The resource set which registry has to be updated.&#xA; * @generated&#xA; */&#xA; @Override&#xA; public void registerPackages(ResourceSet resourceSet) {&#xA; super.registerPackages(resourceSet);&#xA;"/>
<body xsi:type="mtl:ForBlock">
<body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol=" if (!isInWorkspace("/>
<body xsi:type="ocl.ecore:PropertyCallExp">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
<source xsi:type="ocl.ecore:VariableExp" name="aPackage" referredVariable="/0/genAbstractAcceleoGenerator/@body.0/@body.33/aPackage">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoPackage"/>
</source>
<referredProperty xsi:type="ecore:EAttribute" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoPackage/class"/>
</body>
<body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol=".class)) {&#xA; resourceSet.getPackageRegistry().put("/>
<body xsi:type="ocl.ecore:PropertyCallExp">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
<source xsi:type="ocl.ecore:VariableExp" name="aPackage" referredVariable="/0/genAbstractAcceleoGenerator/@body.0/@body.33/aPackage">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoPackage"/>
</source>
<referredProperty xsi:type="ecore:EAttribute" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoPackage/class"/>
</body>
<body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol=".eINSTANCE.getNsURI(), "/>
<body xsi:type="ocl.ecore:PropertyCallExp">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
<source xsi:type="ocl.ecore:VariableExp" name="aPackage" referredVariable="/0/genAbstractAcceleoGenerator/@body.0/@body.33/aPackage">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoPackage"/>
</source>
<referredProperty xsi:type="ecore:EAttribute" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoPackage/class"/>
</body>
<body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol=".eINSTANCE);&#xA; }&#xA;"/>
<loopVariable name="aPackage">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoPackage"/>
</loopVariable>
<iterSet xsi:type="ocl.ecore:PropertyCallExp" eType="/13/OrderedSet(AcceleoPackage)">
<source xsi:type="ocl.ecore:VariableExp" name="self" referredVariable="/25">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</source>
<referredProperty xsi:type="ecore:EReference" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass/packages"/>
</iterSet>
</body>
<body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol=" &#xA; /*&#xA; * If you want to change the content of this method, do NOT forget to change the &quot;@generated&quot;&#xA; * tag in the Javadoc of this method to &quot;@generated NOT&quot;. Without this new tag, any compilation&#xA; * of the Acceleo module with the main template that has caused the creation of this class will&#xA; * revert your modifications.&#xA; */&#xA; &#xA; /*&#xA; * If you need additional package registrations, you can register them here. The following line&#xA; * (in comment) is an example of the package registration for UML.&#xA; * &#xA; * You can use the method &quot;isInWorkspace(Class c)&quot; to check if the package that you are about to&#xA; * register is in the workspace.&#xA; * &#xA; * To register a package properly, please follow the following conventions:&#xA; *&#xA; * If the package is located in another plug-in, already installed in Eclipse. The following content should&#xA; * have been generated at the beginning of this method. Do not register the package using this mechanism if&#xA; * the metamodel is located in the workspace.&#xA; * &#xA; * if (!isInWorkspace(UMLPackage.class)) {&#xA; * // The normal package registration if your metamodel is in a plugin.&#xA; * resourceSet.getPackageRegistry().put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE);&#xA; * }&#xA; * &#xA; * If the package is located in another project in your workspace, the plugin containing the package has not&#xA; * been register by EMF and Acceleo should register it automatically. If you want to use the generator in&#xA; * stand alone, the regular registration (seen a couple lines before) is needed.&#xA; * &#xA; * To learn more about Package Registration, have a look at the Acceleo documentation (Help -> Help Contents).&#xA; */&#xA; }&#xA;&#xA; /**&#xA; * This can be used to update the resource set's resource factory registry with all needed factories.&#xA; * &#xA; * @param resourceSet&#xA; * The resource set which registry has to be updated.&#xA; * @generated&#xA; */&#xA; @Override&#xA; public void registerResourceFactories(ResourceSet resourceSet) {&#xA; super.registerResourceFactories(resourceSet);&#xA; /*&#xA; * If you want to change the content of this method, do NOT forget to change the &quot;@generated&quot;&#xA; * tag in the Javadoc of this method to &quot;@generated NOT&quot;. Without this new tag, any compilation&#xA; * of the Acceleo module with the main template that has caused the creation of this class will&#xA; * revert your modifications.&#xA; */&#xA; &#xA; /*&#xA; * TODO If you need additional resource factories registrations, you can register them here. the following line&#xA; * (in comment) is an example of the resource factory registration for UML.&#xA; *&#xA; * If you want to use the generator in stand alone, the resource factory registration will be required.&#xA; * &#xA; * To learn more about the registration of Resource Factories, have a look at the Acceleo documentation (Help -> Help Contents). &#xA; */ &#xA; &#xA; // resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(UMLResource.FILE_EXTENSION, UMLResource.Factory.INSTANCE);&#xA; }&#xA; &#xA;}&#xA;"/>
<fileUrl xsi:type="ocl.ecore:OperationCallExp" referredOperation="/1/String_Class/+">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
<source xsi:type="ocl.ecore:PropertyCallExp">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
<source xsi:type="ocl.ecore:VariableExp" name="self" referredVariable="/6">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</source>
<referredProperty xsi:type="ecore:EAttribute" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass/classShortName"/>
</source>
<argument xsi:type="ocl.ecore:StringLiteralExp" stringSymbol=".java">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
</argument>
</fileUrl>
<charset xsi:type="ocl.ecore:StringLiteralExp" stringSymbol="UTF-8">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
</charset>
</body>
<parameter name="acceleoMainClass">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</parameter>
</ownedModuleElement>
</mtl:Module>
<ecore:EPackage name="additions">
<eClassifiers xsi:type="ecore:EClass" name="String_Class">
<eAnnotations source="http://www.eclipse.org/ocl/1.1.0/OCL">
<references href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
</eAnnotations>
<eOperations name="+">
<eAnnotations source="MTL non-standard"/>
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
<eParameters name="other">
<eType xsi:type="ocl.ecore:AnyType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/OclAny"/>
</eParameters>
</eOperations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Integer_Class">
<eAnnotations source="http://www.eclipse.org/ocl/1.1.0/OCL">
<references href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/Integer"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Real_Class">
<eAnnotations source="http://www.eclipse.org/ocl/1.1.0/OCL">
<references href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/Real"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="EObject_Class">
<eAnnotations source="http://www.eclipse.org/ocl/1.1.0/OCL">
<references href="http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
</eAnnotations>
<eOperations name="genAbstractAcceleoGenerator">
<eAnnotations source="http://www.eclipse.org/ocl/1.1.0/OCL">
<contents xsi:type="ocl.ecore:Constraint"/>
</eAnnotations>
<eAnnotations source="MTL" references="/0/genAbstractAcceleoGenerator"/>
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
<eParameters name="acceleoMainClass">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</eParameters>
</eOperations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="OclAny_Class">
<eAnnotations source="http://www.eclipse.org/ocl/1.1.0/OCL">
<references href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/OclAny"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Collection(T)_Class">
<eAnnotations source="http://www.eclipse.org/ocl/1.1.0/OCL">
<references href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/Collection(T)"/>
</eAnnotations>
<eOperations name="sep">
<eAnnotations source="MTL non-standard"/>
<eType xsi:type="ocl.ecore:SequenceType" href="http://www.eclipse.org/acceleo/mtl/3.0/mtlnonstdlib.ecore#//Sequence(OclAny)"/>
<eParameters name="separatorString">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
</eParameters>
</eOperations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Sequence(T)_Class">
<eAnnotations source="http://www.eclipse.org/ocl/1.1.0/OCL">
<references href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/Sequence(T)"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="OrderedSet(T)_Class">
<eAnnotations source="http://www.eclipse.org/ocl/1.1.0/OCL">
<references href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/OrderedSet(T)"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AcceleoMainClass_Class">
<eAnnotations source="http://www.eclipse.org/ocl/1.1.0/OCL">
<references href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</eAnnotations>
</eClassifiers>
</ecore:EPackage>
<ocl.ecore:Variable name="self">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
</ocl.ecore:Variable>
<ocl.ecore:Variable name="self">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</ocl.ecore:Variable>
<ocl.ecore:Variable name="self">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
</ocl.ecore:Variable>
<ocl.ecore:Variable name="self">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</ocl.ecore:Variable>
<ocl.ecore:Variable name="self">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</ocl.ecore:Variable>
<ocl.ecore:Variable name="self">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</ocl.ecore:Variable>
<ocl.ecore:Variable name="self">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</ocl.ecore:Variable>
<ocl.ecore:Variable name="self">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</ocl.ecore:Variable>
<ocl.ecore:Variable name="self">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</ocl.ecore:Variable>
<ocl.ecore:Variable name="self">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</ocl.ecore:Variable>
<ocl.ecore:Variable name="self">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</ocl.ecore:Variable>
<ecore:EPackage name="collections">
<eClassifiers xsi:type="ocl.ecore:OrderedSetType" name="OrderedSet(String)" instanceClassName="java.util.LinkedHashSet">
<elementType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
</eClassifiers>
<eClassifiers xsi:type="ocl.ecore:SequenceType" name="Sequence(String)" instanceClassName="java.util.List">
<elementType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
</eClassifiers>
<eClassifiers xsi:type="ocl.ecore:SequenceType" name="Sequence(OclAny)" instanceClassName="java.util.List">
<elementType xsi:type="ocl.ecore:AnyType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/OclAny"/>
</eClassifiers>
<eClassifiers xsi:type="ocl.ecore:OrderedSetType" name="OrderedSet(AcceleoPackage)" instanceClassName="java.util.LinkedHashSet">
<elementType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoPackage"/>
</eClassifiers>
</ecore:EPackage>
<ocl.ecore:Variable name="self">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</ocl.ecore:Variable>
<ocl.ecore:Variable name="self">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</ocl.ecore:Variable>
<ocl.ecore:Variable name="self">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</ocl.ecore:Variable>
<ocl.ecore:Variable name="self">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</ocl.ecore:Variable>
<ocl.ecore:Variable name="self">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</ocl.ecore:Variable>
<ocl.ecore:Variable name="self">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</ocl.ecore:Variable>
<ocl.ecore:Variable name="self">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</ocl.ecore:Variable>
<ocl.ecore:Variable name="self">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</ocl.ecore:Variable>
<ocl.ecore:Variable name="self">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</ocl.ecore:Variable>
<ocl.ecore:Variable name="self">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</ocl.ecore:Variable>
<ocl.ecore:Variable name="self">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</ocl.ecore:Variable>
<ocl.ecore:Variable name="self">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</ocl.ecore:Variable>
<ocl.ecore:Variable name="self">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoPackage"/>
</ocl.ecore:Variable>
<ocl.ecore:Variable name="self">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoPackage"/>
</ocl.ecore:Variable>
<ocl.ecore:Variable name="self">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoPackage"/>
</ocl.ecore:Variable>
<ocl.ecore:Variable name="self">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoPackage"/>
</ocl.ecore:Variable>
<ocl.ecore:Variable name="self">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/acceleo/ui/acceleowizardmodel/3.1#//AcceleoMainClass"/>
</ocl.ecore:Variable>
<ocl.ecore:Variable name="i">
<eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/Integer"/>
</ocl.ecore:Variable>
<ocl.ecore:Variable name="self">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
</ocl.ecore:Variable>
<ecore:EAnnotation source="positions">
<eAnnotations source="positions.0" references="/0/@documentation">
<details key="start" value="30"/>
<details key="end" value="411"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.1" references="/0/genAbstractAcceleoGenerator">
<details key="start" value="509"/>
<details key="end" value="19019"/>
<details key="line" value="16"/>
</eAnnotations>
<eAnnotations source="positions.2" references="/0/genAbstractAcceleoGenerator/@body.0">
<details key="start" value="610"/>
<details key="end" value="19007"/>
<details key="line" value="18"/>
</eAnnotations>
<eAnnotations source="positions.3" references="/0/genAbstractAcceleoGenerator/@body.0/@body.0">
<details key="start" value="660"/>
<details key="end" value="1177"/>
<details key="line" value="19"/>
</eAnnotations>
<eAnnotations source="positions.4" references="/0/genAbstractAcceleoGenerator/@body.0/@body.1">
<details key="start" value="1178"/>
<details key="end" value="1189"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.5" references="/0/genAbstractAcceleoGenerator/@body.0/@body.1/self">
<details key="start" value="-1"/>
<details key="end" value="-1"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.6" references="/0/genAbstractAcceleoGenerator/@body.0/@body.2">
<details key="start" value="1191"/>
<details key="end" value="1767"/>
<details key="line" value="29"/>
</eAnnotations>
<eAnnotations source="positions.7" references="/0/genAbstractAcceleoGenerator/@body.0/@body.3">
<details key="start" value="1768"/>
<details key="end" value="1782"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.8" references="/0/genAbstractAcceleoGenerator/@body.0/@body.3/self">
<details key="start" value="-1"/>
<details key="end" value="-1"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.9" references="/0/genAbstractAcceleoGenerator/@body.0/@body.4">
<details key="start" value="1784"/>
<details key="end" value="1839"/>
<details key="line" value="46"/>
</eAnnotations>
<eAnnotations source="positions.10" references="/0/genAbstractAcceleoGenerator/@body.0/@body.5">
<details key="start" value="1840"/>
<details key="end" value="1854"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.11" references="/0/genAbstractAcceleoGenerator/@body.0/@body.5/self">
<details key="start" value="-1"/>
<details key="end" value="-1"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.12" references="/0/genAbstractAcceleoGenerator/@body.0/@body.6">
<details key="start" value="1856"/>
<details key="end" value="2015"/>
<details key="line" value="50"/>
</eAnnotations>
<eAnnotations source="positions.13" references="/0/genAbstractAcceleoGenerator/@body.0/@body.7">
<details key="start" value="2016"/>
<details key="end" value="2035"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.14" references="/0/genAbstractAcceleoGenerator/@body.0/@body.7/self">
<details key="start" value="-1"/>
<details key="end" value="-1"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.15" references="/0/genAbstractAcceleoGenerator/@body.0/@body.8">
<details key="start" value="2037"/>
<details key="end" value="2175"/>
<details key="line" value="56"/>
</eAnnotations>
<eAnnotations source="positions.16" references="/0/genAbstractAcceleoGenerator/@body.0/@body.9">
<details key="start" value="2176"/>
<details key="end" value="2180"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.17" references="/0/genAbstractAcceleoGenerator/@body.0/@body.10">
<details key="start" value="2182"/>
<details key="end" value="2202"/>
<details key="line" value="63"/>
</eAnnotations>
<eAnnotations source="positions.18" references="/0/genAbstractAcceleoGenerator/@body.0/@body.11">
<details key="start" value="2203"/>
<details key="end" value="2268"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.19" references="/0/genAbstractAcceleoGenerator/@body.0/@body.11/collect">
<details key="start" value="2203"/>
<details key="end" value="2257"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.20" references="/0/genAbstractAcceleoGenerator/@body.0/@body.11/collect/@source">
<details key="start" value="2203"/>
<details key="end" value="2216"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.21" references="/0/genAbstractAcceleoGenerator/@body.0/@body.11/collect/@source/self">
<details key="start" value="-1"/>
<details key="end" value="-1"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.22" references="/0/genAbstractAcceleoGenerator/@body.0/@body.11/collect/@body">
<details key="start" value="2241"/>
<details key="end" value="2256"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.23" references="/0/genAbstractAcceleoGenerator/@body.0/@body.11/collect/@body/@source">
<details key="start" value="2241"/>
<details key="end" value="2250"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.24" references="/0/genAbstractAcceleoGenerator/@body.0/@body.11/collect/@body/@source/@source">
<details key="start" value="2241"/>
<details key="end" value="2244"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.25" references="/0/genAbstractAcceleoGenerator/@body.0/@body.11/collect/@body/@source/str">
<details key="start" value="2247"/>
<details key="end" value="2250"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.26" references="/0/genAbstractAcceleoGenerator/@body.0/@body.11/collect/@body/@argument.0">
<details key="start" value="2253"/>
<details key="end" value="2256"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.27" references="/0/genAbstractAcceleoGenerator/@body.0/@body.11/collect/str">
<details key="start" value="2226"/>
<details key="end" value="2238"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.28" references="/0/genAbstractAcceleoGenerator/@body.0/@body.11/@argument.0">
<details key="start" value="2263"/>
<details key="end" value="2267"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.29" references="/0/genAbstractAcceleoGenerator/@body.0/@body.12">
<details key="start" value="2270"/>
<details key="end" value="3040"/>
<details key="line" value="63"/>
</eAnnotations>
<eAnnotations source="positions.30" references="/0/genAbstractAcceleoGenerator/@body.0/@body.13">
<details key="start" value="3041"/>
<details key="end" value="3055"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.31" references="/0/genAbstractAcceleoGenerator/@body.0/@body.13/self">
<details key="start" value="-1"/>
<details key="end" value="-1"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.32" references="/0/genAbstractAcceleoGenerator/@body.0/@body.14">
<details key="start" value="3057"/>
<details key="end" value="3903"/>
<details key="line" value="86"/>
</eAnnotations>
<eAnnotations source="positions.33" references="/0/genAbstractAcceleoGenerator/@body.0/@body.15">
<details key="start" value="3904"/>
<details key="end" value="3918"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.34" references="/0/genAbstractAcceleoGenerator/@body.0/@body.15/self">
<details key="start" value="-1"/>
<details key="end" value="-1"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.35" references="/0/genAbstractAcceleoGenerator/@body.0/@body.16">
<details key="start" value="3920"/>
<details key="end" value="4907"/>
<details key="line" value="106"/>
</eAnnotations>
<eAnnotations source="positions.36" references="/0/genAbstractAcceleoGenerator/@body.0/@body.17">
<details key="start" value="4908"/>
<details key="end" value="4922"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.37" references="/0/genAbstractAcceleoGenerator/@body.0/@body.17/self">
<details key="start" value="-1"/>
<details key="end" value="-1"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.38" references="/0/genAbstractAcceleoGenerator/@body.0/@body.18">
<details key="start" value="4924"/>
<details key="end" value="5311"/>
<details key="line" value="127"/>
</eAnnotations>
<eAnnotations source="positions.39" references="/0/genAbstractAcceleoGenerator/@body.0/@body.19">
<details key="start" value="5312"/>
<details key="end" value="5316"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.40" references="/0/genAbstractAcceleoGenerator/@body.0/@body.20">
<details key="start" value="5318"/>
<details key="end" value="5528"/>
<details key="line" value="139"/>
</eAnnotations>
<eAnnotations source="positions.41" references="/0/genAbstractAcceleoGenerator/@body.0/@body.21">
<details key="start" value="5529"/>
<details key="end" value="5534"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.42" references="/0/genAbstractAcceleoGenerator/@body.0/@body.22">
<details key="start" value="5536"/>
<details key="end" value="5582"/>
<details key="line" value="144"/>
</eAnnotations>
<eAnnotations source="positions.43" references="/0/genAbstractAcceleoGenerator/@body.0/@body.23">
<details key="start" value="5583"/>
<details key="end" value="5588"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.44" references="/0/genAbstractAcceleoGenerator/@body.0/@body.24">
<details key="start" value="5590"/>
<details key="end" value="6448"/>
<details key="line" value="145"/>
</eAnnotations>
<eAnnotations source="positions.45" references="/0/genAbstractAcceleoGenerator/@body.0/@body.25">
<details key="start" value="6449"/>
<details key="end" value="6463"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.46" references="/0/genAbstractAcceleoGenerator/@body.0/@body.25/self">
<details key="start" value="-1"/>
<details key="end" value="-1"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.47" references="/0/genAbstractAcceleoGenerator/@body.0/@body.26">
<details key="start" value="6465"/>
<details key="end" value="6482"/>
<details key="line" value="162"/>
</eAnnotations>
<eAnnotations source="positions.48" references="/0/genAbstractAcceleoGenerator/@body.0/@body.27">
<details key="start" value="6483"/>
<details key="end" value="6497"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.49" references="/0/genAbstractAcceleoGenerator/@body.0/@body.27/self">
<details key="start" value="-1"/>
<details key="end" value="-1"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.50" references="/0/genAbstractAcceleoGenerator/@body.0/@body.28">
<details key="start" value="6499"/>
<details key="end" value="7341"/>
<details key="line" value="162"/>
</eAnnotations>
<eAnnotations source="positions.51" references="/0/genAbstractAcceleoGenerator/@body.0/@body.29">
<details key="start" value="7342"/>
<details key="end" value="7347"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.52" references="/0/genAbstractAcceleoGenerator/@body.0/@body.30">
<details key="start" value="7349"/>
<details key="end" value="15029"/>
<details key="line" value="175"/>
</eAnnotations>
<eAnnotations source="positions.53" references="/0/genAbstractAcceleoGenerator/@body.0/@body.31">
<details key="start" value="15030"/>
<details key="end" value="15034"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.54" references="/0/genAbstractAcceleoGenerator/@body.0/@body.32">
<details key="start" value="15036"/>
<details key="end" value="15453"/>
<details key="line" value="347"/>
</eAnnotations>
<eAnnotations source="positions.55" references="/0/genAbstractAcceleoGenerator/@body.0/@body.33">
<details key="start" value="15461"/>
<details key="end" value="15704"/>
<details key="line" value="361"/>
</eAnnotations>
<eAnnotations source="positions.56" references="/0/genAbstractAcceleoGenerator/@body.0/@body.33/@body.0">
<details key="start" value="15506"/>
<details key="end" value="15533"/>
<details key="line" value="362"/>
</eAnnotations>
<eAnnotations source="positions.57" references="/0/genAbstractAcceleoGenerator/@body.0/@body.33/@body.1">
<details key="start" value="15534"/>
<details key="end" value="15548"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.58" references="/0/genAbstractAcceleoGenerator/@body.0/@body.33/@body.1/aPackage">
<details key="start" value="15534"/>
<details key="end" value="15542"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.59" references="/0/genAbstractAcceleoGenerator/@body.0/@body.33/@body.2">
<details key="start" value="15550"/>
<details key="end" value="15610"/>
<details key="line" value="362"/>
</eAnnotations>
<eAnnotations source="positions.60" references="/0/genAbstractAcceleoGenerator/@body.0/@body.33/@body.3">
<details key="start" value="15611"/>
<details key="end" value="15625"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.61" references="/0/genAbstractAcceleoGenerator/@body.0/@body.33/@body.3/aPackage">
<details key="start" value="15611"/>
<details key="end" value="15619"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.62" references="/0/genAbstractAcceleoGenerator/@body.0/@body.33/@body.4">
<details key="start" value="15627"/>
<details key="end" value="15650"/>
<details key="line" value="363"/>
</eAnnotations>
<eAnnotations source="positions.63" references="/0/genAbstractAcceleoGenerator/@body.0/@body.33/@body.5">
<details key="start" value="15651"/>
<details key="end" value="15665"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.64" references="/0/genAbstractAcceleoGenerator/@body.0/@body.33/@body.5/aPackage">
<details key="start" value="15651"/>
<details key="end" value="15659"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.65" references="/0/genAbstractAcceleoGenerator/@body.0/@body.33/@body.6">
<details key="start" value="15667"/>
<details key="end" value="15690"/>
<details key="line" value="363"/>
</eAnnotations>
<eAnnotations source="positions.66" references="/0/genAbstractAcceleoGenerator/@body.0/@body.33/aPackage">
<details key="start" value="15467"/>
<details key="end" value="15492"/>
<details key="line" value="361"/>
</eAnnotations>
<eAnnotations source="positions.67" references="/0/genAbstractAcceleoGenerator/@body.0/@body.33/@iterSet">
<details key="start" value="15495"/>
<details key="end" value="15503"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.68" references="/0/genAbstractAcceleoGenerator/@body.0/@body.33/@iterSet/self">
<details key="start" value="-1"/>
<details key="end" value="-1"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.69" references="/0/genAbstractAcceleoGenerator/@body.0/@body.34">
<details key="start" value="15705"/>
<details key="end" value="19000"/>
<details key="line" value="366"/>
</eAnnotations>
<eAnnotations source="positions.70" references="/0/genAbstractAcceleoGenerator/@body.0/@fileUrl">
<details key="start" value="617"/>
<details key="end" value="641"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.71" references="/0/genAbstractAcceleoGenerator/@body.0/@fileUrl/@source">
<details key="start" value="617"/>
<details key="end" value="631"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.72" references="/0/genAbstractAcceleoGenerator/@body.0/@fileUrl/@source/self">
<details key="start" value="-1"/>
<details key="end" value="-1"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.73" references="/0/genAbstractAcceleoGenerator/@body.0/@fileUrl/@argument.0">
<details key="start" value="634"/>
<details key="end" value="641"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.74" references="/0/genAbstractAcceleoGenerator/@body.0/@charset">
<details key="start" value="650"/>
<details key="end" value="657"/>
<details key="line" value="0"/>
</eAnnotations>
<eAnnotations source="positions.75" references="/0/genAbstractAcceleoGenerator/acceleoMainClass">
<details key="start" value="554"/>
<details key="end" value="589"/>
<details key="line" value="16"/>
</eAnnotations>
</ecore:EAnnotation>
</xmi:XMI>