1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.sqlfederation.optimizer.context;
19
20 import lombok.AccessLevel;
21 import lombok.NoArgsConstructor;
22 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
23 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
24 import org.apache.shardingsphere.parser.rule.SQLParserRule;
25 import org.apache.shardingsphere.parser.rule.builder.DefaultSQLParserRuleConfigurationBuilder;
26 import org.apache.shardingsphere.parser.rule.builder.SQLParserRuleBuilder;
27 import org.apache.shardingsphere.sqlfederation.optimizer.context.parser.OptimizerParserContext;
28 import org.apache.shardingsphere.sqlfederation.optimizer.context.parser.OptimizerParserContextFactory;
29 import org.apache.shardingsphere.sqlfederation.optimizer.context.planner.OptimizerMetaData;
30 import org.apache.shardingsphere.sqlfederation.optimizer.context.planner.OptimizerMetaDataFactory;
31
32 import java.util.Map;
33 import java.util.Properties;
34
35
36
37
38 @NoArgsConstructor(access = AccessLevel.PRIVATE)
39 public final class OptimizerContextFactory {
40
41
42
43
44
45
46
47 public static OptimizerContext create(final Map<String, ShardingSphereDatabase> databases) {
48 Map<String, OptimizerParserContext> parserContexts = OptimizerParserContextFactory.create(databases);
49
50 SQLParserRule sqlParserRule = new SQLParserRuleBuilder().build(new DefaultSQLParserRuleConfigurationBuilder().build(), databases, new ConfigurationProperties(new Properties()));
51 Map<String, OptimizerMetaData> optimizerMetaData = OptimizerMetaDataFactory.create(databases);
52 return new OptimizerContext(sqlParserRule, parserContexts, optimizerMetaData);
53 }
54 }