package com.xcong.farmer.cms.core.template; import com.xcong.farmer.cms.common.utils.FileUtils; import com.xcong.farmer.cms.core.node.PartNode; import com.xcong.farmer.cms.core.node.Template; import lombok.extern.slf4j.Slf4j; import org.jsoup.nodes.Document; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.List; import java.util.Map; /** * @author wzy * @date 2022-07-01 **/ @Slf4j public class TemplateConfiguration extends Configuration{ private TemplateLoader templateLoader; public TemplateConfiguration(String templatePath, String staticPath, String outputPath, String baseUrl, String staticUrl) { super(templatePath, staticPath, outputPath, baseUrl, staticUrl); } public void templateLoader(TemplateLoader templateLoader) { this.templateLoader = templateLoader; } public void process(Map map, String templateName) { if (this.templateLoader == null) { throw new RuntimeException("TemplateLoader do not able to be null"); } map.put("apiUrl", API_URL); String companyCode = (String) map.get("companyCode"); log.info("解析开始执行--#类型:{}#--#模板名称:{}#--#ID:{}#", map.get("templateType"), templateName, map.get("id")); this.templateLoader.data(map); Template template = template(FileUtils.path(templatePath, companyCode), templateName); template.output(outputPath); // 判断是否有分页,有则执行。从第二页开始 int i = 2; while(Template.HAS_PAGING) { map.put("page", i); this.templateLoader.data(map); Template pageTemplate = template(FileUtils.path(templatePath, companyCode), templateName); pageTemplate.output(outputPath); i++; } } public Template template(String templatePath, String templateName) { return template(new File(path(templatePath) + templateName)); } public Template template(File file) { if (file == null) { throw new RuntimeException("template not exist"); } return this.templateLoader.template(file); } private String path(String path) { if (!path.endsWith("/")) { path = path + "/"; } return path; } }