This is an automated email from the ASF dual-hosted git repository.
sunnianjun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new d083faa36be Add AlgorithmDistSQLConverter (#30594)
d083faa36be is described below
commit d083faa36be09e4dba92b28a13b2d21366aee1a8
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Mar 21 23:50:51 2024 +0800
Add AlgorithmDistSQLConverter (#30594)
* Refactor ConvertYamlConfigurationExecutor
* Add AlgorithmDistSQLConverter
---
.../EncryptConvertRuleConfigurationProvider.java | 8 ++--
.../MaskConvertRuleConfigurationProvider.java | 3 +-
...eSplittingConvertRuleConfigurationProvider.java | 3 +-
.../ShadowConvertRuleConfigurationProvider.java | 3 +-
.../ShardingConvertRuleConfigurationProvider.java | 10 +++--
...rovider.java => AlgorithmDistSQLConverter.java} | 26 ++++--------
.../convert/ConvertRuleConfigurationProvider.java | 49 +---------------------
.../ConvertYamlConfigurationExecutor.java | 4 +-
8 files changed, 26 insertions(+), 80 deletions(-)
diff --git
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/provider/EncryptConvertRuleConfigurationProvider.java
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/provider/EncryptConvertRuleConfigurationProvider.java
index ab6a3f5a4e7..ab9621bee64 100644
---
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/provider/EncryptConvertRuleConfigurationProvider.java
+++
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/provider/EncryptConvertRuleConfigurationProvider.java
@@ -18,6 +18,7 @@
package org.apache.shardingsphere.encrypt.distsql.handler.provider;
import com.google.common.base.Strings;
+import
org.apache.shardingsphere.distsql.handler.engine.query.ral.convert.AlgorithmDistSQLConverter;
import
org.apache.shardingsphere.distsql.handler.engine.query.ral.convert.ConvertRuleConfigurationProvider;
import org.apache.shardingsphere.encrypt.api.config.EncryptRuleConfiguration;
import
org.apache.shardingsphere.encrypt.api.config.rule.EncryptColumnItemRuleConfiguration;
@@ -92,14 +93,15 @@ public final class EncryptConvertRuleConfigurationProvider
implements ConvertRul
String assistedQueryEncryptorName =
ruleConfig.getAssistedQuery().map(EncryptColumnItemRuleConfiguration::getEncryptorName).orElse("");
String likeQueryEncryptorName =
ruleConfig.getLikeQuery().map(EncryptColumnItemRuleConfiguration::getEncryptorName).orElse("");
if (!Strings.isNullOrEmpty(cipherEncryptorName)) {
-
result.append(String.format(EncryptDistSQLConstants.ENCRYPT_ALGORITHM,
getAlgorithmType(encryptors.get(cipherEncryptorName))));
+
result.append(String.format(EncryptDistSQLConstants.ENCRYPT_ALGORITHM,
AlgorithmDistSQLConverter.getAlgorithmType(encryptors.get(cipherEncryptorName))));
}
if (!Strings.isNullOrEmpty(assistedQueryEncryptorName)) {
result.append(EncryptDistSQLConstants.COMMA).append(' ')
-
.append(String.format(EncryptDistSQLConstants.ASSISTED_QUERY_ALGORITHM,
getAlgorithmType(encryptors.get(assistedQueryEncryptorName))));
+
.append(String.format(EncryptDistSQLConstants.ASSISTED_QUERY_ALGORITHM,
AlgorithmDistSQLConverter.getAlgorithmType(encryptors.get(assistedQueryEncryptorName))));
}
if (!Strings.isNullOrEmpty(likeQueryEncryptorName)) {
- result.append(EncryptDistSQLConstants.COMMA).append('
').append(String.format(EncryptDistSQLConstants.LIKE_QUERY_ALGORITHM,
getAlgorithmType(encryptors.get(likeQueryEncryptorName))));
+ result.append(EncryptDistSQLConstants.COMMA).append(' ')
+
.append(String.format(EncryptDistSQLConstants.LIKE_QUERY_ALGORITHM,
AlgorithmDistSQLConverter.getAlgorithmType(encryptors.get(likeQueryEncryptorName))));
}
return result.toString();
}
diff --git
a/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/provider/MaskConvertRuleConfigurationProvider.java
b/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/provider/MaskConvertRuleConfigurationProvider.java
index 72123421b4a..0c409c383f4 100644
---
a/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/provider/MaskConvertRuleConfigurationProvider.java
+++
b/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/provider/MaskConvertRuleConfigurationProvider.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.mask.distsql.handler.provider;
+import
org.apache.shardingsphere.distsql.handler.engine.query.ral.convert.AlgorithmDistSQLConverter;
import
org.apache.shardingsphere.distsql.handler.engine.query.ral.convert.ConvertRuleConfigurationProvider;
import
org.apache.shardingsphere.infra.algorithm.core.config.AlgorithmConfiguration;
import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
@@ -67,7 +68,7 @@ public final class MaskConvertRuleConfigurationProvider
implements ConvertRuleCo
}
private String getMaskAlgorithms(final MaskColumnRuleConfiguration
columnRuleConfig, final Map<String, AlgorithmConfiguration> maskAlgorithms) {
- return
getAlgorithmType(maskAlgorithms.get(columnRuleConfig.getMaskAlgorithm()));
+ return
AlgorithmDistSQLConverter.getAlgorithmType(maskAlgorithms.get(columnRuleConfig.getMaskAlgorithm()));
}
@Override
diff --git
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/provider/ReadwriteSplittingConvertRuleConfigurationProvider.java
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/provider/ReadwriteSplittingConvertRuleConfigurationProvider.java
index 1c112f5278b..4400a23ddc3 100644
---
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/provider/ReadwriteSplittingConvertRuleConfigurationProvider.java
+++
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/provider/ReadwriteSplittingConvertRuleConfigurationProvider.java
@@ -18,6 +18,7 @@
package org.apache.shardingsphere.readwritesplitting.distsql.handler.provider;
import com.google.common.base.Strings;
+import
org.apache.shardingsphere.distsql.handler.engine.query.ral.convert.AlgorithmDistSQLConverter;
import
org.apache.shardingsphere.distsql.handler.engine.query.ral.convert.ConvertRuleConfigurationProvider;
import
org.apache.shardingsphere.infra.algorithm.core.config.AlgorithmConfiguration;
import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
@@ -78,7 +79,7 @@ public final class
ReadwriteSplittingConvertRuleConfigurationProvider implements
private String getLoadBalancerType(final AlgorithmConfiguration
algorithmConfig) {
StringBuilder result = new StringBuilder();
- String loadBalancerType = getAlgorithmType(algorithmConfig);
+ String loadBalancerType =
AlgorithmDistSQLConverter.getAlgorithmType(algorithmConfig);
if (!Strings.isNullOrEmpty(loadBalancerType)) {
result.append(ReadwriteSplittingDistSQLConstants.COMMA).append(System.lineSeparator()).append(loadBalancerType);
}
diff --git
a/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/provider/ShadowConvertRuleConfigurationProvider.java
b/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/provider/ShadowConvertRuleConfigurationProvider.java
index efb81be5d28..e0c39d84e0d 100644
---
a/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/provider/ShadowConvertRuleConfigurationProvider.java
+++
b/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/provider/ShadowConvertRuleConfigurationProvider.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.shadow.distsql.handler.provider;
+import
org.apache.shardingsphere.distsql.handler.engine.query.ral.convert.AlgorithmDistSQLConverter;
import
org.apache.shardingsphere.distsql.handler.engine.query.ral.convert.ConvertRuleConfigurationProvider;
import
org.apache.shardingsphere.infra.algorithm.core.config.AlgorithmConfiguration;
import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
@@ -78,7 +79,7 @@ public final class ShadowConvertRuleConfigurationProvider
implements ConvertRule
StringBuilder result = new StringBuilder();
Iterator<String> iterator = shadowAlgorithmNames.iterator();
while (iterator.hasNext()) {
-
result.append(getAlgorithmType(algorithmConfigs.get(iterator.next())));
+
result.append(AlgorithmDistSQLConverter.getAlgorithmType(algorithmConfigs.get(iterator.next())));
if (iterator.hasNext()) {
result.append(ShadowDistSQLConstants.COMMA).append(' ');
}
diff --git
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/provider/ShardingConvertRuleConfigurationProvider.java
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/provider/ShardingConvertRuleConfigurationProvider.java
index 5376d756f21..6cef8a743f7 100644
---
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/provider/ShardingConvertRuleConfigurationProvider.java
+++
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/provider/ShardingConvertRuleConfigurationProvider.java
@@ -18,6 +18,7 @@
package org.apache.shardingsphere.sharding.distsql.handler.provider;
import com.google.common.base.Strings;
+import
org.apache.shardingsphere.distsql.handler.engine.query.ral.convert.AlgorithmDistSQLConverter;
import
org.apache.shardingsphere.distsql.handler.engine.query.ral.convert.ConvertRuleConfigurationProvider;
import
org.apache.shardingsphere.infra.algorithm.core.config.AlgorithmConfiguration;
import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
@@ -140,7 +141,8 @@ public final class ShardingConvertRuleConfigurationProvider
implements ConvertRu
StringBuilder result = new StringBuilder();
StandardShardingStrategyConfiguration strategyConfig =
(StandardShardingStrategyConfiguration)
autoTableRuleConfig.getShardingStrategy();
String shardingColumn =
Strings.isNullOrEmpty(strategyConfig.getShardingColumn()) ?
ruleConfig.getDefaultShardingColumn() : strategyConfig.getShardingColumn();
-
result.append(String.format(ShardingDistSQLConstants.AUTO_TABLE_STRATEGY,
shardingColumn,
getAlgorithmType(ruleConfig.getShardingAlgorithms().get(strategyConfig.getShardingAlgorithmName()))));
+
result.append(String.format(ShardingDistSQLConstants.AUTO_TABLE_STRATEGY,
+ shardingColumn,
AlgorithmDistSQLConverter.getAlgorithmType(ruleConfig.getShardingAlgorithms().get(strategyConfig.getShardingAlgorithmName()))));
appendKeyGenerateStrategy(ruleConfig.getKeyGenerators(),
autoTableRuleConfig.getKeyGenerateStrategy(), result);
appendAuditStrategy(ruleConfig.getAuditors(), null !=
autoTableRuleConfig.getAuditStrategy() ? autoTableRuleConfig.getAuditStrategy()
: ruleConfig.getDefaultAuditStrategy(), result);
return result.toString();
@@ -155,7 +157,7 @@ public final class ShardingConvertRuleConfigurationProvider
implements ConvertRu
stringBuilder.append(ShardingDistSQLConstants.COMMA).append(System.lineSeparator());
}
String type = strategyConfig.getType().toLowerCase();
- String algorithmDefinition =
getAlgorithmType(shardingAlgorithms.get(strategyConfig.getShardingAlgorithmName()));
+ String algorithmDefinition =
AlgorithmDistSQLConverter.getAlgorithmType(shardingAlgorithms.get(strategyConfig.getShardingAlgorithmName()));
switch (type) {
case ShardingDistSQLConstants.STANDARD:
StandardShardingStrategyConfiguration
standardShardingStrategyConfig = (StandardShardingStrategyConfiguration)
strategyConfig;
@@ -182,7 +184,7 @@ public final class ShardingConvertRuleConfigurationProvider
implements ConvertRu
return;
}
stringBuilder.append(ShardingDistSQLConstants.COMMA).append(System.lineSeparator());
- String algorithmDefinition =
getAlgorithmType(keyGenerators.get(keyGenerateStrategyConfig.getKeyGeneratorName()));
+ String algorithmDefinition =
AlgorithmDistSQLConverter.getAlgorithmType(keyGenerators.get(keyGenerateStrategyConfig.getKeyGeneratorName()));
stringBuilder.append(String.format(ShardingDistSQLConstants.KEY_GENERATOR_STRATEGY,
keyGenerateStrategyConfig.getColumn(), algorithmDefinition));
}
@@ -198,7 +200,7 @@ public final class ShardingConvertRuleConfigurationProvider
implements ConvertRu
if (!auditorNames.isEmpty()) {
Iterator<String> iterator = auditorNames.iterator();
while (iterator.hasNext()) {
- result.append(getAlgorithmType(auditors.get(iterator.next())));
+
result.append(AlgorithmDistSQLConverter.getAlgorithmType(auditors.get(iterator.next())));
if (iterator.hasNext()) {
result.append(ShardingDistSQLConstants.COMMA);
}
diff --git
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/query/ral/convert/ConvertRuleConfigurationProvider.java
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/query/ral/convert/AlgorithmDistSQLConverter.java
similarity index 76%
copy from
infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/query/ral/convert/ConvertRuleConfigurationProvider.java
copy to
infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/query/ral/convert/AlgorithmDistSQLConverter.java
index ac17398041c..8524b04378e 100644
---
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/query/ral/convert/ConvertRuleConfigurationProvider.java
+++
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/query/ral/convert/AlgorithmDistSQLConverter.java
@@ -17,28 +17,19 @@
package org.apache.shardingsphere.distsql.handler.engine.query.ral.convert;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
import
org.apache.shardingsphere.infra.algorithm.core.config.AlgorithmConfiguration;
-import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
-import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPI;
import java.util.Iterator;
import java.util.Properties;
import java.util.TreeMap;
/**
- * Convert rule configuration provider.
+ * Algorithm DistSQL converter.
*/
-@SingletonSPI
-public interface ConvertRuleConfigurationProvider extends TypedSPI {
-
- /**
- * Convert rule configuration to DistSQL.
- *
- * @param ruleConfig rule configuration
- * @return DistSQL script
- */
- String convert(RuleConfiguration ruleConfig);
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class AlgorithmDistSQLConverter {
/**
* Get algorithm type.
@@ -46,7 +37,7 @@ public interface ConvertRuleConfigurationProvider extends
TypedSPI {
* @param algorithmConfig algorithm configuration
* @return algorithm type
*/
- default String getAlgorithmType(final AlgorithmConfiguration
algorithmConfig) {
+ public static String getAlgorithmType(final AlgorithmConfiguration
algorithmConfig) {
StringBuilder result = new StringBuilder();
if (null == algorithmConfig) {
return result.toString();
@@ -65,7 +56,7 @@ public interface ConvertRuleConfigurationProvider extends
TypedSPI {
* @return algorithm properties
*/
@SuppressWarnings({"unchecked", "rawtypes"})
- default String getAlgorithmProperties(final Properties props) {
+ public static String getAlgorithmProperties(final Properties props) {
StringBuilder result = new StringBuilder();
Iterator<String> iterator = new TreeMap(props).keySet().iterator();
while (iterator.hasNext()) {
@@ -81,7 +72,4 @@ public interface ConvertRuleConfigurationProvider extends
TypedSPI {
}
return result.toString();
}
-
- @Override
- Class<? extends RuleConfiguration> getType();
}
diff --git
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/query/ral/convert/ConvertRuleConfigurationProvider.java
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/query/ral/convert/ConvertRuleConfigurationProvider.java
index ac17398041c..405e33083bf 100644
---
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/query/ral/convert/ConvertRuleConfigurationProvider.java
+++
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/query/ral/convert/ConvertRuleConfigurationProvider.java
@@ -17,15 +17,10 @@
package org.apache.shardingsphere.distsql.handler.engine.query.ral.convert;
-import
org.apache.shardingsphere.infra.algorithm.core.config.AlgorithmConfiguration;
import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPI;
-import java.util.Iterator;
-import java.util.Properties;
-import java.util.TreeMap;
-
/**
* Convert rule configuration provider.
*/
@@ -36,52 +31,10 @@ public interface ConvertRuleConfigurationProvider extends
TypedSPI {
* Convert rule configuration to DistSQL.
*
* @param ruleConfig rule configuration
- * @return DistSQL script
+ * @return DistSQL
*/
String convert(RuleConfiguration ruleConfig);
- /**
- * Get algorithm type.
- *
- * @param algorithmConfig algorithm configuration
- * @return algorithm type
- */
- default String getAlgorithmType(final AlgorithmConfiguration
algorithmConfig) {
- StringBuilder result = new StringBuilder();
- if (null == algorithmConfig) {
- return result.toString();
- }
- String type = algorithmConfig.getType().toLowerCase();
- result.append(algorithmConfig.getProps().isEmpty()
- ?
String.format(DistSQLScriptConstants.ALGORITHM_TYPE_WITHOUT_PROPS, type)
- : String.format(DistSQLScriptConstants.ALGORITHM_TYPE, type,
getAlgorithmProperties(algorithmConfig.getProps())));
- return result.toString();
- }
-
- /**
- * Get algorithm properties.
- *
- * @param props properties
- * @return algorithm properties
- */
- @SuppressWarnings({"unchecked", "rawtypes"})
- default String getAlgorithmProperties(final Properties props) {
- StringBuilder result = new StringBuilder();
- Iterator<String> iterator = new TreeMap(props).keySet().iterator();
- while (iterator.hasNext()) {
- String key = iterator.next();
- Object value = props.get(key);
- if (null == value) {
- continue;
- }
- result.append(String.format(DistSQLScriptConstants.PROPERTY, key,
value));
- if (iterator.hasNext()) {
- result.append(DistSQLScriptConstants.COMMA).append(' ');
- }
- }
- return result.toString();
- }
-
@Override
Class<? extends RuleConfiguration> getType();
}
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationExecutor.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationExecutor.java
index 81e7210eabb..ac247905422 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationExecutor.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationExecutor.java
@@ -81,9 +81,7 @@ public final class ConvertYamlConfigurationExecutor
implements DistSQLQueryExecu
StringBuilder result = new StringBuilder();
appendResourceDistSQL(yamlConfig, result);
for (RuleConfiguration each : swapToRuleConfigs(yamlConfig).values()) {
- Class<? extends RuleConfiguration> type = each.getClass();
- ConvertRuleConfigurationProvider convertRuleConfigProvider =
TypedSPILoader.getService(ConvertRuleConfigurationProvider.class, type);
- result.append(convertRuleConfigProvider.convert(each));
+
result.append(TypedSPILoader.getService(ConvertRuleConfigurationProvider.class,
each.getClass()).convert(each));
}
return result.toString();
}