1,createDomainInfo(domainName) ,取得domain的标准名称和首字符小写名称,文件是否存在,若存在则将java文件进行编译并得到类属性和属性类型
2,generateDomain ,根据domainName从模板生成即可 java
3,generateController : createDomainInfo, 从模板生成java文件
4,generateView: createDomainInfo, 从模板生成 jsp
生成前面几个很简单,但要是生成view 就有些难办了,这需要遍历domain的所有属性,只能通过class文件来实现,要么先对这个进行编译,然后再读取class文件,先考虑手动调用 compile借口吧,用classloader实现一下,若是能实现交叉编译那么就完美了,按照原理应该可以实现, 得到class文件后再考虑下一步的计划,如果有多对多或者一对多的关系,那么在list或者show,或者 edit,save, update 这些地方都需要进行优化,先完成compile再说. dao层的api进行下重写即可完成controller方面的功能, 接下来就是view 页面如何实现create 时如何得到自动关联表的全部值呢,这个应该放到jsp层去考虑,将dao传到jsp层(*应该不会产生连接长期占用,dao是在操作时才得到连接,然后操作玩就释放了*)
还有 view页面中用到了class属性的遍历,并需要根据 属性的类型然后生成相应的<input>标签, 既然涉及到遍历那么就应该用freemarker吧,不知道fm 对 类的类型支持的怎么养? 还有一种方案是采用jsp的解析方式对vm进行解析,首先将vm生成java代码,然后编译成类,再执行输出内容这就是最终产生的内容,这个实现方式基于前面的实现,具体实现的代码可以参考一下jetty中jsp产生的代码,不过简单考虑的话直接做出来就是了.
结论: 有些事不亲自做,你体会不到这其中的难点,只靠泛泛的想一下貌似很简单,要深入一点下去想,揪出细节,才能了解到其中的复杂度,才能估计出可行性和完成的时间