未验证 提交 2b99da55 编写于 作者: kimmking's avatar kimmking 提交者: GitHub

minor refactoring (#7941)

* minor refactoring

* fix code style
上级 1bc809c7
......@@ -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) {
......
......@@ -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();
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册