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 <[email protected]>
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)));
-    }
 }

Reply via email to