You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2020/10/29 05:17:45 UTC

[shardingsphere] branch master updated: minor refactoring (#7941)

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

zhangliang 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 2b99da5  minor refactoring (#7941)
2b99da5 is described below

commit 2b99da55dd41eb355b99fd1bf0d2e3c23aa8d473
Author: kimmking <ki...@163.com>
AuthorDate: Thu Oct 29 13:17:32 2020 +0800

    minor refactoring (#7941)
    
    * minor refactoring
    
    * fix code style
---
 .../shardingsphere/sharding/rule/ShardingRule.java | 28 ++++++++++------------
 .../shardingsphere/sharding/rule/TableRule.java    |  8 +++++--
 2 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
index 802129c..9eee7a7 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
@@ -118,23 +118,17 @@ public final class ShardingRule implements DataNodeRoutedRule {
         if (tableRuleConfigs.isEmpty()) {
             return dataSourceNames;
         }
-        Collection<String> result = new LinkedHashSet<>();
-        for (ShardingTableRuleConfiguration each : tableRuleConfigs) {
-            if (null == each.getActualDataNodes()) {
-                return dataSourceNames;
-            }
-            result.addAll(getDataSourceNames(each));
+        if (tableRuleConfigs.stream().map(ShardingTableRuleConfiguration::getActualDataNodes).anyMatch(each -> null == each || each.isEmpty())) {
+            return dataSourceNames;
         }
+        Collection<String> result = new LinkedHashSet<>();
+        tableRuleConfigs.forEach(each -> result.addAll(getDataSourceNames(each)));
         return result;
     }
     
     private Collection<String> getDataSourceNames(final ShardingTableRuleConfiguration shardingTableRuleConfig) {
         List<String> actualDataNodes = new InlineExpressionParser(shardingTableRuleConfig.getActualDataNodes()).splitAndEvaluate();
-        Collection<String> result = new LinkedHashSet<>(actualDataNodes.size(), 1);
-        for (String each : actualDataNodes) {
-            result.add(new DataNode(each).getDataSourceName());
-        }
-        return result;
+        return actualDataNodes.stream().map(each -> new DataNode(each).getDataSourceName()).collect(Collectors.toList());
     }
     
     private Collection<TableRule> createTableRules(final Collection<ShardingTableRuleConfiguration> tableRuleConfigurations, final KeyGenerateStrategyConfiguration defaultKeyGenerateStrategyConfig) {
@@ -144,11 +138,13 @@ public final class ShardingRule implements DataNodeRoutedRule {
     private Collection<TableRule> createAutoTableRules(final Collection<ShardingAutoTableRuleConfiguration> autoTableRuleConfigurations, 
                                                        final KeyGenerateStrategyConfiguration defaultKeyGenerateStrategyConfig) {
         return autoTableRuleConfigurations.stream().map(
-            each -> {
-                ShardingAlgorithm shardingAlgorithm = null == each.getShardingStrategy() ? null : shardingAlgorithms.get(each.getShardingStrategy().getShardingAlgorithmName());
-                Preconditions.checkState(shardingAlgorithm instanceof ShardingAutoTableAlgorithm, "Sharding auto table rule configuration must match sharding auto table algorithm.");
-                return new TableRule(each, dataSourceNames, (ShardingAutoTableAlgorithm) shardingAlgorithm, getDefaultGenerateKeyColumn(defaultKeyGenerateStrategyConfig));
-            }).collect(Collectors.toList());
+            each -> createAutoTableRule(defaultKeyGenerateStrategyConfig, each)).collect(Collectors.toList());
+    }
+    
+    private TableRule createAutoTableRule(final KeyGenerateStrategyConfiguration defaultKeyGenerateStrategyConfig, final ShardingAutoTableRuleConfiguration each) {
+        ShardingAlgorithm shardingAlgorithm = null == each.getShardingStrategy() ? null : shardingAlgorithms.get(each.getShardingStrategy().getShardingAlgorithmName());
+        Preconditions.checkState(shardingAlgorithm instanceof ShardingAutoTableAlgorithm, "Sharding auto table rule configuration must match sharding auto table algorithm.");
+        return new TableRule(each, dataSourceNames, (ShardingAutoTableAlgorithm) shardingAlgorithm, getDefaultGenerateKeyColumn(defaultKeyGenerateStrategyConfig));
     }
     
     private String getDefaultGenerateKeyColumn(final KeyGenerateStrategyConfiguration defaultKeyGenerateStrategyConfig) {
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/rule/TableRule.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/rule/TableRule.java
index 4cfb5cf0..0c4c307 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/rule/TableRule.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/rule/TableRule.java
@@ -119,11 +119,15 @@ public final class TableRule {
         if (null == tableShardingStrategyConfig) {
             return new LinkedList<>();
         }
-        List<String> result = new LinkedList<>();
         List<String> dataSources = Strings.isNullOrEmpty(tableRuleConfig.getActualDataSources()) ? new LinkedList<>(dataSourceNames)
                 : new InlineExpressionParser(tableRuleConfig.getActualDataSources()).splitAndEvaluate();
+        return fillDataSouceNames(shardingAlgorithm.getAutoTablesAmount(), dataSources);
+    }
+    
+    private List<String> fillDataSouceNames(final int amount, final List<String> dataSources) {
+        List<String> result = new LinkedList<>();
         Iterator<String> iterator = dataSources.iterator();
-        for (int i = 0; i < shardingAlgorithm.getAutoTablesAmount(); i++) {
+        for (int i = 0; i < amount; i++) {
             if (!iterator.hasNext()) {
                 iterator = dataSources.iterator();
             }