You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by ji...@apache.org on 2023/02/01 16:54:39 UTC
[shardingsphere] branch master updated: Refactor ShadowTableRule (#23913)
This is an automated email from the ASF dual-hosted git repository.
jianglongtao 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 8c871aae21a Refactor ShadowTableRule (#23913)
8c871aae21a is described below
commit 8c871aae21a8c41504d8a7d34e1411fadb4005b9
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Thu Feb 2 00:54:33 2023 +0800
Refactor ShadowTableRule (#23913)
---
.../shadow/rule/ShadowTableRule.java | 27 +++++++++-------------
1 file changed, 11 insertions(+), 16 deletions(-)
diff --git a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/rule/ShadowTableRule.java b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/rule/ShadowTableRule.java
index ce59b1bfcfa..c84f78996a3 100644
--- a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/rule/ShadowTableRule.java
+++ b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/rule/ShadowTableRule.java
@@ -18,16 +18,14 @@
package org.apache.shardingsphere.shadow.rule;
import lombok.Getter;
-import org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
import org.apache.shardingsphere.shadow.api.shadow.ShadowOperationType;
import org.apache.shardingsphere.shadow.api.shadow.column.ColumnShadowAlgorithm;
import org.apache.shardingsphere.shadow.api.shadow.hint.HintShadowAlgorithm;
-import org.apache.shardingsphere.shadow.exception.metadata.InvalidShadowAlgorithmOperationException;
import org.apache.shardingsphere.shadow.spi.ShadowAlgorithm;
import java.util.Collection;
-import java.util.Collections;
import java.util.EnumMap;
+import java.util.LinkedList;
import java.util.Map;
import java.util.stream.Collectors;
@@ -48,30 +46,27 @@ public final class ShadowTableRule {
public ShadowTableRule(final String tableName, final Collection<String> shadowDataSources, final Collection<String> shadowAlgorithmNames, final Map<String, ShadowAlgorithm> shadowAlgorithms) {
this.tableName = tableName;
this.shadowDataSources = shadowDataSources;
- this.hintShadowAlgorithmNames = initHintShadowAlgorithmNames(shadowAlgorithmNames, shadowAlgorithms);
- this.columnShadowAlgorithmNames = initColumnShadowAlgorithmNames(shadowAlgorithmNames, shadowAlgorithms);
+ this.hintShadowAlgorithmNames = getHintShadowAlgorithmNames(shadowAlgorithmNames, shadowAlgorithms);
+ this.columnShadowAlgorithmNames = getColumnShadowAlgorithmRules(shadowAlgorithmNames, shadowAlgorithms);
}
- private Collection<String> initHintShadowAlgorithmNames(final Collection<String> shadowAlgorithmNames, final Map<String, ShadowAlgorithm> shadowAlgorithms) {
+ private Collection<String> getHintShadowAlgorithmNames(final Collection<String> shadowAlgorithmNames, final Map<String, ShadowAlgorithm> shadowAlgorithms) {
return shadowAlgorithmNames.stream().filter(each -> shadowAlgorithms.get(each) instanceof HintShadowAlgorithm).collect(Collectors.toList());
}
- private Map<ShadowOperationType, Collection<ShadowAlgorithmNameRule>> initColumnShadowAlgorithmNames(final Collection<String> shadowAlgorithmNames,
- final Map<String, ShadowAlgorithm> shadowAlgorithms) {
+ private Map<ShadowOperationType, Collection<ShadowAlgorithmNameRule>> getColumnShadowAlgorithmRules(final Collection<String> shadowAlgorithmNames,
+ final Map<String, ShadowAlgorithm> shadowAlgorithms) {
Map<ShadowOperationType, Collection<ShadowAlgorithmNameRule>> result = new EnumMap<>(ShadowOperationType.class);
for (String each : shadowAlgorithmNames) {
ShadowAlgorithm shadowAlgorithm = shadowAlgorithms.get(each);
if (shadowAlgorithm instanceof ColumnShadowAlgorithm) {
- initShadowAlgorithmNames(each, (ColumnShadowAlgorithm<?>) shadowAlgorithm, result);
+ ShadowOperationType operationType = ((ColumnShadowAlgorithm<?>) shadowAlgorithm).getShadowOperationType();
+ if (!result.containsKey(operationType)) {
+ result.put(operationType, new LinkedList<>());
+ }
+ result.get(operationType).add(new ShadowAlgorithmNameRule(((ColumnShadowAlgorithm<?>) shadowAlgorithm).getShadowColumn(), each));
}
}
return result;
}
-
- private void initShadowAlgorithmNames(final String name, final ColumnShadowAlgorithm<?> algorithm,
- final Map<ShadowOperationType, Collection<ShadowAlgorithmNameRule>> columnShadowAlgorithmNames) {
- ShadowOperationType operationType = algorithm.getShadowOperationType();
- ShardingSpherePreconditions.checkState(!columnShadowAlgorithmNames.containsKey(operationType), () -> new InvalidShadowAlgorithmOperationException(operationType.name(), tableName));
- columnShadowAlgorithmNames.put(operationType, Collections.singleton(new ShadowAlgorithmNameRule(algorithm.getShadowColumn(), name)));
- }
}