package cn.org.rapid_framework.generator.util;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.StringReader;
import java.io.StringWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
public class FreemarkerHelper {
public static List<String> getAvailableAutoInclude(Configuration conf,List<String> autoIncludes) {
List<String> results = new ArrayList();
for(String autoInclude : autoIncludes) {
try {
Template t = new Template("__auto_include_test__",new StringReader("1"),conf);
conf.setAutoIncludes(Arrays.asList(new String[]{autoInclude}));
t.process(new HashMap(), new StringWriter());
results.add(autoInclude);
}catch(Exception e) {
}
}
return results;
}
public static void processTemplate(Template template, Map model, File outputFile,String encoding) throws IOException, TemplateException {
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outputFile),encoding));
template.process(model,out);
out.close();
}
public static String processTemplateString(String templateString,Map model,Configuration conf) {
StringWriter out = new StringWriter();
try {
Template template = new Template("templateString...",new StringReader(templateString),conf);
template.process(model, out);
return out.toString();
}catch(Exception e) {
throw new IllegalStateException("cannot process templateString:"+templateString+" cause:"+e,e);
}
}
}