This is an automated email from the ASF dual-hosted git repository.

panjuan 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 651de01caef Refactor DropShardingTableRuleStatement (#22294)
651de01caef is described below

commit 651de01caef76f97b40ef97b8b9ab55b79e2b4ee
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Nov 20 20:45:34 2022 +0800

    Refactor DropShardingTableRuleStatement (#22294)
---
 .../DropShardingTableRuleStatementUpdaterTest.java | 19 +++++------
 .../core/ShardingDistSQLStatementVisitor.java      | 39 +++++++++-------------
 .../parser/segment/AbstractTableRuleSegment.java   |  5 ++-
 .../statement/DropShardingTableRuleStatement.java  |  9 ++---
 4 files changed, 29 insertions(+), 43 deletions(-)

diff --git 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropShardingTableRuleStatementUpdaterTest.java
 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropShardingTableRuleStatementUpdaterTest.java
index 9904bbba55f..c7f5caf1131 100644
--- 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropShardingTableRuleStatementUpdaterTest.java
+++ 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropShardingTableRuleStatementUpdaterTest.java
@@ -57,30 +57,30 @@ public final class 
DropShardingTableRuleStatementUpdaterTest {
     
     @Test(expected = MissingRequiredRuleException.class)
     public void assertCheckSQLStatementWithoutCurrentRule() throws 
RuleDefinitionViolationException {
-        updater.checkSQLStatement(database, new 
DropShardingTableRuleStatement(Collections.emptyList()), null);
+        updater.checkSQLStatement(database, new 
DropShardingTableRuleStatement(false, Collections.emptyList(), false), null);
     }
     
     @Test(expected = MissingRequiredRuleException.class)
     public void assertCheckSQLStatementWithoutExistedTableRule() throws 
RuleDefinitionViolationException {
-        updater.checkSQLStatement(database, createSQLStatement("t_order"), new 
ShardingRuleConfiguration());
+        updater.checkSQLStatement(database, createSQLStatement("t_order", 
false), new ShardingRuleConfiguration());
     }
     
     @Test
     public void assertCheckSQLStatementWithIfExists() throws 
RuleDefinitionViolationException {
-        DropShardingTableRuleStatement statement = new 
DropShardingTableRuleStatement(true, Collections.singleton(new 
TableNameSegment(0, 3, new IdentifierValue("t_order_if_exists"))));
+        DropShardingTableRuleStatement statement = new 
DropShardingTableRuleStatement(true, Collections.singleton(new 
TableNameSegment(0, 3, new IdentifierValue("t_order_if_exists"))), false);
         updater.checkSQLStatement(database, statement, null);
         updater.checkSQLStatement(database, statement, new 
ShardingRuleConfiguration());
     }
     
     @Test(expected = RuleInUsedException.class)
     public void assertCheckSQLStatementWithBindingTableRule() throws 
RuleDefinitionViolationException {
-        updater.checkSQLStatement(database, 
createSQLStatement("t_order_item"), createCurrentRuleConfiguration());
+        updater.checkSQLStatement(database, createSQLStatement("t_order_item", 
false), createCurrentRuleConfiguration());
     }
     
     @Test
     public void assertUpdate() {
         ShardingRuleConfiguration currentRuleConfig = 
createCurrentRuleConfiguration();
-        updater.updateCurrentRuleConfiguration(createSQLStatement("t_order"), 
currentRuleConfig);
+        updater.updateCurrentRuleConfiguration(createSQLStatement("t_order", 
false), currentRuleConfig);
         assertFalse(getShardingTables(currentRuleConfig).contains("t_order"));
         
assertTrue(getBindingTables(currentRuleConfig).contains("t_order_item"));
     }
@@ -88,7 +88,7 @@ public final class DropShardingTableRuleStatementUpdaterTest {
     @Test
     public void assertUpdateWithDifferentCase() {
         ShardingRuleConfiguration currentRuleConfig = 
createCurrentRuleConfiguration();
-        updater.updateCurrentRuleConfiguration(createSQLStatement("T_ORDER"), 
currentRuleConfig);
+        updater.updateCurrentRuleConfiguration(createSQLStatement("T_ORDER", 
false), currentRuleConfig);
         assertFalse(getShardingTables(currentRuleConfig).contains("t_order"));
         
assertTrue(getBindingTables(currentRuleConfig).contains("t_order_item"));
     }
@@ -96,16 +96,15 @@ public final class 
DropShardingTableRuleStatementUpdaterTest {
     @Test
     public void assertDropRuleAndUnusedAlgorithm() {
         ShardingRuleConfiguration currentRuleConfig = 
createCurrentRuleConfiguration();
-        DropShardingTableRuleStatement sqlStatement = 
createSQLStatement("t_order");
-        sqlStatement.setDropUnusedAlgorithms(true);
+        DropShardingTableRuleStatement sqlStatement = 
createSQLStatement("t_order", true);
         updater.updateCurrentRuleConfiguration(sqlStatement, 
currentRuleConfig);
         assertFalse(getShardingTables(currentRuleConfig).contains("t_order"));
         
assertTrue(getBindingTables(currentRuleConfig).contains("t_order_item"));
         assertThat(currentRuleConfig.getShardingAlgorithms().size(), is(2));
     }
     
-    private DropShardingTableRuleStatement createSQLStatement(final String 
tableName) {
-        return new DropShardingTableRuleStatement(Collections.singleton(new 
TableNameSegment(0, 3, new IdentifierValue(tableName))));
+    private DropShardingTableRuleStatement createSQLStatement(final String 
tableName, final boolean dropUnusedAlgorithms) {
+        return new DropShardingTableRuleStatement(false, 
Collections.singleton(new TableNameSegment(0, 3, new 
IdentifierValue(tableName))), dropUnusedAlgorithms);
     }
     
     private ShardingRuleConfiguration createCurrentRuleConfiguration() {
diff --git 
a/features/sharding/distsql/parser/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitor.java
 
b/features/sharding/distsql/parser/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitor.java
index c1a5a66a53d..436f9d37b22 100644
--- 
a/features/sharding/distsql/parser/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitor.java
+++ 
b/features/sharding/distsql/parser/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitor.java
@@ -144,12 +144,9 @@ public final class ShardingDistSQLStatementVisitor extends 
ShardingDistSQLStatem
     
     @Override
     public ASTNode visitCreateShardingTableRule(final 
CreateShardingTableRuleContext ctx) {
-        List<AbstractTableRuleSegment> tableRuleSegments = 
ctx.shardingTableRuleDefinition().stream().map(each -> 
(AbstractTableRuleSegment) visit(each))
-                .filter(Objects::nonNull).collect(Collectors.toList());
-        if (tableRuleSegments.isEmpty()) {
-            return new EmptyTableRuleSegment();
-        }
-        return new CreateShardingTableRuleStatement(tableRuleSegments);
+        Collection<AbstractTableRuleSegment> tableRuleSegments = 
ctx.shardingTableRuleDefinition().stream()
+                .map(each -> (AbstractTableRuleSegment) 
visit(each)).filter(Objects::nonNull).collect(Collectors.toList());
+        return tableRuleSegments.isEmpty() ? new EmptyTableRuleSegment() : new 
CreateShardingTableRuleStatement(tableRuleSegments);
     }
     
     @Override
@@ -158,7 +155,8 @@ public final class ShardingDistSQLStatementVisitor extends 
ShardingDistSQLStatem
     }
     
     private Collection<TableReferenceRuleSegment> 
createTableReferenceRuleSegment(final List<TableReferenceRuleDefinitionContext> 
contexts) {
-        return contexts.stream().map(each -> 
each.tableName().stream().map(this::getIdentifierValue).collect(Collectors.joining(","))).map(TableReferenceRuleSegment::new).collect(Collectors.toList());
+        return contexts.stream().map(each -> each.tableName().stream()
+                
.map(this::getIdentifierValue).collect(Collectors.joining(","))).map(TableReferenceRuleSegment::new).collect(Collectors.toList());
     }
     
     @Override
@@ -168,14 +166,14 @@ public final class ShardingDistSQLStatementVisitor 
extends ShardingDistSQLStatem
     
     @Override
     public ASTNode visitAlterShardingTableRule(final 
AlterShardingTableRuleContext ctx) {
-        List<AbstractTableRuleSegment> tableRuleSegments = 
ctx.shardingTableRuleDefinition().stream().map(each -> 
(AbstractTableRuleSegment) visit(each))
-                .filter(Objects::nonNull).collect(Collectors.toList());
+        List<AbstractTableRuleSegment> tableRuleSegments = 
ctx.shardingTableRuleDefinition().stream()
+                .map(each -> (AbstractTableRuleSegment) 
visit(each)).filter(Objects::nonNull).collect(Collectors.toList());
         return tableRuleSegments.isEmpty() ? new EmptyTableRuleSegment() : new 
AlterShardingTableRuleStatement(tableRuleSegments);
     }
     
     @Override
     public ASTNode visitShowBroadcastTableRules(final 
ShowBroadcastTableRulesContext ctx) {
-        return new 
ShowBroadcastTableRulesStatement(Objects.nonNull(ctx.databaseName()) ? 
(DatabaseSegment) visit(ctx.databaseName()) : null);
+        return new ShowBroadcastTableRulesStatement(null == ctx.databaseName() 
? null : (DatabaseSegment) visit(ctx.databaseName()));
     }
     
     @Override
@@ -189,10 +187,8 @@ public final class ShardingDistSQLStatementVisitor extends 
ShardingDistSQLStatem
     
     @Override
     public ASTNode visitDropShardingTableRule(final 
DropShardingTableRuleContext ctx) {
-        DropShardingTableRuleStatement result = new 
DropShardingTableRuleStatement(null != ctx.ifExists(),
-                ctx.tableName().stream().map(each -> (TableNameSegment) 
visit(each)).collect(Collectors.toList()));
-        result.setDropUnusedAlgorithms(null != 
ctx.withUnusedAlgorithmsClause());
-        return result;
+        return new DropShardingTableRuleStatement(null != ctx.ifExists(),
+                ctx.tableName().stream().map(each -> (TableNameSegment) 
visit(each)).collect(Collectors.toList()), null != 
ctx.withUnusedAlgorithmsClause());
     }
     
     @Override
@@ -341,8 +337,7 @@ public final class ShardingDistSQLStatementVisitor extends 
ShardingDistSQLStatem
         Collection<ShardingAuditorSegment> shardingAuditorSegments = new 
ArrayList<>();
         Collection<String> auditorNames = new ArrayList<>();
         for (SingleAuditDefinitionContext each : 
ctx.multiAuditDefinition().singleAuditDefinition()) {
-            ShardingAuditorSegment segment = new 
ShardingAuditorSegment(getIdentifierValue(each.auditorName()), 
(AlgorithmSegment) visit(each.algorithmDefinition()));
-            shardingAuditorSegments.add(segment);
+            shardingAuditorSegments.add(new 
ShardingAuditorSegment(getIdentifierValue(each.auditorName()), 
(AlgorithmSegment) visit(each.algorithmDefinition())));
             auditorNames.add(getIdentifierValue(each.auditorName()));
         }
         return new AuditStrategySegment(auditorNames, shardingAuditorSegments, 
Boolean.parseBoolean(getIdentifierValue(ctx.auditAllowHintDisable())));
@@ -382,10 +377,7 @@ public final class ShardingDistSQLStatementVisitor extends 
ShardingDistSQLStatem
             return null;
         }
         String value = new IdentifierValue(context.getText(), 
"[]'").getValue();
-        if (value.startsWith("'")) {
-            return value.substring(1, value.length() - 1);
-        }
-        return value.trim();
+        return value.startsWith("'") ? value.substring(1, value.length() - 1) 
: value.trim();
     }
     
     private Properties getProperties(final PropertiesDefinitionContext ctx) {
@@ -459,8 +451,7 @@ public final class ShardingDistSQLStatementVisitor extends 
ShardingDistSQLStatem
     }
     
     private String buildShardingColumn(final 
AutoShardingColumnDefinitionContext ctx) {
-        String result = null != ctx.shardingColumn() ? 
getIdentifierValue(ctx.shardingColumn().columnName()) : "";
-        return result.isEmpty() ? null : result;
+        return null == ctx.shardingColumn() ? null : 
getIdentifierValue(ctx.shardingColumn().columnName());
     }
     
     private String buildShardingColumn(final ShardingColumnDefinitionContext 
ctx) {
@@ -481,8 +472,8 @@ public final class ShardingDistSQLStatementVisitor extends 
ShardingDistSQLStatem
     
     @Override
     public ASTNode visitShowShardingTableRulesUsedAlgorithm(final 
ShowShardingTableRulesUsedAlgorithmContext ctx) {
-        return new 
ShowShardingTableRulesUsedAlgorithmStatement(getIdentifierValue(ctx.shardingAlgorithmName()),
-                Objects.nonNull(ctx.databaseName()) ? (DatabaseSegment) 
visit(ctx.databaseName()) : null);
+        return new ShowShardingTableRulesUsedAlgorithmStatement(
+                getIdentifierValue(ctx.shardingAlgorithmName()), 
Objects.nonNull(ctx.databaseName()) ? (DatabaseSegment) 
visit(ctx.databaseName()) : null);
     }
     
     @Override
diff --git 
a/features/sharding/distsql/statement/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/segment/AbstractTableRuleSegment.java
 
b/features/sharding/distsql/statement/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/segment/AbstractTableRuleSegment.java
index 344bcc07247..5cd1fdaef20 100644
--- 
a/features/sharding/distsql/statement/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/segment/AbstractTableRuleSegment.java
+++ 
b/features/sharding/distsql/statement/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/segment/AbstractTableRuleSegment.java
@@ -28,19 +28,18 @@ import java.util.Collection;
 /**
  * Abstract table rule segment.
  */
-@RequiredArgsConstructor
 @AllArgsConstructor
+@RequiredArgsConstructor
 @Getter
+@Setter
 public abstract class AbstractTableRuleSegment implements ASTNode {
     
     private final String logicTable;
     
     private final Collection<String> dataSourceNodes;
     
-    @Setter
     private KeyGenerateStrategySegment keyGenerateStrategySegment;
     
-    @Setter
     private AuditStrategySegment auditStrategySegment;
     
     /**
diff --git 
a/features/sharding/distsql/statement/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement/DropShardingTableRuleStatement.java
 
b/features/sharding/distsql/statement/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement/DropShardingTableRuleStatement.java
index 4f80f766537..918d2030db3 100644
--- 
a/features/sharding/distsql/statement/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement/DropShardingTableRuleStatement.java
+++ 
b/features/sharding/distsql/statement/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement/DropShardingTableRuleStatement.java
@@ -18,8 +18,6 @@
 package org.apache.shardingsphere.sharding.distsql.parser.statement;
 
 import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-import lombok.Setter;
 import 
org.apache.shardingsphere.distsql.parser.statement.rdl.drop.DropRuleStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.TableNameSegment;
 
@@ -28,17 +26,16 @@ import java.util.Collection;
 /**
  * Drop sharding table rule statement.
  */
-@RequiredArgsConstructor
 @Getter
 public final class DropShardingTableRuleStatement extends DropRuleStatement {
     
     private final Collection<TableNameSegment> tableNames;
     
-    @Setter
-    private boolean dropUnusedAlgorithms;
+    private final boolean dropUnusedAlgorithms;
     
-    public DropShardingTableRuleStatement(final boolean ifExists, final 
Collection<TableNameSegment> tableNames) {
+    public DropShardingTableRuleStatement(final boolean ifExists, final 
Collection<TableNameSegment> tableNames, final boolean dropUnusedAlgorithms) {
         super(ifExists);
         this.tableNames = tableNames;
+        this.dropUnusedAlgorithms = dropUnusedAlgorithms;
     }
 }

Reply via email to