This is an automated email from the ASF dual-hosted git repository.
sunnianjun 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 1fc916e078b Refactor RuleBasedSchemaMetaDataDecorator's impl (#24066)
1fc916e078b is described below
commit 1fc916e078b922abf336d247dc526f4ed7794b9a
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Feb 9 00:22:33 2023 +0800
Refactor RuleBasedSchemaMetaDataDecorator's impl (#24066)
---
.../encrypt/metadata/EncryptSchemaMetaDataDecorator.java | 14 +++++---------
.../metadata/ShardingSchemaMetaDataDecorator.java | 13 +++++--------
.../single/metadata/SingleSchemaMetaDataDecorator.java | 16 ++++++----------
3 files changed, 16 insertions(+), 27 deletions(-)
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/metadata/EncryptSchemaMetaDataDecorator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/metadata/EncryptSchemaMetaDataDecorator.java
index 163c2311640..986c9d2da7f 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/metadata/EncryptSchemaMetaDataDecorator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/metadata/EncryptSchemaMetaDataDecorator.java
@@ -29,9 +29,9 @@ import
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.Tab
import javax.sql.DataSource;
import java.util.Collection;
import java.util.LinkedHashMap;
-import java.util.LinkedList;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.stream.Collectors;
/**
* Schema meta data decorator for encrypt.
@@ -42,19 +42,15 @@ public final class EncryptSchemaMetaDataDecorator
implements RuleBasedSchemaMeta
public Map<String, SchemaMetaData> decorate(final Map<String,
SchemaMetaData> schemaMetaDataMap, final EncryptRule rule, final
GenericSchemaBuilderMaterial material) {
Map<String, SchemaMetaData> result = new
LinkedHashMap<>(schemaMetaDataMap.size(), 1);
for (Entry<String, SchemaMetaData> entry :
schemaMetaDataMap.entrySet()) {
- Collection<TableMetaData> tables = new LinkedList<>();
- for (TableMetaData each : entry.getValue().getTables()) {
- tables.add(decorate(each.getName(), each, rule,
material.getStorageTypes().get(entry.getKey()),
material.getDataSourceMap().get(entry.getKey())));
- }
+ DatabaseType databaseType =
material.getStorageTypes().get(entry.getKey());
+ DataSource dataSource =
material.getDataSourceMap().get(entry.getKey());
+ TableMetaDataReviseEngine<EncryptRule> tableMetaDataReviseEngine =
new TableMetaDataReviseEngine<>(rule, databaseType, dataSource);
+ Collection<TableMetaData> tables =
entry.getValue().getTables().stream().map(tableMetaDataReviseEngine::revise).collect(Collectors.toList());
result.put(entry.getKey(), new SchemaMetaData(entry.getKey(),
tables));
}
return result;
}
- private TableMetaData decorate(final String tableName, final TableMetaData
tableMetaData, final EncryptRule encryptRule, final DatabaseType databaseType,
final DataSource dataSource) {
- return encryptRule.findEncryptTable(tableName).map(optional -> new
TableMetaDataReviseEngine<>(encryptRule, databaseType,
dataSource).revise(tableMetaData)).orElse(tableMetaData);
- }
-
@Override
public int getOrder() {
return EncryptOrder.ORDER;
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/ShardingSchemaMetaDataDecorator.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/ShardingSchemaMetaDataDecorator.java
index 9853b2e1099..4e3bb28b177 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/ShardingSchemaMetaDataDecorator.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/ShardingSchemaMetaDataDecorator.java
@@ -47,9 +47,10 @@ public final class ShardingSchemaMetaDataDecorator
implements RuleBasedSchemaMet
Map<String, SchemaMetaData> result = new
LinkedHashMap<>(schemaMetaDataMap.size(), 1);
boolean checkTableMetaDataEnabled =
material.getProps().getValue(ConfigurationPropertyKey.CHECK_TABLE_META_DATA_ENABLED);
for (Entry<String, SchemaMetaData> entry :
schemaMetaDataMap.entrySet()) {
+ DatabaseType databaseType =
material.getStorageTypes().get(entry.getKey());
+ DataSource dataSource =
material.getDataSourceMap().get(entry.getKey());
Collection<TableMetaData> tables = new LinkedList<>();
- for (Entry<String, Collection<TableMetaData>> tableEntry :
getLogicTableMetaDataMap(entry.getValue(), rule,
- material.getStorageTypes().get(entry.getKey()),
material.getDataSourceMap().get(entry.getKey())).entrySet()) {
+ for (Entry<String, Collection<TableMetaData>> tableEntry :
getLogicTableMetaDataMap(entry.getValue(), rule, databaseType,
dataSource).entrySet()) {
if (checkTableMetaDataEnabled) {
checkUniformed(tableEntry.getKey(), tableEntry.getValue());
}
@@ -60,17 +61,13 @@ public final class ShardingSchemaMetaDataDecorator
implements RuleBasedSchemaMet
return result;
}
- private TableMetaData decorate(final TableMetaData tableMetaData, final
ShardingRule rule, final DatabaseType databaseType, final DataSource
dataSource) {
- return rule.findTableRuleByActualTable(tableMetaData.getName())
- .map(optional -> new TableMetaDataReviseEngine<>(rule,
databaseType, dataSource).revise(tableMetaData)).orElse(tableMetaData);
- }
-
private Map<String, Collection<TableMetaData>>
getLogicTableMetaDataMap(final SchemaMetaData schemaMetaData, final
ShardingRule rule,
final DatabaseType databaseType, final DataSource dataSource) {
Map<String, Collection<TableMetaData>> result = new LinkedHashMap<>();
+ TableMetaDataReviseEngine<ShardingRule> tableMetaDataReviseEngine =
new TableMetaDataReviseEngine<>(rule, databaseType, dataSource);
for (TableMetaData each : schemaMetaData.getTables()) {
String logicTableName =
rule.findLogicTableByActualTable(each.getName()).orElse(each.getName());
- result.computeIfAbsent(logicTableName, key -> new
LinkedList<>()).add(decorate(each, rule, databaseType, dataSource));
+ result.computeIfAbsent(logicTableName, key -> new
LinkedList<>()).add(tableMetaDataReviseEngine.revise(each));
}
return result;
}
diff --git
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/SingleSchemaMetaDataDecorator.java
b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/SingleSchemaMetaDataDecorator.java
index b4363a1c837..2ed77d761b1 100644
---
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/SingleSchemaMetaDataDecorator.java
+++
b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/SingleSchemaMetaDataDecorator.java
@@ -29,9 +29,9 @@ import org.apache.shardingsphere.single.rule.SingleRule;
import javax.sql.DataSource;
import java.util.Collection;
import java.util.LinkedHashMap;
-import java.util.LinkedList;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.stream.Collectors;
/**
* Schema meta data decorator for single.
@@ -40,21 +40,17 @@ public final class SingleSchemaMetaDataDecorator implements
RuleBasedSchemaMetaD
@Override
public Map<String, SchemaMetaData> decorate(final Map<String,
SchemaMetaData> schemaMetaDataMap, final SingleRule rule, final
GenericSchemaBuilderMaterial material) {
- Map<String, SchemaMetaData> result = new LinkedHashMap<>();
+ Map<String, SchemaMetaData> result = new
LinkedHashMap<>(schemaMetaDataMap.size(), 1);
for (Entry<String, SchemaMetaData> entry :
schemaMetaDataMap.entrySet()) {
- Collection<TableMetaData> tables = new LinkedList<>();
- for (TableMetaData each : entry.getValue().getTables()) {
- tables.add(decorate(rule, each,
material.getStorageTypes().get(entry.getKey()),
material.getDataSourceMap().get(entry.getKey())));
- }
+ DatabaseType databaseType =
material.getStorageTypes().get(entry.getKey());
+ DataSource dataSource =
material.getDataSourceMap().get(entry.getKey());
+ TableMetaDataReviseEngine<SingleRule> tableMetaDataReviseEngine =
new TableMetaDataReviseEngine<>(rule, databaseType, dataSource);
+ Collection<TableMetaData> tables =
entry.getValue().getTables().stream().map(tableMetaDataReviseEngine::revise).collect(Collectors.toList());
result.put(entry.getKey(), new SchemaMetaData(entry.getKey(),
tables));
}
return result;
}
- private TableMetaData decorate(final SingleRule rule, final TableMetaData
tableMetaData, final DatabaseType databaseType, final DataSource dataSource) {
- return new TableMetaDataReviseEngine<>(rule, databaseType,
dataSource).revise(tableMetaData);
- }
-
@Override
public int getOrder() {
return SingleOrder.ORDER;