`

JET2简单例子

    博客分类:
  • JET
 
阅读更多

1.JET生成java代码:

 

下列实例是一个模板,用于创建拥有任意数量属性的类。每个属性将有 getter 和 setter 与之关联,还有一些初始值。此外,所调用的函数的名称将输出到命令行,通过这种方式,模板即可为各函数添加简单的日志。

 

class <c:get select="/app/@class" /> {
<c:iterate select="/app/property" var="p" >
	private <c:get select="$p/@type" /> <c:get select="$p/@name" />;
</c:iterate>

	public <c:get select="/app/@class" />() {
	<c:iterate select="/app/property" var="p" >
		this.<c:get select="$p/@name" /> = <c:choose select="$p/@type" >
		<c:when test="'String'">"<c:get select="$p/@initial" />"</c:when>
		<c:otherwise><c:get select="$p/@initial" /></c:otherwise>
		</c:choose>
;
	</c:iterate>
	}

<c:iterate select="/app/property" var="p" >
	public void set<c:get select=\
	"camelCase($p/@name)" />(<c:get select="$p/@type" />
	<c:get select="$p/@name" />) {
		System.out.println\
		("In set<c:get select=\
		"camelCase($p/@name)" />()");
		this.<c:get select="$p/@name" /> = <c:get select="$p/@name" />;
	}
	
	public <c:get select=\
	"$p/@type" /> get<c:get select="camelCase($p/@name)" />() {
		System.out.println("In get<c:get select="camelCase($p/@name)" />()");
		return <c:get select="$p/@name" />;
	}
	
</c:iterate>
}

 

这里是该模板的输入模型实例:

 

<app class="Car">
	<property name="model" type="String" initial="Honda Accord" />
	<property name="horsepower" type="int" initial="140" />
	<property name="spareTires" type="boolean" initial="true" />
</app>

 

这些输入参数生成如下类:

 

class Car {
	private String model;
	private int horsepower;
	private boolean spareTires;

	public Car() {
		this.model = "Honda Accord";
		this.horsepower = 140;
		this.spareTires = true;
	}

	public void setModel(String model) {
		System.out.println("In setModel()");
		this.model = model;
	}
	
	public String getModel() {
		System.out.println("In getModel()");
		return model;
	}
	
	public void setHorsepower(int horsepower) {
		System.out.println("In setHorsepower()");
		this.horsepower = horsepower;
	}
	
	public int getHorsepower() {
		System.out.println("In getHorsepower()");
		return horsepower;
	}
	
	public void setSparetires(boolean spareTires) {
		System.out.println("In setSparetires()");
		this.spareTires = spareTires;
	}
	
	public boolean getSparetires() {
		System.out.println("In getSparetires()");
		return spareTires;
	}
	
}

 

 

2.JET生成其他代码:

 

为强调 JET 不仅仅可用来生成代码,我们给出了下面这个实例,这是一个模板,生成具有不同语气的电子邮件消息。所生成的各电子邮件的目的是是向某人索要求各种东西。下面提供控制文件(main.jet)及其调用的模板(email.jet)。

 

main.jet

<c:iterate select="/app/email" var="currEmail" >
	<ws:file template="templates/email.jet"
	path="{$org.eclipse.jet.resource.project.name}/{$currEmail/@to}.txt" />
</c:iterate>

 

email.jet

<c:setVariable var="numItems" select="0" />
<c:iterate select="$currEmail/request" var="r">
	<c:setVariable var="numItems" select="$numItems+1" />
</c:iterate>
<c:set select="$currEmail" name="numItems"><c:get select="$numItems" /></c:set>
	<c:choose select="$currEmail/@mood" >
	<c:when test="'happy'">My dear</c:when>
	<c:when test="'neutral'">Dear</c:when>
	<c:when test="'angry'">My enemy</c:when>
</c:choose> <c:get select="$currEmail/@to" />,

I am writing you <c:choose select="$currEmail/@mood" >
<c:when test="'happy'">in joy </c:when>
<c:when test="'neutral'"></c:when>
<c:when test="'angry'">in burning anger </c:when>
</c:choose>to ask for <c:choose select="$currEmail/@numItems" >
<c:when test="1">
a <c:get select="$currEmail/request/@item" />. 
</c:when>
<c:otherwise>
the following:

<c:setVariable var="i" select="0" />
<c:iterate select="$currEmail/request" var="r">
	<c:setVariable var="i" select="$i+1" />
	<c:get select="$i" />. <c:get select="$r/@item" />
</c:iterate>

</c:otherwise>
</c:choose>
<c:choose select="$currEmail/@mood">
	<c:when test="'happy'">Please</c:when>
	<c:when test="'neutral'">Please</c:when>
	<c:when test="'angry'">Either suffer my wrath, or</c:when>
</c:choose> send me <c:choose select="$currEmail/@numItems">
<c:when test="1">
this item</c:when>
<c:otherwise>
these items</c:otherwise>
</c:choose> <c:choose select="$currEmail/@mood" >
<c:when test="'happy'">at your earliest convenience.</c:when>
<c:when test="'neutral'">promptly.</c:when>
<c:when test="'angry'">immediately!</c:when>
</c:choose>

<c:choose select="$currEmail/@mood" >
<c:when test="'happy'">Your friend,</c:when>
<c:when test="'neutral'">Sincerely,</c:when>
<c:when test="'angry'">In rage,</c:when>
</c:choose>

<c:get select="/app/@from" />

 

该模板的输入模型实例如下:

sample.xml

<app from="Nathan" >
	<email to="Chris" mood="angry" >
		<request item="well-written article" />
	</email>
	<email to="Nick" mood="happy" >
		<request item="Piano" />
		<request item="Lollipop" />
		<request item="Blank DVDs" />
	</email>
</app>

 

将 mood 电子邮件蓝图应用于这些参数,生成下列两个文件。

 

分享到:
评论

相关推荐

    Eclipse 项目有一个称为 JET 的技术项目就是一个专门的代码生成器

    4. **实例应用**:通过具体的例子展示如何创建一个JET模板,以及这个模板如何根据输入数据生成相应的Java代码。这可能涉及到业务逻辑的建模,以及如何将这些逻辑转换为模板。 5. **最佳实践**:提供使用JET的一些...

    jet menu 简易菜单

    它们是演示如何在网页中嵌入和使用Jet Menu的实例。通过查看这些文件,我们可以学习如何编写HTML结构来创建菜单,以及如何链接到对应的CSS和JavaScript文件。这些示例文件通常包含注释,解释了代码的工作原理,对...

    asp超简单分页例子

    这个“asp超简单分页例子”很可能是为了展示如何在ASP中进行基础的分页功能。 首先,我们需要了解分页的基本原理。分页主要是通过计算每一页显示的数据量,然后根据用户请求的页码来决定从数据库中取出哪一部分数据...

    阿里开源的缓存框架JetCache.pdf

    2. 通过注解实现声明式的方法缓存 3. 支持TTL和两级缓存 4. 通过注解创建并配置Cache实例 5. 针对所有Cache实例和方法缓存的自动统计 6. Key的生成策略和Value的序列化策略是可以配置的 7. 分布式缓存自动刷新 8. ...

    Access简单例子

    本例"Access简单例子"显然旨在展示如何在DotNet环境下与Access数据库进行交互,实现数据的增删查改。 首先,让我们逐一解析提供的文件列表: 1. **App.config**:这是.NET应用程序的配置文件,通常包含连接字符串...

    asp连接access库简单实例

    以下是一个简单的ASP连接Access数据库的实例: ```vbscript Dim conn Set conn = Server.CreateObject("ADODB.Connection") conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\path\to\your\db.mdb;...

    德律转捷智程序工具

    压缩包子文件“Tri2jet”可能是TR-JET工具的安装包或者是一个转换实例。如果是安装包,用户需要按照指示进行安装,然后通过该工具进行TR到JET200的转换。如果是转换实例,那么它可能是一个已经完成转换的TR2程序,...

    简单的asp操作access例子源码

    本例中的“简单的asp操作access例子源码”是一个针对初学者的教程,通过具体的代码实例,展示了如何使用ASP与Access数据库进行交互,完成数据的增、删、改、查(CRUD)操作。 在ASP中,我们通常使用ADO(ActiveX ...

    VB操作Access简单例子

    2. 设置连接字符串,连接到Access数据库 3. 使用SQL语句执行数据库操作 4. 创建和使用ADODB.Recordset对象处理数据 5. 清理和释放资源以避免内存泄漏 通过不断实践和学习,你将能够熟练地在VB中操控Access数据库,...

    excelsior-jet-samples:Excelsior JET示例项目和基准

    1. **示例项目**:这些项目展示了如何使用Excelsior JET来编译和优化Java应用程序,可能包括简单的“Hello World”程序,以及更复杂的业务或计算逻辑。通过这些例子,开发者可以学习如何配置和调优编译过程。 2. **...

    利用JRO.JetEngine对象实现Access数据库压缩

    接下来,我们需要实例化JRO.JetEngine对象。以下是一个简单的易语言代码示例: ```e .数据库引擎 = 创建对象("JRO.JetEngine") ``` 一旦我们有了JetEngine对象,就可以开始进行数据库压缩了。关键在于调用`...

    MDB多表查询的简单例子.zip易语言项目例子源码下载

    在本项目“MDB多表查询的简单例子”中,我们主要探讨的是如何使用易语言来实现对MDB(Microsoft Access数据库)中的多表进行查询的操作。 MDB文件是Microsoft Access数据库的默认文件格式,它包含了表格、查询、...

    ASP操作数据库简单实例

    这个"ASP操作数据库简单实例"通过"caozuo.asp"文件,向初学者展示了如何用ASP连接Access数据库、执行SQL查询以及在网页上展示结果的基本流程。虽然标签中提到了"flash",但在这个实例中,Flash可能并未直接涉及,...

    VB2005连接ACCESS数据库简单实例

    总之,通过学习这个简单的实例,你可以掌握在VB2005中连接和操作ACCESS数据库的基础知识,为构建数据驱动的应用程序打下坚实基础。这包括理解ADO.NET组件、编写SQL语句、处理数据及事务,并能通过实际代码加深理解。

    jetcache:JetCache是​​一个Java缓存框架

    JetCache中的注释支持本地TTL,两级缓存和分布式自动刷新,您也可以手动编写Cache实例。 当前有四个工具: RedisCache , TairCache (在github上不是开源的), CaffeineCache (在内存中),一个简单的...

    VC ADO连接Access数据库与查询简单实例

    在本文中,我们将深入探讨如何使用Visual C++ (VC) 和 ActiveX Data ...这个简单实例为数据库编程新手提供了一个清晰的起点,随着经验的增长,你可以进一步探索ADO的高级特性和功能,如事务处理、存储过程调用等。

    简单的数据岛实例

    在这个“简单的数据岛实例”中,我们很可能会学习如何创建和管理这些数据片段,以及如何利用Recordset对象在这些岛屿之间高效地移动和操作数据。理解并熟练掌握这些知识点对于构建高性能、低延迟的数据访问应用至关...

    etCache 是一个基于 Java 的缓存系统封装,提供统一的 API 和注解来简化缓存的使用.rar

    当前有四个实现,RedisCache、TairCache、CaffeineCache和一个简易的LinkedHashMapCache,要添加新的实现也是非常简单。它的特性: 通过统一的API访问Cache系统 通过注解实现声明式的方法缓存 通过注解创建并配置...

    vb6.0操作Access简单例子

    总的来说,这个“vb6.0操作Access简单例子”应该演示了如何在VB6环境中使用ADO对象来建立数据库连接、执行SQL语句以及处理记录集,对于初学者来说,是一个很好的学习起点。通过阅读和分析这些文件,可以深入了解VB6...

    vuetify-jet-validator:一个简单的抽象类,可通过Vuetify简化表单验证

    指示安装库: npm install --save vuetify-jet-validator 在组件的React式数据对象中,创建一个验证器实例,并将其作为数据属性返回: data ( ) { const validator = new VuetifyJetValidator ( ) ; return { ...

Global site tag (gtag.js) - Google Analytics