1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.infra.metadata.database.schema.reviser;
19
20 import lombok.RequiredArgsConstructor;
21 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
22 import org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericSchemaBuilderMaterial;
23 import org.apache.shardingsphere.infra.database.core.metadata.data.model.SchemaMetaData;
24 import org.apache.shardingsphere.infra.metadata.database.schema.reviser.schema.SchemaMetaDataReviseEngine;
25 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
26
27 import javax.sql.DataSource;
28 import java.util.Collection;
29 import java.util.LinkedHashMap;
30 import java.util.Map;
31 import java.util.Map.Entry;
32
33
34
35
36 @RequiredArgsConstructor
37 public final class MetaDataReviseEngine {
38
39 private final Collection<ShardingSphereRule> rules;
40
41
42
43
44
45
46
47
48 public Map<String, SchemaMetaData> revise(final Map<String, SchemaMetaData> schemaMetaDataMap, final GenericSchemaBuilderMaterial material) {
49 Map<String, SchemaMetaData> result = new LinkedHashMap<>(schemaMetaDataMap.size(), 1F);
50 for (Entry<String, SchemaMetaData> entry : schemaMetaDataMap.entrySet()) {
51
52 DatabaseType databaseType = material.getStorageTypes().values().stream().findFirst().orElse(null);
53 DataSource dataSource = material.getDataSourceMap().values().stream().findFirst().orElse(null);
54 result.put(entry.getKey(), new SchemaMetaDataReviseEngine(rules, material.getProps(), databaseType, dataSource).revise(entry.getValue()));
55 }
56 return result;
57 }
58 }