将加速器与jboss errai和gwt结合使用

时间:2013-03-30 07:46:58

标签: gwt jboss emf acceleo errai

我必须使用GWT在jboss errai中创建一个项目,但我想使用eclipse建模框架.ecore模型使用acceleo生成我的模型代码。我做过这件事。

  1. 使用命令
  2. 创建maven项目

    mvn archetype:generate -DarchetypeGroupId = org.jboss.errai.archetypes -DarchetypeArtifactId = cdi-quickstart -DarchetypeVersion = 2.2.0.Final

    1. 导入项目以eclipse作为现有的maven项目。

    2. 转到Acceleo->将项目转换为Acceleo Generator项目,但什么都没有。

    3. 然后我转到Acceleo->转换为Acceleo MTL项目并使用.ecore模型创建了一个新的加速项目并使用.ecore模型为我之前的项目生成模型,但在模型类中出现错误,因为我在字符串中获得EString 和其他也作为E数据类型,PLZ建议解决方案如何在我的jboss errai maven项目中使用加速功能。

    4. 我的模板文件为:

      [comment encoding = UTF-8 /]
      [module main('http://www.eclipse.org/emf/2002/Ecore')  ]
      
      
      
      [template public generateElement(anEClass : EClass)]
      [comment @main /]
      [file (anEClass.name.concat('.java'), false, 'UTF-8')]
          public class [anEClass.name.toUpperFirst()/]{
      [ for (p:EAttribute|anEClass.eAttributes) separator('\n')]
      private [p.eAttributeType.name/] [p.name/];
      [/for]
      
      [ for (p:EAttribute|anEClass.eAttributes)  separator('\n')]
      public  [p.eAttributeType.name/]  get[p.name.toUpperFirst()/]()
      {
      
          return this.[p.name/];
      
      
      }
      [/for]
      
      [ for (p:EAttribute|anEClass.eAttributes) separator('\n')]
      public  void set[p.name.toUpperFirst()/]([p.eAttributeType.name/] [p.name/])
      {
       this.[p.name/]=[p.name/];
      }
      [/for]
      
      
      [protected ('protected')]
      
      [/protected]
      
      }
      
      
      
      [/file]
      [/template]
      

      .ecore模型生成的模型之一为

      public class UserRegistration {
          private EString strFirstName;
          private EString strSurName;
          private EString strOccupation;
          private EString strQualificaion;
          private EString strFotherName;
          private EString strMotherName;
          private EEList chMaritalStatus;
          private EDouble dblAnnualIncome;
          private EDate dtDOB;
          private EString strAbout;
          private EJavaClass objAcceleo;
      
          public EString getStrFirstName() {
              return this.strFirstName;
          }
      
          public EString getStrSurName() {
              return this.strSurName;
          }
      
          public EString getStrOccupation() {
              return this.strOccupation;
          }
      
          public EString getStrQualificaion() {
              return this.strQualificaion;
          }
      
          public EString getStrFotherName() {
              return this.strFotherName;
          }
      
          public EString getStrMotherName() {
              return this.strMotherName;
          }
      
          public EEList getChMaritalStatus() {
              return this.chMaritalStatus;
          }
      
          public EDouble getDblAnnualIncome() {
              return this.dblAnnualIncome;
          }
      
          public EDate getDtDOB() {
              return this.dtDOB;
          }
      
          public EString getStrAbout() {
              return this.strAbout;
          }
      
          public EJavaClass getObjAcceleo() {
              return this.objAcceleo;
          }
      
          public void setStrFirstName(EString strFirstName) {
              this.strFirstName = strFirstName;
          }
      
          public void setStrSurName(EString strSurName) {
              this.strSurName = strSurName;
          }
      
          public void setStrOccupation(EString strOccupation) {
              this.strOccupation = strOccupation;
          }
      
          public void setStrQualificaion(EString strQualificaion) {
              this.strQualificaion = strQualificaion;
          }
      
          public void setStrFotherName(EString strFotherName) {
              this.strFotherName = strFotherName;
          }
      
          public void setStrMotherName(EString strMotherName) {
              this.strMotherName = strMotherName;
          }
      
          public void setChMaritalStatus(EEList chMaritalStatus) {
              this.chMaritalStatus = chMaritalStatus;
          }
      
          public void setDblAnnualIncome(EDouble dblAnnualIncome) {
              this.dblAnnualIncome = dblAnnualIncome;
          }
      
          public void setDtDOB(EDate dtDOB) {
              this.dtDOB = dtDOB;
          }
      
          public void setStrAbout(EString strAbout) {
              this.strAbout = strAbout;
          }
      
          public void setObjAcceleo(EJavaClass objAcceleo) {
              this.objAcceleo = objAcceleo;
          }
      
          //Start of user code protected
          //End of user code
      }
      

      这里我将EString取代String和其他原始数据类型作为E-Data类型。

      Plz建议一个解决方案如何获得相同的java数据和其他处理器

1 个答案:

答案 0 :(得分:0)

实际上,我在我的mtl文件中修改了我的问题的核心答案

[comment encoding = UTF-8 /]
[module main('http://www.eclipse.org/emf/2002/Ecore')/]  
[template public generateElement(anEClass : EClass)]
[comment @main /]
[file (anEClass.name.concat('.java'), false, 'UTF-8')]
package com.garvityWeb.main.migrated.models;
@Portable
public class [anEClass.name.toUpperFirst()/]
{
[ for (p:EAttribute|anEClass.eAttributes) separator('\n')]
@Inject
@DataField
private [p.eAttributeType.instanceClassName/] [p.name/];
[/for]

[ for (p:EAttribute|anEClass.eAttributes)  separator('\n')]
public  [p.eAttributeType.instanceClassName/]  get[p.name.toUpperFirst()/]()
{
    return this.[p.name/];
}
[/for]
[ for (p:EAttribute|anEClass.eAttributes) separator('\n')]
public  void set[p.name.toUpperFirst()/]([p.eAttributeType.instanceClassName/] [p.name/])
{
 this.[p.name/]=[p.name/];
}
[/for]
}
[/file]
[/template]