org.dromara.email.jakarta.comm.utils.HtmlUtil Maven / Gradle / Ivy
package org.dromara.email.jakarta.comm.utils;
import org.dromara.email.jakarta.comm.errors.MailException;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* HtmlUtil
* Html相关工具
*
* @author :Wind
* 2023/6/7 20:15
**/
public final class HtmlUtil {
private HtmlUtil() {
}
/**
* readHtml
*
从resource读取模板文件
*
* @param name 模板文件名
* @author :Wind
*/
public static List readHtml(String name) throws MailException {
try (InputStream is = HtmlUtil.class.getResourceAsStream("/template/" + name)) {
return readHtml(is);
} catch (IOException e) {
throw new MailException(e);
}
}
/**
* readHtml
* 从自定义路径读取模板文件
*
* @param file 自定义路径file
* @author :Wind
*/
public static List readHtml(File file) throws MailException {
try (InputStream ip = Files.newInputStream(file.toPath())) {
return readHtml(ip);
} catch (IOException e) {
throw new MailException(e);
}
}
/**
* readHtml
* 从输入流读取模板文件
*
* @param inputStream 输入流
* @author :Wind
*/
public static List readHtml(InputStream inputStream) throws MailException {
List data = new ArrayList<>();
if (Objects.isNull(inputStream)) {
throw new MailException("The template could not be found!");
}
try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream))) {
String line;
while ((line = br.readLine()) != null) {
data.add(line);
}
} catch (IOException e) {
throw new MailException(e);
}
return data;
}
/**
* replacePlaceholder
* 将所包含占位符的字符串替换为固定值
*
* @param data 源数据
* @param parameter key为占位符名称 value为占位符应替换的值
* @author :Wind
*/
public static List replacePlaceholder(List data, Map parameter) {
for (int i = 0; i < data.size(); i++) {
for (Map.Entry s : parameter.entrySet()) {
String piece = piece(s.getKey());
if (data.get(i).contains(piece)){
String replace = data.get(i).replace(piece, s.getValue());
data.set(i,replace);
}
}
}
return data;
}
/**
* pieceHtml
* 将数据拼合为html
*
* @param data 需要拼合的数据
* @author :Wind
*/
public static String pieceHtml(List data) {
StringBuilder sb = new StringBuilder();
for (String datum : data) {
sb.append(datum);
sb.append("\r\n");
}
return sb.toString();
}
/**
* piece
* 将参数拼合为完整占位符
*
* @author :Wind
*/
public static String piece(String parameter) {
return "#{" + parameter + "}";
}
}