我必须使用GWT在jboss errai中创建一个项目,但我想使用eclipse建模框架.ecore模型使用acceleo生成我的模型代码。我做过这件事。
mvn archetype:generate -DarchetypeGroupId = org.jboss.errai.archetypes -DarchetypeArtifactId = cdi-quickstart -DarchetypeVersion = 2.2.0.Final
导入项目以eclipse作为现有的maven项目。
转到Acceleo->将项目转换为Acceleo Generator项目,但什么都没有。
然后我转到Acceleo->转换为Acceleo MTL项目并使用.ecore模型创建了一个新的加速项目并使用.ecore模型为我之前的项目生成模型,但在模型类中出现错误,因为我在字符串中获得EString 和其他也作为E数据类型,PLZ建议解决方案如何在我的jboss errai maven项目中使用加速功能。
我的模板文件为:
[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数据和其他处理器
答案 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]