From 80b6cbfc9c861469146318d0b3dd5f8b8b525b8a Mon Sep 17 00:00:00 2001
From: xiejun <xiejun@vci-tech.com>
Date: 星期五, 01 十一月 2024 15:11:19 +0800
Subject: [PATCH] Revert "集成获取mdm分发通用数据格式接口集成"

---
 Source/BladeX-Tool/blade-core-tool/src/main/java/org/springblade/core/tool/utils/PlaceholderUtil.java |  152 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 152 insertions(+), 0 deletions(-)

diff --git a/Source/BladeX-Tool/blade-core-tool/src/main/java/org/springblade/core/tool/utils/PlaceholderUtil.java b/Source/BladeX-Tool/blade-core-tool/src/main/java/org/springblade/core/tool/utils/PlaceholderUtil.java
new file mode 100644
index 0000000..9c55108
--- /dev/null
+++ b/Source/BladeX-Tool/blade-core-tool/src/main/java/org/springblade/core/tool/utils/PlaceholderUtil.java
@@ -0,0 +1,152 @@
+package org.springblade.core.tool.utils;
+
+import java.util.Map;
+import java.util.Properties;
+import java.util.function.Function;
+import java.util.stream.Stream;
+
+/**
+ * 鍗犱綅绗﹁В鏋愬櫒
+ *
+ * @author meilin.huang, chill
+ */
+public class PlaceholderUtil {
+	/**
+	 * 榛樿鍓嶇紑鍗犱綅绗�
+	 */
+	public static final String DEFAULT_PLACEHOLDER_PREFIX = "${";
+
+	/**
+	 * 榛樿鍚庣紑鍗犱綅绗�
+	 */
+	public static final String DEFAULT_PLACEHOLDER_SUFFIX = "}";
+
+	/**
+	 * 榛樿鍗曚緥瑙f瀽鍣�
+	 */
+	private static final PlaceholderUtil DEFAULT_RESOLVER = new PlaceholderUtil();
+
+	/**
+	 * 鍗犱綅绗﹀墠缂�
+	 */
+	private String placeholderPrefix = DEFAULT_PLACEHOLDER_PREFIX;
+
+	/**
+	 * 鍗犱綅绗﹀悗缂�
+	 */
+	private String placeholderSuffix = DEFAULT_PLACEHOLDER_SUFFIX;
+
+
+	private PlaceholderUtil() {
+	}
+
+	private PlaceholderUtil(String placeholderPrefix, String placeholderSuffix) {
+		this.placeholderPrefix = placeholderPrefix;
+		this.placeholderSuffix = placeholderSuffix;
+	}
+
+	/**
+	 * 鑾峰彇榛樿鐨勫崰浣嶇瑙f瀽鍣紝鍗冲崰浣嶇鍓嶇紑涓�"${", 鍚庣紑涓�"}"
+	 *
+	 * @return PlaceholderUtil
+	 */
+	public static PlaceholderUtil getDefaultResolver() {
+		return DEFAULT_RESOLVER;
+	}
+
+	public static PlaceholderUtil getResolver(String placeholderPrefix, String placeholderSuffix) {
+		return new PlaceholderUtil(placeholderPrefix, placeholderSuffix);
+	}
+
+	/**
+	 * 瑙f瀽甯︽湁鎸囧畾鍗犱綅绗︾殑妯℃澘瀛楃涓诧紝榛樿鍗犱綅绗︿负鍓嶇紑锛�${  鍚庣紑锛殅<br/><br/>
+	 * 濡傦細template = category:${}:product:${}<br/>
+	 * values = {"1", "2"}<br/>
+	 * 杩斿洖 category:1:product:2<br/>
+	 *
+	 * @param content 瑕佽В鏋愮殑甯︽湁鍗犱綅绗︾殑妯℃澘瀛楃涓�
+	 * @param values  鎸夌収妯℃澘鍗犱綅绗︾储寮曚綅缃缃搴旂殑鍊�
+	 * @return {String}
+	 */
+	public String resolve(String content, String... values) {
+		int start = content.indexOf(this.placeholderPrefix);
+		if (start == -1) {
+			return content;
+		}
+		//鍊肩储寮�
+		int valueIndex = 0;
+		StringBuilder result = new StringBuilder(content);
+		while (start != -1) {
+			int end = result.indexOf(this.placeholderSuffix);
+			String replaceContent = values[valueIndex++];
+			result.replace(start, end + this.placeholderSuffix.length(), replaceContent);
+			start = result.indexOf(this.placeholderPrefix, start + replaceContent.length());
+		}
+		return result.toString();
+	}
+
+	/**
+	 * 瑙f瀽甯︽湁鎸囧畾鍗犱綅绗︾殑妯℃澘瀛楃涓诧紝榛樿鍗犱綅绗︿负鍓嶇紑锛�${  鍚庣紑锛殅<br/><br/>
+	 * 濡傦細template = category:${}:product:${}<br/>
+	 * values = {"1", "2"}<br/>
+	 * 杩斿洖 category:1:product:2<br/>
+	 *
+	 * @param content 瑕佽В鏋愮殑甯︽湁鍗犱綅绗︾殑妯℃澘瀛楃涓�
+	 * @param values  鎸夌収妯℃澘鍗犱綅绗︾储寮曚綅缃缃搴旂殑鍊�
+	 * @return {String}
+	 */
+	public String resolve(String content, Object[] values) {
+		return resolve(content, Stream.of(values).map(String::valueOf).toArray(String[]::new));
+	}
+
+	/**
+	 * 鏍规嵁鏇挎崲瑙勫垯鏉ユ浛鎹㈡寚瀹氭ā鏉夸腑鐨勫崰浣嶇鍊�
+	 *
+	 * @param content 瑕佽В鏋愮殑瀛楃涓�
+	 * @param rule    瑙f瀽瑙勫垯鍥炶皟
+	 * @return {String}
+	 */
+	public String resolveByRule(String content, Function<String, String> rule) {
+		int start = content.indexOf(this.placeholderPrefix);
+		if (start == -1) {
+			return content;
+		}
+		StringBuilder result = new StringBuilder(content);
+		while (start != -1) {
+			int end = result.indexOf(this.placeholderSuffix, start + 1);
+			//鑾峰彇鍗犱綅绗﹀睘鎬у�硷紝濡�${id}, 鍗宠幏鍙杋d
+			String placeholder = result.substring(start + this.placeholderPrefix.length(), end);
+			//鏇挎崲鏁翠釜鍗犱綅绗﹀唴瀹癸紝鍗冲皢${id}鍊兼浛鎹负鏇挎崲瑙勫垯鍥炶皟涓殑鍐呭
+			String replaceContent = placeholder.trim().isEmpty() ? "" : rule.apply(placeholder);
+			result.replace(start, end + this.placeholderSuffix.length(), replaceContent);
+			start = result.indexOf(this.placeholderPrefix, start + replaceContent.length());
+		}
+		return result.toString();
+	}
+
+	/**
+	 * 鏇挎崲妯℃澘涓崰浣嶇鍐呭锛屽崰浣嶇鐨勫唴瀹瑰嵆涓簃ap key瀵瑰簲鐨勫�硷紝key涓哄崰浣嶇涓殑鍐呭銆�<br/><br/>
+	 * 濡傦細content = product:${id}:detail:${did}<br/>
+	 * valueMap = id -> 1; pid -> 2<br/>
+	 * 缁忚繃瑙f瀽杩斿洖 product:1:detail:2<br/>
+	 *
+	 * @param content  妯℃澘鍐呭
+	 * @param valueMap 鍊兼槧灏�
+	 * @return 鏇挎崲瀹屾垚鍚庣殑瀛楃涓�
+	 */
+	public String resolveByMap(String content, final Map<String, Object> valueMap) {
+		return resolveByRule(content, placeholderValue -> String.valueOf(valueMap.get(placeholderValue)));
+	}
+
+	/**
+	 * 鏍规嵁properties鏂囦欢鏇挎崲鍗犱綅绗﹀唴瀹�
+	 *
+	 * @param content    妯℃澘鍐呭
+	 * @param properties 閰嶇疆
+	 * @return {String}
+	 */
+	public String resolveByProperties(String content, final Properties properties) {
+		return resolveByRule(content, properties::getProperty);
+	}
+
+}

--
Gitblit v1.9.3