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.apache.shardingsphere.database.connector.core.metadata.database.enums.QuoteCharacter;
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.statement.core.util.IdentifierValueUtils;
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(IdentifierValueUtils.getValue(ruleDefinitionContext.typeDefinition().typeName()),
49 IdentifierValueUtils.getValue(ruleDefinitionContext.providerDefinition().providerName()),
50 Boolean.parseBoolean(IdentifierValueUtils.getValue(ruleDefinitionContext.enabledDefinition().enabled())), getProperties(ruleDefinitionContext.propertiesDefinition()));
51 }
52
53 private Properties getProperties(final PropertiesDefinitionContext ctx) {
54 Properties result = new Properties();
55 if (null == ctx || null == ctx.properties()) {
56 return result;
57 }
58 for (PropertyContext each : ctx.properties().property()) {
59 result.setProperty(QuoteCharacter.unwrapAndTrimText(each.key.getText()), QuoteCharacter.unwrapAndTrimText(each.value.getText()));
60 }
61 return result;
62 }
63 }