【客户端】采用swing编写代码生成器的故事

【前言】

这个代码生成器恐怕是好事多磨了,我一直做了两个月,最主要是没有确定开发环境及客户端技术,光是客户端技术就已经试过winform,wpf,gtk#,swing,后来终于确定为swing并且持续进行开发,终于有所成果,下面是一系列旧的代码生成器相关文章,假如大家有兴趣看看开发历程的话,可以去看看:

【java工具】使用jdbc访问数据库获取某个存储过程信息及下面参数信息

【代码生成】如何生成自定义表单?(1)

【代码生成】如何生成自定义表单?(2)---基础数据及注解

【代码生成】如何生成自定义表单?(3)---将用户模型及注解转换成为表单数据

【代码生成】如何生成自定义表单?(4)---几个模板及格式

【代码生成】如何生成自定义表单?(5)---如何使用及使用效果

【java】递归遍历获取模型所有参数及复杂模型下面所有参数

【分享】分享一个swing做的代码生成器---还需要改进,代码未稳定。


ok,上面就是为了这个代码生成器而写的文章,都是一些旧文章,可看可不看,下面我将补完一些开发文档,然后告诉大家swing其实还是很好用的,就是门槛有点高。

【需求】

实际上需求只有一个,就是生成代码,代码生成器是建立在拥有一定项目框架上面的,我的做法是,编写相关模板,然后传递表单信息,列信息等给模板,让模板自行解析。

下面说说相关难点及技术。

【模板引擎】

这里不得不说一下java的好处了,我用c#开发的时候虽然也有模板引擎,譬如:StringTemplate,NVleocity,razor等等,但是有一个缺陷就是,感觉成熟程度不如java的模板引擎,并且,绝大部分模板引擎都没有ide支持,nvelocity我试过用来编写一个网站,模板的编写是噩梦,一个命令写错了都出错,并且没有提示。razor虽然有提示,但是要在单独的winform下使用要经过一系列设置,有兴趣的同学可以看看下面这文章:

【搬运外国同行文章】在非网页程序里使用razor模板引擎


后来我采用java的velocity及配套的Intellij ide才觉得这才是开发商业应用的组合。关于velocity的配置及应用,各位有兴趣的话可以看看我的这篇博文:

【java工具类】对velocity的封装


这里说一说一个难点,在开发时候经常遇到的,那就是如何找到资源,如何定位资源?

通常项目里面的资源,譬如图片,会放在一般目录下面还有放在jar文件,两种放置方式的获取方法不一致。这两种获取路径方式--我个人的方式是以一个类作为基准,获取路径,您可以参考这篇博文:

【java辅助类】如何获取普通类或者jar的路径?


【swing编写】

swing的布局是一个难点,我建议使用eclipse的windowbuilder来进行布局,里面的formlayout(jgoodies的)非常好用。


下面将最新版的截图放出来,顺便给大家下载使用:

(比旧版多了每一个参数的验证规则,中文名称等设置)


主界面(同样采用sqlite来存放常见连接,连接的添加修改删除管理页面就不截图了,跟以前一样)



这个是enum枚举类的wrapper生成界面,大家假如用过velocity就会发现,velocity不支持枚举类及静态了,所以编写wrapper就成为必须而又乏味的一件苦活。



生成的结果。






某个表的参数列表




参数的验证规则,显示方式设置。




假如包含子表,那么子表的设置。


ok,我上传上去看看。


swing版代码生成器1.2





POJOGenerator(POJO代码生成器 v1.2) 本POJO代码生成器采用Java的Swing技术编码实现,是绿色免费工具,可以自由传播。 由于本工具的内部实现较菜,所以还请反编译高手手下留情,让我留几分颜面。^_^ 作者本人只用过Oracle、MySQL、MS SQL Server这三款数据库产品,所以制作成exe 可执行文件时只添入了这三款数据库的驱动支持。如果您需要使用这款工具从其它 数据库中生成POJO,那么您可以联系我(Email:CodingMouse@gmail.com),我会 添加其它数据库的驱动支持后通过电子邮件发送给您。 简单的使用说明: 1、先将压缩档解压到任意文件夹。 2、可以预先在配置档cmsdk4j.cfg.xml中设定您的数据库服务器配置,配置档中已经 提供了默认的配置信息,您仅需在此基础上修改部分参数(如:IP地址、端口号、 用户名、密码、数据库名等),这些参数将作为生成器的预设数据库连接配置参数。 3、可以预先在配置档generator.cfg.xml中设定您的数据类型映射方案,配置档中已经 提供了MS SQL Server和Oracle两种映射方案,当然,可能有不太完整的地方,您可以 根据实际情况稍作修改即可。需要注意的一点是ref属性表示引用同一映射方案的另一 映射,这样您便可以简化同一映射数据类型的配置;而import属性是指定需要在最终 生成的源代码中作为类最开始的package类型导入声明部分的导入类型名称,因此,这 个名称是完整带包名的类名称,否则不能正确生成最终代码。配置档中提供的默认配置 如果不能满足你的需要,也可以自行根据实际情况进行修改。 4、所有配置档仅在工具启动初始读取一次并缓存到内存中,因此,如果您是在工具运行 时修改的配置档,请重新启动本工具以使新的配置生效。并且,所有配置档的XML结构均 不能修改,只能修改其节点间的文本值或属性值,否则会导致本工具无法工作。 5、所有最终代码生成效果都可以在左边的代码预览区域中查看和进行二次修改,点击 【写入磁盘文件】按钮生成到磁盘文件时将以代码预览区中的内容为准。当然,通常 更好的做法是将最终代码生成后拷贝到您的项目对应文件夹中。最好不要直接指向您的 项目文件夹,因为本工具会直接覆盖掉指定目录中同名的文件。最终生成的代码文件以 .java为扩展名。 如果您有好的建议,请发送留言到作者博客:http://blog.youkuaiyun.com/CodingMouse 或发送邮件到:CodingMouse@gmail.com 本工具已经打包成exe可执行文件,便于在Window环境下运行,但仍需要你的机器上 安装至少1.5版本的jre环境。 关联文章:http://blog.youkuaiyun.com/CodingMouse/archive/2009/07/13/4345782.aspx http://www.java2000.net/p17774 By CodingMouse 2009年7月14日
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值