From 853b3da7f705938071156fadcddb668b7546e719 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Tue, 05 Jul 2022 17:37:55 +0800
Subject: [PATCH] fix 完成文件输出
---
src/main/java/com/xcong/farmer/cms/core/template/TemplateLoader.java | 17 ----
src/main/java/com/xcong/farmer/cms/modules/core/service/impl/CmsCoreServiceImpl.java | 7 +
src/main/java/com/xcong/farmer/cms/core/node/Template.java | 97 ++++++++++++++++++++++-
src/main/java/com/xcong/farmer/cms/core/template/TemplateConfiguration.java | 33 -------
src/main/java/com/xcong/farmer/cms/modules/core/service/ICmsCoreService.java | 2
src/main/java/com/xcong/farmer/cms/core/handler/ColumnDataParserHandler.java | 9 +-
src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java | 23 +----
src/main/java/com/xcong/farmer/cms/core/handler/NavDataParserHandler.java | 12 +-
src/main/java/com/xcong/farmer/cms/core/handler/ArticlesDataParserHandler.java | 5
src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ReleaseServiceImpl.java | 4
10 files changed, 122 insertions(+), 87 deletions(-)
diff --git a/src/main/java/com/xcong/farmer/cms/core/handler/ArticlesDataParserHandler.java b/src/main/java/com/xcong/farmer/cms/core/handler/ArticlesDataParserHandler.java
index 61ecde7..2a0f273 100644
--- a/src/main/java/com/xcong/farmer/cms/core/handler/ArticlesDataParserHandler.java
+++ b/src/main/java/com/xcong/farmer/cms/core/handler/ArticlesDataParserHandler.java
@@ -4,6 +4,7 @@
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xcong.farmer.cms.configurations.properties.CmsProperties;
import com.xcong.farmer.cms.conversion.ArticleConversion;
import com.xcong.farmer.cms.core.node.AttrNode;
import com.xcong.farmer.cms.core.tag.data.ArticleData;
@@ -26,8 +27,8 @@
public class ArticlesDataParserHandler implements DataParserHandler {
private ArticleMapper articleMapper = SpringContextHolder.getBean(ArticleMapper.class);
+ private CmsProperties cmsProperties = SpringContextHolder.getBean(CmsProperties.class);
- private String BASE_URL = "http://192.168.0.1";
@Override
public void dataParser(AttrNode node) {
log.info("文章列表解析");
@@ -60,7 +61,7 @@
if (article.getType() == 2) {
articleData.setUrl(article.getArticleUrl());
} else {
- articleData.setUrl(BASE_URL + article.getPath() + "/" + article.getId() + ".html");
+ articleData.setUrl(cmsProperties.getBaseUrl() + article.getPath() + "/" + article.getId() + ".html");
}
diff --git a/src/main/java/com/xcong/farmer/cms/core/handler/ColumnDataParserHandler.java b/src/main/java/com/xcong/farmer/cms/core/handler/ColumnDataParserHandler.java
index 7a742e7..0ec80b8 100644
--- a/src/main/java/com/xcong/farmer/cms/core/handler/ColumnDataParserHandler.java
+++ b/src/main/java/com/xcong/farmer/cms/core/handler/ColumnDataParserHandler.java
@@ -1,6 +1,7 @@
package com.xcong.farmer.cms.core.handler;
import cn.hutool.core.collection.CollUtil;
+import com.xcong.farmer.cms.configurations.properties.CmsProperties;
import com.xcong.farmer.cms.conversion.ColumnConversion;
import com.xcong.farmer.cms.core.node.AttrNode;
import com.xcong.farmer.cms.core.tag.data.ColumnData;
@@ -25,7 +26,7 @@
private ColumnMapper columnMapper = SpringContextHolder.getBean(ColumnMapper.class);
private ArticleMapper articleMapper = SpringContextHolder.getBean(ArticleMapper.class);
- private String BASE_URL = "http://192.168.0.1";
+ private CmsProperties cmsProperties = SpringContextHolder.getBean(CmsProperties.class);
@Override
public void dataParser(AttrNode attrNode) {
@@ -55,14 +56,14 @@
public ColumnData columnToData(ColumnEntity column) {
ColumnData columnData = ColumnConversion.INSTANCE.entityToData(column);
- columnData.setUrl(BASE_URL + column.getPath());
+ columnData.setUrl(cmsProperties.getBaseUrl() + column.getPath());
if (column.getType() == 2) {
if (column.getTargetType() == 1) {
ArticleEntity article = this.articleMapper.selectArticleById(Long.parseLong(column.getTargetUrl()));
- columnData.setUrl(BASE_URL + article.getPath() + "/" + article.getId() + ".html");
+ columnData.setUrl(cmsProperties.getBaseUrl() + article.getPath() + "/" + article.getId() + ".html");
} else if (column.getTargetType() == 2) {
ColumnEntity columnEntity = this.columnMapper.selectByCodeAndCompanyId(column.getTargetUrl(), column.getCompanyId());
- columnData.setUrl(BASE_URL + columnEntity.getPath());
+ columnData.setUrl(cmsProperties.getBaseUrl() + columnEntity.getPath());
} else {
columnData.setUrl(column.getTargetUrl());
}
diff --git a/src/main/java/com/xcong/farmer/cms/core/handler/NavDataParserHandler.java b/src/main/java/com/xcong/farmer/cms/core/handler/NavDataParserHandler.java
index ab64db2..b50a231 100644
--- a/src/main/java/com/xcong/farmer/cms/core/handler/NavDataParserHandler.java
+++ b/src/main/java/com/xcong/farmer/cms/core/handler/NavDataParserHandler.java
@@ -1,6 +1,7 @@
package com.xcong.farmer.cms.core.handler;
import cn.hutool.core.collection.CollUtil;
+import com.xcong.farmer.cms.configurations.properties.CmsProperties;
import com.xcong.farmer.cms.conversion.ColumnConversion;
import com.xcong.farmer.cms.core.node.AttrNode;
import com.xcong.farmer.cms.core.tag.data.NavData;
@@ -27,7 +28,8 @@
private ColumnMapper columnMapper = SpringContextHolder.getBean(ColumnMapper.class);
private ArticleMapper articleMapper = SpringContextHolder.getBean(ArticleMapper.class);
- private String BASE_URL = "http://192.168.0.1";
+ private CmsProperties cmsProperties = SpringContextHolder.getBean(CmsProperties.class);
+
@Override
public void dataParser(AttrNode node) {
log.info("导航栏解析");
@@ -43,7 +45,7 @@
NavData index = new NavData();
index.setTitle("首页");
- index.setUrl(BASE_URL);
+ index.setUrl(cmsProperties.getBaseUrl());
index.setCode("index");
list.add(index);
@@ -73,14 +75,14 @@
public NavData columnToNav(ColumnEntity column) {
NavData navData = ColumnConversion.INSTANCE.columnToNav(column);
- navData.setUrl(BASE_URL + column.getPath());
+ navData.setUrl(cmsProperties.getBaseUrl() + column.getPath());
if (column.getType() == 2) {
if (column.getTargetType() == 1) {
ArticleEntity article = this.articleMapper.selectArticleById(Long.parseLong(column.getTargetUrl()));
- navData.setUrl(BASE_URL + article.getPath() + "/" + article.getId() + ".html");
+ navData.setUrl(cmsProperties.getBaseUrl() + article.getPath() + "/" + article.getId() + ".html");
} else if (column.getTargetType() == 2) {
ColumnEntity columnEntity = this.columnMapper.selectByCodeAndCompanyId(column.getTargetUrl(), column.getCompanyId());
- navData.setUrl(BASE_URL + columnEntity.getPath());
+ navData.setUrl(cmsProperties.getBaseUrl() + columnEntity.getPath());
} else {
navData.setUrl(column.getTargetUrl());
}
diff --git a/src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java b/src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java
index ebf2177..b11eae9 100644
--- a/src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java
+++ b/src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java
@@ -52,22 +52,6 @@
this.parserData = parserData;
}
- public static void main(String[] args) {
-// String data = "{id=[1,2,3], page=1, limit=5, field=art}";
-// Articles articles = new AttrNode().parserTag(data, Articles.class);
-
-// String value = "{id=${col.id}, page=1, limit=5, field=art}";
-// String pattern = "(?<=\\$\\{)[\\s\\S]*?(?=\\})";
-// Matcher matcher = Pattern.compile(pattern).matcher(value);
-// while (matcher.find()) {
-// String group = matcher.group();
-// System.out.println(1);
-// }
-
-
- System.out.println(1);
- }
-
private boolean isNeedEmpty() {
Elements children = this.element.children();
if (CollUtil.isNotEmpty(children)) {
@@ -112,6 +96,7 @@
i++;
try {
+ Template.TAGS.add(tagsEnum.getName());
// {id=${col.id}, page=1, limit=5, field=art} ${col.id} 形式需先设置值
String tagValue = attributes.get(tagsEnum.getName());
tagValue = attrValueFormat(tagValue);
@@ -139,6 +124,10 @@
public void runDataInject() {
Attributes attributes = this.element.attributes();
for (Attribute attribute : attributes) {
+ if (attribute.getKey().startsWith("\\$")) {
+ Template.TAGS.add(attribute.getKey());
+ }
+
String key = attribute.getKey().replaceAll("\\$", "");
String value = attribute.getValue();
@@ -158,9 +147,7 @@
this.element.removeAttr("class");
this.element.attr("class", evaluate);
} else if (value.contains( "${")) {
-
String result = attrValueFormat(value);
- System.out.println(result);
if ("text".equals(key)) {
this.element.text(result);
} else {
diff --git a/src/main/java/com/xcong/farmer/cms/core/node/Template.java b/src/main/java/com/xcong/farmer/cms/core/node/Template.java
index 98501ea..aef600e 100644
--- a/src/main/java/com/xcong/farmer/cms/core/node/Template.java
+++ b/src/main/java/com/xcong/farmer/cms/core/node/Template.java
@@ -2,14 +2,15 @@
import cn.hutool.core.collection.CollUtil;
import com.xcong.farmer.cms.core.node.PartNode;
+import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.*;
/**
* @author wzy
@@ -17,15 +18,63 @@
**/
public class Template {
- private String name;
+ // 文件名称
+ private String name = "index";
+ // 文件保存路径
+ private String path;
private Document document;
-
private Map<String, Map<String, Object>> params = new HashMap<>();
private Map<String, Object> system;
private List<PartNode> partNodes = new ArrayList<>();
- private static boolean HAS_PAGING = false;
+
+ // 页面中包含的标签
+ public static Set<String> TAGS;
+ public static boolean HAS_PAGING = false;
+
+ public Template() {
+ TAGS = new HashSet<>();
+ }
+
+ public Template(File file, Map<String, Object> system) {
+ TAGS = new HashSet<>();
+
+ Document document = null;
+ try {
+ document = Jsoup.parse(file, "utf-8");
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ if (document == null) {
+ throw new NullPointerException();
+ }
+
+ this.document = document;
+ this.system = system;
+
+ Object templatePath = system.get("templatePath");
+ if (templatePath != null) {
+ this.path = (String) templatePath;
+ }
+
+ Object templateType = system.get("templateType");
+ if ("article".equals(templateType)) {
+ Object templateName = system.get("templateName");
+ if (templateName != null) {
+ this.name = (String) templateName;
+ }
+ } else if ("column".equals(templateType)) {
+ Object page = system.get("page");
+ if (!new Integer(1).equals(page)) {
+ this.name = name + "_" + page;
+ }
+ } else {
+
+ }
+
+ }
public void parser() {
Elements children = document.body().children();
@@ -39,6 +88,40 @@
}
}
+ public void output(String outputPath) {
+ String suffix = ".html";
+ Document document = this.document;
+ List<PartNode> partNodes = this.partNodes;
+ StringBuilder sb = new StringBuilder();
+ for (PartNode partNode : partNodes) {
+ sb.append(partNode.getHtml());
+ }
+ document.body().empty().html(sb.toString());
+ String outPath = path(outputPath);
+
+ String html = document.html();
+ try {
+ String path = outPath + path(this.path);
+ File file = new File(path);
+ if (!file.exists()) {
+ file.mkdirs();
+ }
+
+ FileOutputStream outputStream = new FileOutputStream(path +this.name + suffix);
+ outputStream.write(html.getBytes());
+ outputStream.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private String path(String path) {
+ if (!path.endsWith("/")) {
+ path = path + "/";
+ }
+ return path;
+ }
+
public String getName() {
return name;
}
diff --git a/src/main/java/com/xcong/farmer/cms/core/template/TemplateConfiguration.java b/src/main/java/com/xcong/farmer/cms/core/template/TemplateConfiguration.java
index f6b078a..6fec7de 100644
--- a/src/main/java/com/xcong/farmer/cms/core/template/TemplateConfiguration.java
+++ b/src/main/java/com/xcong/farmer/cms/core/template/TemplateConfiguration.java
@@ -32,9 +32,9 @@
}
this.templateLoader.data(map);
- output(template(templateName));
+ Template template = template(templateName);
+ template.output(this.outputPath);
}
-
public Template template(String templateName) {
return template(new File(path(this.templatePath) + templateName));
@@ -46,35 +46,6 @@
}
return this.templateLoader.template(file);
- }
-
-// public void columnProcess(Map<String, Object> data, String templateName) {
-// process;
-// }
-//
-//
-// public void articleProcess(Map<String, Object> data, String templateName) {
-// process(data, templateName);
-// }
-
- public void output(Template template) {
- Document document = template.getDocument();
- List<PartNode> partNodes = template.getPartNodes();
- StringBuilder sb = new StringBuilder();
- for (PartNode partNode : partNodes) {
- sb.append(partNode.getHtml());
- }
- document.body().empty().html(sb.toString());
- String outPath = path(this.outputPath);
-
- String html = document.html();
- try {
- FileOutputStream outputStream = new FileOutputStream(outPath + template.getName());
- outputStream.write(html.getBytes());
- outputStream.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
}
private String path(String path) {
diff --git a/src/main/java/com/xcong/farmer/cms/core/template/TemplateLoader.java b/src/main/java/com/xcong/farmer/cms/core/template/TemplateLoader.java
index 647da06..a45bc4d 100644
--- a/src/main/java/com/xcong/farmer/cms/core/template/TemplateLoader.java
+++ b/src/main/java/com/xcong/farmer/cms/core/template/TemplateLoader.java
@@ -22,22 +22,7 @@
}
public Template template(File file) {
- Document document = null;
- try {
- document = Jsoup.parse(file, "utf-8");
- } catch (IOException e) {
- e.printStackTrace();
- }
-
- if (document == null) {
- throw new NullPointerException();
- }
-
- Template template = new Template();
- template.setDocument(document);
- template.setName(file.getName());
- template.systemData(this.systemData);
-
+ Template template = new Template(file, this.systemData);
template.parser();
return template;
}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/core/service/ICmsCoreService.java b/src/main/java/com/xcong/farmer/cms/modules/core/service/ICmsCoreService.java
index 4814a0a..0d933a8 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/core/service/ICmsCoreService.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/core/service/ICmsCoreService.java
@@ -10,7 +10,7 @@
* @param id
* @param templateName
*/
- void articleProcess(Long id, String templateName);
+ void articleProcess(Long id, String templateName, String templatPath);
/**
* 栏目编译
diff --git a/src/main/java/com/xcong/farmer/cms/modules/core/service/impl/CmsCoreServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/core/service/impl/CmsCoreServiceImpl.java
index 331ebe6..538f32e 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/core/service/impl/CmsCoreServiceImpl.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/core/service/impl/CmsCoreServiceImpl.java
@@ -22,10 +22,13 @@
private TemplateConfiguration cfg;
@Override
- public void articleProcess(Long id, String templateName) {
+ public void articleProcess(Long id, String templateName, String templatePath) {
Map<String, Object> data = new HashMap<>();
data.put("id", id);
data.put("companyId", 23L);
+ data.put("templateType", "article");
+ data.put("templatePath", templatePath);
+ data.put("templateName", id);
if (StrUtil.isEmpty(templateName)) {
templateName = "defualt.artile.html";
}
@@ -35,6 +38,8 @@
@Override
public void columnProcess(Map<String, Object> data, String templateName, boolean article) {
data.put("companyId", 23L);
+ data.put("templateType", "column");
+ data.put("page", 1);
if (StrUtil.isEmpty(templateName)) {
templateName = "defualt.list.html";
}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ReleaseServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ReleaseServiceImpl.java
index 12f1d89..ce2f7d4 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ReleaseServiceImpl.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ReleaseServiceImpl.java
@@ -35,7 +35,7 @@
ArticleEntity article = articleMapper.selectById(id);
ColumnEntity column = columnMapper.selectById(article.getColumnId());
- cmsCoreService.articleProcess(article.getId(), column.getArticleTemplate());
+ cmsCoreService.articleProcess(article.getId(), column.getArticleTemplate(), column.getPath());
}
@Override
@@ -50,7 +50,7 @@
ColumnEntity parent = columnMapper.selectById(columnEntity.getParentId());
map.put("parentCode", parent.getColumnCode());
}
-
+ map.put("templatePath", columnEntity.getPath());
cmsCoreService.columnProcess(map, columnEntity.getListTemplate(), article);
}
}
--
Gitblit v1.9.1