All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.luues.tool.template.engine.beetl.BeetlUtil Maven / Gradle / Ivy

There is a newer version: 2.0.1.RELEASE
Show newest version
package cn.luues.tool.template.engine.beetl;

import cn.luues.tool.core.io.FileUtil;
import cn.luues.tool.core.io.IORuntimeException;
import cn.luues.tool.core.util.CharsetUtil;
import org.beetl.core.Configuration;
import org.beetl.core.GroupTemplate;
import org.beetl.core.ResourceLoader;
import org.beetl.core.Template;
import org.beetl.core.resource.ClasspathResourceLoader;
import org.beetl.core.resource.CompositeResourceLoader;
import org.beetl.core.resource.FileResourceLoader;
import org.beetl.core.resource.Matcher;
import org.beetl.core.resource.StringTemplateResourceLoader;
import org.beetl.core.resource.WebAppResourceLoader;
import java.io.IOException;
import java.io.Writer;
import java.nio.charset.Charset;
import java.util.Map;

/**
 * Beetl模板引擎工具类
* http://git.oschina.net/xiandafu/beetl2.0
* 文档:http://ibeetl.com/guide/beetl.html * * @author Mr-Wu * @deprecated 使用TemplateUtil替代 */ @Deprecated public final class BeetlUtil { /** * 创建默认模板组{@link GroupTemplate},默认的模板组从ClassPath中读取 * * @return {@link GroupTemplate} */ public static GroupTemplate createGroupTemplate() { return new GroupTemplate(); } /** * 创建字符串的模板组 {@link GroupTemplate},配置文件使用全局默认
* 此时自定义的配置文件可在ClassPath中放入beetl.properties配置 * * @return {@link GroupTemplate} * @since 3.2.0 */ public static GroupTemplate createStrGroupTemplate() { return createGroupTemplate(new StringTemplateResourceLoader()); } /** * 创建WebApp的模板组 {@link GroupTemplate},配置文件使用全局默认
* 此时自定义的配置文件可在ClassPath中放入beetl.properties配置 * * @return {@link GroupTemplate} * @since 3.2.0 */ public static GroupTemplate createWebAppGroupTemplate() { return createGroupTemplate(new WebAppResourceLoader()); } /** * 创建字符串的模板组 {@link GroupTemplate},配置文件使用全局默认
* 此时自定义的配置文件可在ClassPath中放入beetl.properties配置 * * @param path 相对ClassPath的路径 * @return {@link GroupTemplate} * @since 3.2.0 */ public static GroupTemplate createClassPathGroupTemplate(String path) { return createGroupTemplate(new ClasspathResourceLoader(path)); } /** * 创建文件目录的模板组 {@link GroupTemplate},配置文件使用全局默认,使用UTF-8编码
* 此时自定义的配置文件可在ClassPath中放入beetl.properties配置 * * @param dir 目录路径(绝对路径) * @return {@link GroupTemplate} * @since 3.2.0 */ public static GroupTemplate createFileGroupTemplate(String dir) { return createFileGroupTemplate(dir, CharsetUtil.CHARSET_UTF_8); } /** * 创建文件目录的模板组 {@link GroupTemplate},配置文件使用全局默认
* 此时自定义的配置文件可在ClassPath中放入beetl.properties配置 * * @param dir 目录路径(绝对路径) * @param charset 读取模板文件的编码 * @return {@link GroupTemplate} * @since 3.2.0 */ public static GroupTemplate createFileGroupTemplate(String dir, Charset charset) { return createGroupTemplate(new FileResourceLoader(dir, charset.name())); } /** * 创建自定义的模板组 {@link GroupTemplate},配置文件使用全局默认
* 此时自定义的配置文件可在ClassPath中放入beetl.properties配置 * * @param loader {@link ResourceLoader},资源加载器 * @return {@link GroupTemplate} * @since 3.2.0 */ public static GroupTemplate createGroupTemplate(ResourceLoader loader) { try { return createGroupTemplate(loader, Configuration.defaultConfiguration()); } catch (IOException e) { throw new IORuntimeException(e); } } /** * 创建自定义的 {@link GroupTemplate} * * @param loader {@link ResourceLoader},资源加载器 * @param conf {@link Configuration} 配置文件 * @return {@link GroupTemplate} */ public static GroupTemplate createGroupTemplate(ResourceLoader loader, Configuration conf) { return new GroupTemplate(loader, conf); } /** * 获得模板 * * @param groupTemplate {@link GroupTemplate} * @param source 模板资源,根据不同的 {@link ResourceLoader} 加载不同的模板资源 * @return {@link Template} */ public static Template getTemplate(GroupTemplate groupTemplate, String source) { return groupTemplate.getTemplate(source); } /** * 获得字符串模板 * * @param source 模板内容 * @return 模板 * @since 3.2.0 */ public static Template getStrTemplate(String source) { return getTemplate(createStrGroupTemplate(), source); } /** * 获得ClassPath模板 * * @param path ClassPath路径 * @param templateFileName 模板内容 * @return 模板 * @since 3.2.0 */ public static Template getClassPathTemplate(String path, String templateFileName) { return getTemplate(createClassPathGroupTemplate(path), templateFileName); } /** * 获得本地文件模板 * * @param dir 目录绝对路径 * @param templateFileName 模板内容 * @return 模板 * @since 3.2.0 */ public static Template getFileTemplate(String dir, String templateFileName) { return getTemplate(createFileGroupTemplate(dir), templateFileName); } // ------------------------------------------------------------------------------------- Render /** * 渲染模板 * * @param template {@link Template} * @param bindingMap 绑定参数 * @return 渲染后的内容 */ public static String render(Template template, Map bindingMap) { template.binding(bindingMap); return template.render(); } /** * 渲染模板,如果为相对路径,则渲染ClassPath模板,否则渲染本地文件模板 * * @param path 路径 * @param templateFileName 模板文件名 * @param bindingMap 绑定参数 * @return 渲染后的内容 * @since 3.2.0 */ public static String render(String path, String templateFileName, Map bindingMap) { if (FileUtil.isAbsolutePath(path)) { return render(getFileTemplate(path, templateFileName), bindingMap); } else { return render(getClassPathTemplate(path, templateFileName), bindingMap); } } /** * 渲染模板 * * @param templateContent 模板内容 * @param bindingMap 绑定参数 * @return 渲染后的内容 * @since 3.2.0 */ public static String renderFromStr(String templateContent, Map bindingMap) { return render(getStrTemplate(templateContent), bindingMap); } /** * 渲染模板 * * @param templateContent {@link Template} * @param bindingMap 绑定参数 * @param writer {@link Writer} 渲染后写入的目标Writer * @return {@link Writer} */ public static Writer render(Template templateContent, Map bindingMap, Writer writer) { templateContent.binding(bindingMap); templateContent.renderTo(writer); return writer; } /** * 渲染模板 * * @param templateContent 模板内容 * @param bindingMap 绑定参数 * @param writer {@link Writer} 渲染后写入的目标Writer * @return {@link Writer} */ public static Writer renderFromStr(String templateContent, Map bindingMap, Writer writer) { return render(getStrTemplate(templateContent), bindingMap, writer); } /** * 开始构建 {@link ResourceLoaderBuilder},调用{@link ResourceLoaderBuilder#build()}完成构建 * * @return {@link ResourceLoaderBuilder} */ public static ResourceLoaderBuilder resourceLoaderBuilder() { return new ResourceLoaderBuilder(); } /** * ResourceLoader构建器 * * @author Looly * */ public static class ResourceLoaderBuilder { private final CompositeResourceLoader compositeResourceLoader = new CompositeResourceLoader(); /** * 创建 * * @return ResourceLoaderBuilder */ public static ResourceLoaderBuilder create() { return new ResourceLoaderBuilder(); } /** * 添加一个资源加载器 * * @param matcher {@link Matcher} 匹配器 * @param resourceLoader {@link ResourceLoader} 匹配时对应的资源加载器 * @return ResourceLoaderBuilder */ public ResourceLoaderBuilder add(Matcher matcher, ResourceLoader resourceLoader) { compositeResourceLoader.addResourceLoader(matcher, resourceLoader); return this; } /** * 构建 * * @return {@link ResourceLoader} 资源加载器 */ public ResourceLoader build() { return compositeResourceLoader; } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy