package com.norteksoft.product.util;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.StringWriter;
import java.util.Locale;
import java.util.Map;
import com.norteksoft.tags.grid.GridTag;
import freemarker.template.Configuration;
import freemarker.template.SimpleHash;
import freemarker.template.Template;
public class TagTemplateRender{
private static final String TEMPLATE_DIR="template/tags/";
private static Configuration config = null;
public static TagTemplateRender getInstance() {
return new TagTemplateRender();
}
public TagTemplateRender() {
if (config == null) {
config = new Configuration();
config.setTemplateLoader(new StringTemplateLoader());
try {
config.setSetting("datetime_format", "yyyy-MM-dd HH:mm:ss");
config.setLocale(Locale.CHINA);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
@SuppressWarnings("unchecked")
public String render(Map dataModel, String fileName) throws Exception {
String ret=render(dataModel, fileName,true);
return ret;
}
/**
*
* @param dataModel
* @param fileName
* @param ifTag 是否是标签,如500,403,404,casfailed都不是标签
* @return
* @throws Exception
*/
@SuppressWarnings("unchecked")
public String render(Map dataModel, String fileName,boolean ifTag) throws Exception {
String ret = null;
BufferedReader reader=null;
StringWriter stringWriter=null;
BufferedWriter writer=null;
try {
String name=fileName;
if(ifTag){
name=TagTemplateRender.TEMPLATE_DIR+fileName;
}
reader=new BufferedReader(new InputStreamReader(GridTag.class.getClassLoader().getResourceAsStream(name),"UTF-8"));
Template template = new Template(null, reader, config, "UTF-8");
SimpleHash root = new SimpleHash();
root.putAll(dataModel);
stringWriter= new StringWriter();
writer = new BufferedWriter(stringWriter);
template.process(root, writer);
writer.flush();
ret = stringWriter.toString();
} catch (Exception ex) {
ex.printStackTrace();
ret = null;
}finally{
reader.close();
stringWriter.close();
writer.close();
}
return ret;
}
}