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 2022/05/29 06:25:34 UTC

[shardingsphere] branch master updated: Refactor EncryptRule (#18041)

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 1f1877e66ac Refactor EncryptRule (#18041)
1f1877e66ac is described below

commit 1f1877e66ac700d60fadc3faa5935e085fe6e3ca
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Sun May 29 14:25:27 2022 +0800

    Refactor EncryptRule (#18041)
    
    * Refactor ShadowRule
    
    * Refactor EncryptTable
    
    * Refactor EncryptRule
---
 .../shardingsphere/encrypt/rule/EncryptRule.java      | 19 ++++++++-----------
 .../shardingsphere/encrypt/rule/EncryptTable.java     |  3 +--
 2 files changed, 9 insertions(+), 13 deletions(-)

diff --git a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptRule.java b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptRule.java
index e14c250b403..ea4e380511d 100644
--- a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptRule.java
+++ b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptRule.java
@@ -62,7 +62,7 @@ public final class EncryptRule implements SchemaRule, TableContainedRule {
     public EncryptRule(final EncryptRuleConfiguration config, final Map<String, DataSource> dataSourceMap) {
         Preconditions.checkArgument(isValidRuleConfiguration(config), "Invalid encrypt column configurations in EncryptTableRuleConfigurations.");
         config.getEncryptors().forEach((key, value) -> encryptors.put(key, EncryptAlgorithmFactory.newInstance(value)));
-        Map<String, Integer> dataTypes = containsConfigDataTypeColumn(config.getTables()) ? getDataTypes(dataSourceMap) : Collections.emptyMap();
+        Map<String, Integer> dataTypes = containsConfiguredDataType(config.getTables()) ? getDataTypes(dataSourceMap) : Collections.emptyMap();
         config.getTables().forEach(each -> tables.put(each.getName().toLowerCase(), new EncryptTable(each, dataTypes)));
         queryWithCipherColumn = config.isQueryWithCipherColumn();
     }
@@ -70,7 +70,7 @@ public final class EncryptRule implements SchemaRule, TableContainedRule {
     public EncryptRule(final AlgorithmProvidedEncryptRuleConfiguration config, final Map<String, DataSource> dataSourceMap) {
         Preconditions.checkArgument(isValidRuleConfigurationWithAlgorithmProvided(config), "Invalid encrypt column configurations in EncryptTableRuleConfigurations.");
         encryptors.putAll(config.getEncryptors());
-        Map<String, Integer> dataTypes = containsConfigDataTypeColumn(config.getTables()) ? getDataTypes(dataSourceMap) : Collections.emptyMap();
+        Map<String, Integer> dataTypes = containsConfiguredDataType(config.getTables()) ? getDataTypes(dataSourceMap) : Collections.emptyMap();
         config.getTables().forEach(each -> tables.put(each.getName().toLowerCase(), new EncryptTable(each, dataTypes)));
         queryWithCipherColumn = config.isQueryWithCipherColumn();
     }
@@ -130,15 +130,12 @@ public final class EncryptRule implements SchemaRule, TableContainedRule {
         return Collections.emptyMap();
     }
     
-    private boolean containsConfigDataTypeColumn(final Collection<EncryptTableRuleConfiguration> tableRuleConfigs) {
-        for (EncryptTableRuleConfiguration each : tableRuleConfigs) {
-            for (EncryptColumnRuleConfiguration column : each.getColumns()) {
-                if (null != column.getLogicDataType() && !column.getLogicDataType().isEmpty()) {
-                    return true;
-                }
-            }
-        }
-        return false;
+    private boolean containsConfiguredDataType(final Collection<EncryptTableRuleConfiguration> tableRuleConfigs) {
+        return tableRuleConfigs.stream().anyMatch(this::containsConfiguredDataType);
+    }
+    
+    private boolean containsConfiguredDataType(final EncryptTableRuleConfiguration tableConfig) {
+        return tableConfig.getColumns().stream().anyMatch(each -> !Strings.isNullOrEmpty(each.getLogicDataType()));
     }
     
     /**
diff --git a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptTable.java b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptTable.java
index 5de89ddefe9..8b360127457 100644
--- a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptTable.java
+++ b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptTable.java
@@ -46,8 +46,7 @@ public final class EncryptTable {
         for (EncryptColumnRuleConfiguration each : config.getColumns()) {
             checkColumnConfig(each);
             columns.put(each.getLogicColumn(), new EncryptColumn(getEncryptColumnDataType(each.getLogicDataType(), dataTypes), each.getCipherColumn(),
-                    getEncryptColumnDataType(each.getCipherDataType(), dataTypes), each.getAssistedQueryColumn(), getEncryptColumnDataType(each.getAssistedQueryDataType(),
-                            dataTypes),
+                    getEncryptColumnDataType(each.getCipherDataType(), dataTypes), each.getAssistedQueryColumn(), getEncryptColumnDataType(each.getAssistedQueryDataType(), dataTypes),
                     each.getPlainColumn(), getEncryptColumnDataType(each.getPlainDataType(), dataTypes), each.getEncryptorName(), each.getQueryWithCipherColumn()));
         }
         queryWithCipherColumn = config.getQueryWithCipherColumn();