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();
}