
sf.database.template.freemarker.FreemarkerHelp Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of sorm Show documentation
Show all versions of sorm Show documentation
java jpa tool for spring
The newest version!
package sf.database.template.freemarker;
import freemarker.cache.StringTemplateLoader;
import freemarker.core.Environment;
import freemarker.ext.beans.BeansWrapper;
import freemarker.ext.beans.BeansWrapperBuilder;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateHashModel;
import freemarker.template.TemplateModel;
import freemarker.template.TemplateModelException;
import sf.common.IgnoreEmptyList;
import sf.database.jdbc.sql.SQLContext;
import sf.database.jdbc.sql.SQLParameter;
import sf.database.template.TemplateConstants;
import sf.database.template.TemplateRender;
import sf.database.template.freemarker.ext.InModel;
import sf.database.template.freemarker.ext.PageDirective;
import sf.database.template.freemarker.ext.PageIgnoreDirective;
import sf.database.template.freemarker.ext.ParaModel;
import sf.database.template.freemarker.ext.TupleModel;
import sf.database.template.freemarker.ext.WhereDirective;
import sf.database.template.sql.SqlHelp;
import sf.tools.codec.HashUtils;
import java.io.IOException;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class FreemarkerHelp {
private static FreemarkerHelp instance = null;
public static FreemarkerHelp getInstance() {
if (instance == null) {
instance = new FreemarkerHelp();
}
return instance;
}
Configuration cfg = new Configuration(Configuration.getVersion());
StringTemplateLoader stringLoader = new StringTemplateLoader();
public FreemarkerHelp() {
cfg.setTemplateLoader(stringLoader);
cfg.setDefaultEncoding("UTF-8");
cfg.setObjectWrapper(new DefaultObjectWrapper(Configuration.getVersion()));
Map share = new HashMap<>();
ParaModel m = new ParaModel();
share.put("p", m);
share.put("para", m);
share.put("sqlIn", new InModel());
share.put("tuple", new TupleModel());
share.put("page", new PageDirective());
share.put("pageIgnore", new PageIgnoreDirective());
share.put("where", new WhereDirective());
try {
cfg.setSharedVariables(share);
} catch (TemplateModelException e) {
throw new RuntimeException(e);
}
}
public Configuration getCfg() {
return cfg;
}
public void putTemplate(String key, String templateContent) {
templateContent = SqlHelp.replaceLineSql(templateContent);
stringLoader.putTemplate(key.trim(), templateContent.trim());
}
public void putAllTemplate(Map map) {
for (Map.Entry entry : map.entrySet()) {
putTemplate(entry.getKey(), entry.getValue());
}
}
public Template getTemplate(String key) {
try {
return cfg.getTemplate(key);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public Template getTemplate(String key, String dbType) {
try {
Template template = cfg.getTemplate(TemplateRender.wrapKey(key, dbType), null, null, null, true, true);
if (template == null) {
template = cfg.getTemplate(key);
}
return template;
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public String render(String key, String dbType, Map params, List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy