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