package test;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import com.codegen.generator.DaoGenerator;
import com.codegen.generator.Generator;
import com.codegen.generator.impl.DaoGeneratorImpl;
import com.codegen.model.JavaModel;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
/** *//**
* Action代码产生器,根据Action类模板用FreeMarker产生Action代码.
* <br>模板例子请参照config目录下的action.ftl
* @author HuangYu
*/
public class GenMain {
private Configuration cfg;
private String templateDir = "template";
private String templateName = "DaoInterface.java.ftl";
private String outputDir = "/codegen/output";
public GenMain() throws IOException{
init();
}
public void setOutputDir(String outputDir) {
this.outputDir = outputDir;
}
public void setTemplateDir(String templateDir) throws IOException {
this.templateDir = templateDir;
cfg.setDirectoryForTemplateLoading(new File(templateDir));
}
public void setTemplateName(String templateName) {
this.templateName = templateName;
}
public void init() throws IOException {
// Initialize the FreeMarker configuration;
// - Create a configuration instance
cfg = new Configuration();
File templateDir = new File(this.templateDir);
cfg.setDirectoryForTemplateLoading(templateDir);
cfg.setLocale(Locale.CHINA);
cfg.setDefaultEncoding("UTF-8");
}
/** *//**
* 根据Model类产生Action类代码,如UserAction.java
* @param className Model类的名字,如:User
*/
public void generate(String className) throws IOException{
JavaModel model=new JavaModel();
model.setClassName(className);
// Build the data-model
Map<String, Object> data = new HashMap<String, Object>();
data.put("model", model);
// Get the templat object
Template template = cfg.getTemplate(templateName);
org.apache.commons.io.FileUtils.forceMkdir(new File(outputDir));
File output = new File(outputDir, className + "Dao.java");
Writer writer = new FileWriter(output);
// Merge the data-model and the template
try {
template.process(data, writer);
} catch (TemplateException e) {
e.printStackTrace();
}
}
/** *//**
* 测试,根据Model类生成相应的Action
*/
public static void main(String[] args) throws IOException {
// GenMain gen = new GenMain();
// gen.generate("User");
// System.out.println("代码已生成,位置:"+gen.outputDir);
// DaoGenerator daoGenerator=new DaoGeneratorImpl();
// daoGenerator.genAll("UserFuck");
// daoGenerator.genDaoInterface("UserDao.java");
// daoGenerator.genDaoImpl("UserDaoImpl.java");
// System.out.println("代码已生成");
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Java代码自动生成 freemarker
共30个文件
class:10个
java:10个
ftl:4个
需积分: 15 99 下载量 152 浏览量
2014-11-13
23:30:50
上传
评论
收藏 1.1MB ZIP 举报
温馨提示
上次上传是自己手工string拼成实现的代码,这次试用了freemarker模板自动生成,效果是一样的,代码质量提高了
资源推荐
资源详情
资源评论
收起资源包目录
JavaCodeTemplate.zip (30个子文件)
JavaCodeTemplate
bin
test
GenMain.class 3KB
GenMain1.class 3KB
com
codegen
model
JavaModel.class 1KB
DaoModel.class 567B
constant
DaoConstant.class 569B
generator
DaoGenerator.class 254B
Generator.class 197B
impl
DaoGeneratorImpl.class 2KB
AbstractGenerator.class 3KB
util
ConfigurationHelper.class 1KB
.settings
org.eclipse.jdt.core.prefs 598B
src
test
GenMain1.java 3KB
GenMain.java 3KB
com
codegen
model
DaoModel.java 279B
JavaModel.java 910B
constant
DaoConstant.java 361B
generator
DaoGenerator.java 232B
Generator.java 172B
impl
AbstractGenerator.java 2KB
DaoGeneratorImpl.java 2KB
util
ConfigurationHelper.java 605B
.project 392B
.classpath 482B
lib
freemarker.jar 850KB
commons-lang-2.4.jar 256KB
commons-io-1.4.jar 106KB
template
DaoImpl.java.ftl 286B
BaseRepository.java.ftl 325B
BaseService.java.ftl 831B
DaoInterface.java.ftl 102B
共 30 条
- 1
资源评论
左岸001
- 粉丝: 1
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功