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

tuichenchuxin 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 e5b5bed6bb7 Refactor YamlShardingAutoTableRuleConfigurationSwapper 
(#19922)
e5b5bed6bb7 is described below

commit e5b5bed6bb704e079bdadfc70c9aea664deb4e4c
Author: Liang Zhang <zhangli...@apache.org>
AuthorDate: Sat Aug 6 14:46:53 2022 +0800

    Refactor YamlShardingAutoTableRuleConfigurationSwapper (#19922)
    
    * Remove test only constructor for ShardingAutoTableRuleConfiguration
    
    * Refactor YamlShardingAutoTableRuleConfigurationSwapper
---
 ...lShardingAutoTableRuleConfigurationSwapper.java | 51 +++++++++++-----------
 ...rdingAutoTableRuleConfigurationSwapperTest.java | 10 ++---
 2 files changed, 30 insertions(+), 31 deletions(-)

diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/yaml/swapper/rule/YamlShardingAutoTableRuleConfigurationSwapper.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/yaml/swapper/rule/YamlShardingAutoTableRuleConfigurationSwapper.java
index 71f2d2d3f7e..42744baa5fc 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/yaml/swapper/rule/YamlShardingAutoTableRuleConfigurationSwapper.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/yaml/swapper/rule/YamlShardingAutoTableRuleConfigurationSwapper.java
@@ -18,6 +18,7 @@
 package org.apache.shardingsphere.sharding.yaml.swapper.rule;
 
 import com.google.common.base.Preconditions;
+import com.google.common.base.Strings;
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
 import org.apache.shardingsphere.infra.datanode.DataNodeUtil;
@@ -71,31 +72,16 @@ public final class 
YamlShardingAutoTableRuleConfigurationSwapper implements Yaml
         return result;
     }
     
-    @Override
-    public ShardingAutoTableRuleConfiguration swapToObject(final 
YamlShardingAutoTableRuleConfiguration yamlConfig) {
-        Preconditions.checkNotNull(yamlConfig.getLogicTable(), "Logic table 
cannot be null.");
-        ShardingAutoTableRuleConfiguration result = new 
ShardingAutoTableRuleConfiguration(yamlConfig.getLogicTable(), 
yamlConfig.getActualDataSources());
-        result.setActualTablePrefix(yamlConfig.getActualTablePrefix());
-        result.setActualDataNodes(yamlConfig.getActualDataNodes());
-        if (null != yamlConfig.getShardingStrategy()) {
-            
result.setShardingStrategy(shardingStrategySwapper.swapToObject(yamlConfig.getShardingStrategy()));
-        }
-        if (null != yamlConfig.getKeyGenerateStrategy()) {
-            
result.setKeyGenerateStrategy(keyGenerateStrategySwapper.swapToObject(yamlConfig.getKeyGenerateStrategy()));
-        }
-        return result;
-    }
-    
-    private void setActualDataNodesWithAlgorithms(final 
ShardingAutoTableRuleConfiguration data, final 
YamlShardingAutoTableRuleConfiguration result) {
-        if (null != data.getActualDataSources() && 
!data.getActualDataSources().isEmpty()) {
-            getShardingCountWithAlgorithms(data, 
shardingAlgorithms).ifPresent(shardingCount -> 
result.setActualDataNodes(getActualDataNodes(data, shardingCount)));
-            getShardingCountWithAlgorithmConfig(data, 
shardingAlgorithmConfigs).ifPresent(shardingCount -> 
result.setActualDataNodes(getActualDataNodes(data, shardingCount)));
+    private void setActualDataNodesWithAlgorithms(final 
ShardingAutoTableRuleConfiguration data, final 
YamlShardingAutoTableRuleConfiguration yamlData) {
+        if (!Strings.isNullOrEmpty(data.getActualDataSources())) {
+            getShardingCountWithAlgorithms(data).ifPresent(optional -> 
yamlData.setActualDataNodes(getActualDataNodes(data, optional)));
+            
getShardingCountWithAlgorithmConfiguration(data).ifPresent(optional -> 
yamlData.setActualDataNodes(getActualDataNodes(data, optional)));
         }
     }
     
-    private Optional<Integer> getShardingCountWithAlgorithms(final 
ShardingAutoTableRuleConfiguration configuration, final Map<String, 
ShardingAlgorithm> shardingAlgorithms) {
-        if (null != configuration.getShardingStrategy() && 
shardingAlgorithms.containsKey(configuration.getShardingStrategy().getShardingAlgorithmName()))
 {
-            ShardingAlgorithm algorithm = 
shardingAlgorithms.get(configuration.getShardingStrategy().getShardingAlgorithmName());
+    private Optional<Integer> getShardingCountWithAlgorithms(final 
ShardingAutoTableRuleConfiguration data) {
+        if (null != data.getShardingStrategy() && 
shardingAlgorithms.containsKey(data.getShardingStrategy().getShardingAlgorithmName()))
 {
+            ShardingAlgorithm algorithm = 
shardingAlgorithms.get(data.getShardingStrategy().getShardingAlgorithmName());
             if (algorithm instanceof ShardingAutoTableAlgorithm) {
                 return Optional.of(((ShardingAutoTableAlgorithm) 
algorithm).getAutoTablesAmount());
             }
@@ -103,9 +89,9 @@ public final class 
YamlShardingAutoTableRuleConfigurationSwapper implements Yaml
         return Optional.empty();
     }
     
-    private Optional<Integer> getShardingCountWithAlgorithmConfig(final 
ShardingAutoTableRuleConfiguration configuration, final Map<String, 
AlgorithmConfiguration> shardingAlgorithms) {
-        if (null != configuration.getShardingStrategy() && 
shardingAlgorithms.containsKey(configuration.getShardingStrategy().getShardingAlgorithmName()))
 {
-            ShardingAlgorithm algorithm = 
ShardingAlgorithmFactory.newInstance(shardingAlgorithms.get(configuration.getShardingStrategy().getShardingAlgorithmName()));
+    private Optional<Integer> getShardingCountWithAlgorithmConfiguration(final 
ShardingAutoTableRuleConfiguration data) {
+        if (null != data.getShardingStrategy() && 
shardingAlgorithmConfigs.containsKey(data.getShardingStrategy().getShardingAlgorithmName()))
 {
+            ShardingAlgorithm algorithm = 
ShardingAlgorithmFactory.newInstance(shardingAlgorithmConfigs.get(data.getShardingStrategy().getShardingAlgorithmName()));
             if (algorithm instanceof ShardingAutoTableAlgorithm) {
                 return Optional.of(((ShardingAutoTableAlgorithm) 
algorithm).getAutoTablesAmount());
             }
@@ -117,4 +103,19 @@ public final class 
YamlShardingAutoTableRuleConfigurationSwapper implements Yaml
         Collection<String> dataSourceNames = new 
InlineExpressionParser(data.getActualDataSources()).splitAndEvaluate();
         return String.join(",", DataNodeUtil.getFormatDataNodes(shardingCount, 
data.getLogicTable(), dataSourceNames));
     }
+    
+    @Override
+    public ShardingAutoTableRuleConfiguration swapToObject(final 
YamlShardingAutoTableRuleConfiguration yamlConfig) {
+        Preconditions.checkNotNull(yamlConfig.getLogicTable(), "Logic table 
cannot be null.");
+        ShardingAutoTableRuleConfiguration result = new 
ShardingAutoTableRuleConfiguration(yamlConfig.getLogicTable(), 
yamlConfig.getActualDataSources());
+        result.setActualTablePrefix(yamlConfig.getActualTablePrefix());
+        result.setActualDataNodes(yamlConfig.getActualDataNodes());
+        if (null != yamlConfig.getShardingStrategy()) {
+            
result.setShardingStrategy(shardingStrategySwapper.swapToObject(yamlConfig.getShardingStrategy()));
+        }
+        if (null != yamlConfig.getKeyGenerateStrategy()) {
+            
result.setKeyGenerateStrategy(keyGenerateStrategySwapper.swapToObject(yamlConfig.getKeyGenerateStrategy()));
+        }
+        return result;
+    }
 }
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/yaml/swapper/rule/YamlShardingAutoTableRuleConfigurationSwapperTest.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/yaml/swapper/rule/YamlShardingAutoTableRuleConfigurationSwapperTest.java
index 0c411623232..c0f4ff065d2 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/yaml/swapper/rule/YamlShardingAutoTableRuleConfigurationSwapperTest.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/yaml/swapper/rule/YamlShardingAutoTableRuleConfigurationSwapperTest.java
@@ -46,7 +46,7 @@ public final class 
YamlShardingAutoTableRuleConfigurationSwapperTest {
     }
     
     @Test
-    public void assertSwapToYamlWithMinProperties() {
+    public void assertSwapToYamlConfigurationWithMinProperties() {
         YamlShardingAutoTableRuleConfiguration actual = 
swapper.swapToYamlConfiguration(new ShardingAutoTableRuleConfiguration("tbl", 
"ds0,ds1"));
         assertThat(actual.getLogicTable(), is("tbl"));
         assertThat(actual.getActualDataSources(), is("ds0,ds1"));
@@ -55,7 +55,7 @@ public final class 
YamlShardingAutoTableRuleConfigurationSwapperTest {
     }
     
     @Test
-    public void assertSwapToYamlWithMaxProperties() {
+    public void assertSwapToYamlConfigurationWithMaxProperties() {
         ShardingAutoTableRuleConfiguration shardingTableRuleConfig = new 
ShardingAutoTableRuleConfiguration("tbl", "ds0,ds1");
         shardingTableRuleConfig.setActualTablePrefix("tmp_");
         
shardingTableRuleConfig.setShardingStrategy(mock(StandardShardingStrategyConfiguration.class));
@@ -71,12 +71,10 @@ public final class 
YamlShardingAutoTableRuleConfigurationSwapperTest {
     }
     
     @Test
-    public void assertSwapToYamlAutoAddActualDataNodes() {
+    public void assertSwapToYamlConfigurationWithAutoAddActualDataNodes() {
         ShardingAutoTableRuleConfiguration shardingTableRuleConfig = new 
ShardingAutoTableRuleConfiguration("tbl", "ds0,ds1");
         shardingTableRuleConfig.setActualTablePrefix("tmp_");
-        StandardShardingStrategyConfiguration strategyConfiguration = 
mock(StandardShardingStrategyConfiguration.class);
-        
when(strategyConfiguration.getShardingAlgorithmName()).thenReturn("foo_algorithm");
-        shardingTableRuleConfig.setShardingStrategy(strategyConfiguration);
+        shardingTableRuleConfig.setShardingStrategy(new 
StandardShardingStrategyConfiguration("col", "foo_algorithm"));
         
shardingTableRuleConfig.setKeyGenerateStrategy(mock(KeyGenerateStrategyConfiguration.class));
         YamlShardingAutoTableRuleConfiguration actual = 
swapper.swapToYamlConfiguration(shardingTableRuleConfig);
         assertThat(actual.getLogicTable(), is("tbl"));

Reply via email to