首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > Ruby Rails >

ruby生成java资料的工具

2012-08-27 
ruby生成java文件的工具java开发的很多代码都是可以通过工具来生成的,虽然eclipse在这方面有些帮助,但其能

ruby生成java文件的工具
java开发的很多代码都是可以通过工具来生成的,虽然eclipse在这方面有些帮助,但其能力还是太有限,在本人学习ruby期间发现使用ruby来写个自动化的生成工具确实是个很不错的主意。由于公司使用的oracle+ibatis的持久层开发,所以本人开始的时间只是想生成一下ibatis的sqlmap的XML文件就可以了,但后来一想,其实service、dao、controller甚至JSP都可以完成大部分的有效生成。但即便如此,这个工具的代码量还是很小的,几乎是相当的容易。
由于本人主要是做JAVA的,所以ruby这个东西过段时间就忘了,可能再到以后再要想搞这么个工具,又得从头再来,所以决定把大体思路写下来。
其中涉及到的东西主要有几下几个:
1.读取配置文件。由于windows下的tcl/tk非常的难用(是本人目前用过的最难用的API之一),所以觉得还是用配置文件算了。XML不错,但结构有点复杂,所以本人使用的是yaml格式配置文件,感觉其与json有点相似。大体格式如下:

=begindao service controller domain sqlmap ...=end$LOAD_PATH.unshift(File.dirname(__FILE__)) unless $LOAD_PATH.include?(File.dirname(__FILE__))require 'dbi'require 'oci8'require "yaml"require "sqlmap"require "domain"require "dao_service"require "xml_service"require "controller"require "bean_util"require "list"require "form_jsp"class CrudModeldef initialize(tns,table,dpack,crud_pack,author)@tns = tns@table=table@clazz=BeanUtils.class_name(table)@name=BeanUtils.bean_name(table)#domain package@dpack=dpack#service dao controller package@crud_pack=crud_pack@author=authorDBI.connect("DBI:OCI8:#{@tns}","qaa","qaajkwin") do |dbh|#查询表的主键rs_id = dbh.execute("select ucc.column_name as ID from user_cons_columns ucc, user_constraints ucwhere ucc.constraint_name = uc.constraint_nameand uc.constraint_type = 'P' and uc.table_name = upper('#{@table}')")@primary_key = rs_id.fetch_hash["ID"]@id=BeanUtils.field_to_attr(@primary_key)#获取表的基本信息rs = dbh.execute("select * from "+@table)rs_seq = dbh.execute("select count(*) as seqcount from all_sequences where sequence_name='#{@table}_SEQUENCE'")sqlmap = SqlMapXml.new(rs_seq,rs,@table,@clazz,@name,@dpack,@primary_key,@id)sqlmap.write()domain = Domain.new(rs,@table,@clazz,@dpack)domain.write()dao_service = DaoService.new(@clazz,@name,@dpack,@crud_pack,@author)dao_service.write()xml_service = XmlService.new(@clazz,@name,@crud_pack)xml_service.write()controller = Controller.new(@clazz,@name,@id,@dpack,@crud_pack,@author)controller.write()#获取表的列注释rs_comments = dbh.execute("select column_name as columnName,comments from user_col_comments where table_name=upper('#{@table}')")column_comment = Hash.newwhile(column = rs_comments.fetch_hash) docolumn_comment.store(column["COLUMNNAME"],column["COMMENTS"])end#ListView.new(column_comment,@clazz,@name,@id,@dpack).write()FormJsp.new(column_comment,@name,@id).write()endendendconfig = YAML.load_file("database.yaml")CrudModel.new(config["tns"],config["table"],config["domain_pack"],config["crud_pack"],config["author"])


这个文件是生成java代码的主文件,具体的生成代码在相关的模块里面,总体来说,用ruby在做自动生成工具相当的方便,而且ruby本身的设计也相当的优秀。虽然本人以前也学过一段时间的rails,可惜只做过例子,并没有做出什么有实际帮助的东西来。但个人对ruby与rails评价还是很高的,都是些很不错的东西,希望以后能再有机会用到它们。
另外,本人开发使用的scite这个工具。

热点排行