This is an automated email from the ASF dual-hosted git repository.

chengzhang 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 d02f936c88f Refactor MaskRuleConfigurationToDistSQLConverter (#33460)
d02f936c88f is described below

commit d02f936c88fe753d1a1e2512910b2c622de08565
Author: Liang Zhang <[email protected]>
AuthorDate: Wed Oct 30 00:11:28 2024 +0800

    Refactor MaskRuleConfigurationToDistSQLConverter (#33460)
    
    * Add more test cases on MaskRuleConfigurationToDistSQLConverter
    
    * Add more test cases on MaskRuleConfigurationToDistSQLConverter
    
    * Add more test cases on MaskRuleConfigurationToDistSQLConverter
    
    * Add more test cases on MaskRuleConfigurationToDistSQLConverter
---
 .../converter/MaskConvertDistSQLConstants.java     |  2 +-
 .../MaskRuleConfigurationToDistSQLConverter.java   | 43 ++++++++--------------
 ...askRuleConfigurationToDistSQLConverterTest.java | 14 ++++---
 3 files changed, 25 insertions(+), 34 deletions(-)

diff --git 
a/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/converter/MaskConvertDistSQLConstants.java
 
b/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/converter/MaskConvertDistSQLConstants.java
index 3d6a9ec0c78..236b2f12679 100644
--- 
a/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/converter/MaskConvertDistSQLConstants.java
+++ 
b/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/converter/MaskConvertDistSQLConstants.java
@@ -28,7 +28,7 @@ public final class MaskConvertDistSQLConstants {
     
     public static final String CREATE_MASK_RULE = "CREATE MASK RULE";
     
-    public static final String MASK_RULE = " %s ("
+    public static final String MASK_TABLE = " %s ("
             + System.lineSeparator()
             + "COLUMNS("
             + System.lineSeparator()
diff --git 
a/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/converter/MaskRuleConfigurationToDistSQLConverter.java
 
b/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/converter/MaskRuleConfigurationToDistSQLConverter.java
index fec4de69af4..2f35dd9213e 100644
--- 
a/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/converter/MaskRuleConfigurationToDistSQLConverter.java
+++ 
b/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/converter/MaskRuleConfigurationToDistSQLConverter.java
@@ -26,8 +26,8 @@ import 
org.apache.shardingsphere.mask.config.rule.MaskColumnRuleConfiguration;
 import org.apache.shardingsphere.mask.config.rule.MaskTableRuleConfiguration;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * Mask rule configuration to DistSQL converter.
@@ -36,37 +36,24 @@ public final class MaskRuleConfigurationToDistSQLConverter 
implements RuleConfig
     
     @Override
     public String convert(final MaskRuleConfiguration ruleConfig) {
-        if (ruleConfig.getTables().isEmpty()) {
-            return "";
-        }
-        StringBuilder result = new 
StringBuilder(MaskConvertDistSQLConstants.CREATE_MASK_RULE);
-        Iterator<MaskTableRuleConfiguration> iterator = 
ruleConfig.getTables().iterator();
-        while (iterator.hasNext()) {
-            MaskTableRuleConfiguration tableRuleConfig = iterator.next();
-            result.append(String.format(MaskConvertDistSQLConstants.MASK_RULE, 
tableRuleConfig.getName(), getMaskColumns(tableRuleConfig.getColumns(), 
ruleConfig.getMaskAlgorithms())));
-            if (iterator.hasNext()) {
-                
result.append(DistSQLConstants.COMMA).append(System.lineSeparator());
-            }
-        }
-        result.append(DistSQLConstants.SEMI);
-        return result.toString();
+        return ruleConfig.getTables().isEmpty() ? "" : 
MaskConvertDistSQLConstants.CREATE_MASK_RULE + convertMaskTables(ruleConfig) + 
DistSQLConstants.SEMI;
     }
     
-    private String getMaskColumns(final 
Collection<MaskColumnRuleConfiguration> columnRuleConfig, final Map<String, 
AlgorithmConfiguration> maskAlgorithms) {
-        StringBuilder result = new StringBuilder();
-        Iterator<MaskColumnRuleConfiguration> iterator = 
columnRuleConfig.iterator();
-        while (iterator.hasNext()) {
-            MaskColumnRuleConfiguration column = iterator.next();
-            
result.append(String.format(MaskConvertDistSQLConstants.MASK_COLUMN, 
column.getLogicColumn(), getMaskAlgorithms(column, maskAlgorithms)));
-            if (iterator.hasNext()) {
-                
result.append(DistSQLConstants.COMMA).append(System.lineSeparator());
-            }
-        }
-        return result.toString();
+    private String convertMaskTables(final MaskRuleConfiguration ruleConfig) {
+        return ruleConfig.getTables().stream().map(each -> 
convertMaskTable(each, 
ruleConfig.getMaskAlgorithms())).collect(Collectors.joining(DistSQLConstants.COMMA
 + System.lineSeparator()));
     }
     
-    private String getMaskAlgorithms(final MaskColumnRuleConfiguration 
columnRuleConfig, final Map<String, AlgorithmConfiguration> maskAlgorithms) {
-        return 
AlgorithmDistSQLConverter.getAlgorithmType(maskAlgorithms.get(columnRuleConfig.getMaskAlgorithm()));
+    private String convertMaskTable(final MaskTableRuleConfiguration 
tableRuleConfig, final Map<String, AlgorithmConfiguration> maskAlgorithms) {
+        return String.format(MaskConvertDistSQLConstants.MASK_TABLE, 
tableRuleConfig.getName(), convertMaskColumns(tableRuleConfig.getColumns(), 
maskAlgorithms));
+    }
+    
+    private String convertMaskColumns(final 
Collection<MaskColumnRuleConfiguration> columnRuleConfigs, final Map<String, 
AlgorithmConfiguration> maskAlgorithms) {
+        return columnRuleConfigs.stream().map(each -> convertMaskColumn(each, 
maskAlgorithms)).collect(Collectors.joining(DistSQLConstants.COMMA + 
System.lineSeparator()));
+    }
+    
+    private String convertMaskColumn(final MaskColumnRuleConfiguration 
columnRuleConfig, final Map<String, AlgorithmConfiguration> maskAlgorithms) {
+        return String.format(MaskConvertDistSQLConstants.MASK_COLUMN,
+                columnRuleConfig.getLogicColumn(), 
AlgorithmDistSQLConverter.getAlgorithmType(maskAlgorithms.get(columnRuleConfig.getMaskAlgorithm())));
     }
     
     @Override
diff --git 
a/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/converter/MaskRuleConfigurationToDistSQLConverterTest.java
 
b/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/converter/MaskRuleConfigurationToDistSQLConverterTest.java
index 48cb5730575..e0842b8c55b 100644
--- 
a/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/converter/MaskRuleConfigurationToDistSQLConverterTest.java
+++ 
b/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/converter/MaskRuleConfigurationToDistSQLConverterTest.java
@@ -25,6 +25,7 @@ import 
org.apache.shardingsphere.mask.config.rule.MaskColumnRuleConfiguration;
 import org.apache.shardingsphere.mask.config.rule.MaskTableRuleConfiguration;
 import org.junit.jupiter.api.Test;
 
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Properties;
 
@@ -48,14 +49,17 @@ class MaskRuleConfigurationToDistSQLConverterTest {
     @Test
     void assertConvert() {
         MaskRuleConfiguration maskRuleConfig = getMaskRuleConfiguration();
-        assertThat(converter.convert(maskRuleConfig),
-                is("CREATE MASK RULE foo_tbl (" + System.lineSeparator() + 
"COLUMNS(" + System.lineSeparator() + "(NAME=foo_col, TYPE(NAME='md5'))" + 
System.lineSeparator() + "));"));
+        assertThat(converter.convert(maskRuleConfig), is("CREATE MASK RULE"
+                + " foo_tbl (" + System.lineSeparator() + "COLUMNS(" + 
System.lineSeparator() + "(NAME=foo_col_1, TYPE(NAME='md5'))," + 
System.lineSeparator() + "(NAME=foo_col_2, TYPE(NAME='md5'))"
+                + System.lineSeparator() + "))," + System.lineSeparator()
+                + " bar_tbl (" + System.lineSeparator() + "COLUMNS(" + 
System.lineSeparator() + "(NAME=bar_col, TYPE(NAME='md5'))" + 
System.lineSeparator() + "));"));
     }
     
     private MaskRuleConfiguration getMaskRuleConfiguration() {
-        MaskColumnRuleConfiguration maskColumnRuleConfig = new 
MaskColumnRuleConfiguration("foo_col", "foo_tbl_foo_col_md5");
-        MaskTableRuleConfiguration maskTableRuleConfig = new 
MaskTableRuleConfiguration("foo_tbl", 
Collections.singleton(maskColumnRuleConfig));
+        MaskTableRuleConfiguration fooTableRuleConfig = new 
MaskTableRuleConfiguration("foo_tbl",
+                Arrays.asList(new MaskColumnRuleConfiguration("foo_col_1", 
"md5_algo"), new MaskColumnRuleConfiguration("foo_col_2", "md5_algo")));
+        MaskTableRuleConfiguration barTableRuleConfig = new 
MaskTableRuleConfiguration("bar_tbl", Collections.singleton(new 
MaskColumnRuleConfiguration("bar_col", "md5_algo")));
         AlgorithmConfiguration algorithmConfig = new 
AlgorithmConfiguration("md5", new Properties());
-        return new 
MaskRuleConfiguration(Collections.singleton(maskTableRuleConfig), 
Collections.singletonMap("foo_tbl_foo_col_md5", algorithmConfig));
+        return new MaskRuleConfiguration(Arrays.asList(fooTableRuleConfig, 
barTableRuleConfig), Collections.singletonMap("md5_algo", algorithmConfig));
     }
 }

Reply via email to