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

zhaojinchao 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 b06d72e8445 Refactor EncryptRule RDL statement updater (#26389)
b06d72e8445 is described below

commit b06d72e844565b9e131d11a00fb205e4a95955ce
Author: ChenJiaHao <[email protected]>
AuthorDate: Sat Jun 17 14:12:08 2023 +0800

    Refactor EncryptRule RDL statement updater (#26389)
---
 .../DropCompatibleEncryptRuleStatementUpdater.java    | 19 +++++++++++++++++++
 .../update/DropEncryptRuleStatementUpdater.java       | 16 ++++++++++++++++
 2 files changed, 35 insertions(+)

diff --git 
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropCompatibleEncryptRuleStatementUpdater.java
 
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropCompatibleEncryptRuleStatementUpdater.java
index 743c2510fbb..4cbfe621518 100644
--- 
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropCompatibleEncryptRuleStatementUpdater.java
+++ 
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropCompatibleEncryptRuleStatementUpdater.java
@@ -19,9 +19,17 @@ package 
org.apache.shardingsphere.encrypt.distsql.handler.update;
 
 import 
org.apache.shardingsphere.distsql.handler.update.RuleDefinitionDropUpdater;
 import 
org.apache.shardingsphere.encrypt.api.config.CompatibleEncryptRuleConfiguration;
+import 
org.apache.shardingsphere.encrypt.api.config.rule.EncryptTableRuleConfiguration;
 import 
org.apache.shardingsphere.encrypt.distsql.parser.statement.DropEncryptRuleStatement;
+import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.Map;
+
 /**
  * Drop encrypt rule statement updater.
  * 
@@ -42,6 +50,17 @@ public final class DropCompatibleEncryptRuleStatementUpdater 
implements RuleDefi
         return delegate.hasAnyOneToBeDropped(sqlStatement, 
currentRuleConfig.convertToEncryptRuleConfiguration());
     }
     
+    @Override
+    public CompatibleEncryptRuleConfiguration 
buildToBeDroppedRuleConfiguration(final CompatibleEncryptRuleConfiguration 
currentRuleConfig, final DropEncryptRuleStatement sqlStatement) {
+        Collection<EncryptTableRuleConfiguration> toBeDroppedTables = new 
LinkedList<>();
+        Map<String, AlgorithmConfiguration> toBeDroppedEncryptors = new 
HashMap<>();
+        for (String each : sqlStatement.getTables()) {
+            toBeDroppedTables.add(new EncryptTableRuleConfiguration(each, 
Collections.emptyList()));
+        }
+        // TODO find unused encryptor
+        return new CompatibleEncryptRuleConfiguration(toBeDroppedTables, 
toBeDroppedEncryptors);
+    }
+    
     @Override
     public boolean updateCurrentRuleConfiguration(final 
DropEncryptRuleStatement sqlStatement, final CompatibleEncryptRuleConfiguration 
currentRuleConfig) {
         return delegate.updateCurrentRuleConfiguration(sqlStatement, 
currentRuleConfig.convertToEncryptRuleConfiguration());
diff --git 
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleStatementUpdater.java
 
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleStatementUpdater.java
index 40a3c737bbd..22243af992c 100644
--- 
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleStatementUpdater.java
+++ 
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleStatementUpdater.java
@@ -23,10 +23,15 @@ import 
org.apache.shardingsphere.encrypt.api.config.EncryptRuleConfiguration;
 import 
org.apache.shardingsphere.encrypt.api.config.rule.EncryptColumnItemRuleConfiguration;
 import 
org.apache.shardingsphere.encrypt.api.config.rule.EncryptTableRuleConfiguration;
 import 
org.apache.shardingsphere.encrypt.distsql.parser.statement.DropEncryptRuleStatement;
+import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
 
 import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.Map;
 import java.util.Optional;
 import java.util.stream.Collectors;
 
@@ -56,6 +61,17 @@ public final class DropEncryptRuleStatementUpdater 
implements RuleDefinitionDrop
                 && 
!getIdenticalData(currentRuleConfig.getTables().stream().map(EncryptTableRuleConfiguration::getName).collect(Collectors.toSet()),
 sqlStatement.getTables()).isEmpty();
     }
     
+    @Override
+    public EncryptRuleConfiguration buildToBeDroppedRuleConfiguration(final 
EncryptRuleConfiguration currentRuleConfig, final DropEncryptRuleStatement 
sqlStatement) {
+        Collection<EncryptTableRuleConfiguration> toBeDroppedTables = new 
LinkedList<>();
+        Map<String, AlgorithmConfiguration> toBeDroppedEncryptors = new 
HashMap<>();
+        for (String each : sqlStatement.getTables()) {
+            toBeDroppedTables.add(new EncryptTableRuleConfiguration(each, 
Collections.emptyList()));
+        }
+        // TODO find unused encryptor
+        return new EncryptRuleConfiguration(toBeDroppedTables, 
toBeDroppedEncryptors);
+    }
+    
     @Override
     public boolean updateCurrentRuleConfiguration(final 
DropEncryptRuleStatement sqlStatement, final EncryptRuleConfiguration 
currentRuleConfig) {
         sqlStatement.getTables().forEach(each -> dropRule(currentRuleConfig, 
each));

Reply via email to