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;

Reply via email to