1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.globalclock.distsql.parser.core;
19
20 import org.antlr.v4.runtime.tree.ParseTree;
21 import org.apache.shardingsphere.distsql.parser.autogen.GlobalClockDistSQLStatementBaseVisitor;
22 import org.apache.shardingsphere.distsql.parser.autogen.GlobalClockDistSQLStatementParser.AlterGlobalClockRuleContext;
23 import org.apache.shardingsphere.distsql.parser.autogen.GlobalClockDistSQLStatementParser.GlobalClockRuleDefinitionContext;
24 import org.apache.shardingsphere.distsql.parser.autogen.GlobalClockDistSQLStatementParser.PropertiesDefinitionContext;
25 import org.apache.shardingsphere.distsql.parser.autogen.GlobalClockDistSQLStatementParser.PropertyContext;
26 import org.apache.shardingsphere.distsql.parser.autogen.GlobalClockDistSQLStatementParser.ShowGlobalClockRuleContext;
27 import org.apache.shardingsphere.globalclock.distsql.statement.queryable.ShowGlobalClockRuleStatement;
28 import org.apache.shardingsphere.globalclock.distsql.statement.updatable.AlterGlobalClockRuleStatement;
29 import org.apache.shardingsphere.sql.parser.api.ASTNode;
30 import org.apache.shardingsphere.sql.parser.api.visitor.SQLVisitor;
31 import org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
32
33 import java.util.Properties;
34
35
36
37
38 public final class GlobalClockDistSQLStatementVisitor extends GlobalClockDistSQLStatementBaseVisitor<ASTNode> implements SQLVisitor<ASTNode> {
39
40 @Override
41 public ASTNode visitShowGlobalClockRule(final ShowGlobalClockRuleContext ctx) {
42 return new ShowGlobalClockRuleStatement();
43 }
44
45 @Override
46 public ASTNode visitAlterGlobalClockRule(final AlterGlobalClockRuleContext ctx) {
47 GlobalClockRuleDefinitionContext ruleDefinitionContext = ctx.globalClockRuleDefinition();
48 return new AlterGlobalClockRuleStatement(getIdentifierValue(ruleDefinitionContext.typeDefinition().typeName()), getIdentifierValue(ruleDefinitionContext.providerDefinition().providerName()),
49 Boolean.parseBoolean(getIdentifierValue(ruleDefinitionContext.enabledDefinition().enabled())), getProperties(ruleDefinitionContext.propertiesDefinition()));
50 }
51
52 private String getIdentifierValue(final ParseTree context) {
53 return null == context ? null : new IdentifierValue(context.getText()).getValue();
54 }
55
56 private Properties getProperties(final PropertiesDefinitionContext ctx) {
57 Properties result = new Properties();
58 if (null == ctx || null == ctx.properties()) {
59 return result;
60 }
61 for (PropertyContext each : ctx.properties().property()) {
62 result.setProperty(IdentifierValue.getQuotedContent(each.key.getText()), IdentifierValue.getQuotedContent(each.value.getText()));
63 }
64 return result;
65 }
66 }