package cn.baiweigang.qtaf.toolkit.util;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Map;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;
/**
* 根据模板+数据 输出文件
* @author @<a href='http://weibo.com/bwgang'>bwgang</a> (bwgang@163.com)<br/>
*/
public class FreeMakerUtil {
//日志记录
private static LogUtil log=LogUtil.getLogger(FreeMakerUtil.class);
/**
* 根据模板+数据 输出文件
* @param templateFilePath 模板的绝对路径
* @param data 数据
* @param javaFilePath 输出的文件位置
* @return boolean
*/
public boolean CreateJavaFile(String templateFilePath,Map<String, Object> data,String javaFilePath) {
if (!FileUtil.isExist(templateFilePath)) {
log.info("模板文件不存在:"+templateFilePath);
return false;
}
if (null == data) {
log.info("模板数据不能为null");
return false;
}
// Map<String, String> clsMap= (Map<String, String>) data.get("clsInfo");
// for (Entry<String, String> entry : clsMap.entrySet()) {
// String key = entry.getKey().toString();
// String value = entry.getValue().toString();
// log.info(key+"=="+value);
// }
// log.info("FreeMaker--39--"+data.size());
// PrintModelObject.P(data.get("clsInfo"));
if (!FileUtil.createFile(javaFilePath)) {
return false;
}
try {
String tmpPath=FileUtil.getParentPath(templateFilePath);
String tmpName=FileUtil.getFileName(templateFilePath);
Configuration cfg =new Configuration();
cfg.setDirectoryForTemplateLoading(new File(tmpPath));
cfg.setObjectWrapper(new DefaultObjectWrapper());
//读取模板
Template template= cfg.getTemplate(tmpName);
//输出到文件
Writer out = new OutputStreamWriter(new FileOutputStream(javaFilePath),"UTF-8");
template.process(data, out);//根据模板和数据输出java文件
return true;
} catch (IOException | TemplateException e) {
//生成.java文件失败
log.error(e.getMessage());
return false;
}
}
}