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

duanzhengqiang 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 e2ca9293b2f Refactor EncryptAssignmentTokenGenerator (#26719)
e2ca9293b2f is described below

commit e2ca9293b2fb425f345b137af90c3356fe4aa96e
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Jun 30 21:07:20 2023 +0800

    Refactor EncryptAssignmentTokenGenerator (#26719)
    
    * Refactor EncryptAlterTableTokenGenerator
    
    * Refactor EncryptAlterTableTokenGenerator
    
    * Refactor EncryptAssignmentTokenGenerator
    
    * Refactor EncryptAssignmentTokenGenerator
---
 .../generator/EncryptAlterTableTokenGenerator.java |  4 +-
 .../generator/EncryptAssignmentTokenGenerator.java | 45 ++++++++++------------
 2 files changed, 22 insertions(+), 27 deletions(-)

diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptAlterTableTokenGenerator.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptAlterTableTokenGenerator.java
index d91bdd7b3f9..cc20b84ce05 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptAlterTableTokenGenerator.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptAlterTableTokenGenerator.java
@@ -221,9 +221,9 @@ public final class EncryptAlterTableTokenGenerator 
implements CollectionSQLToken
         result.add(new 
EncryptAlterTableToken(segment.getColumnDefinition().getColumnName().getStopIndex()
 + 1, segment.getColumnDefinition().getColumnName().getStopIndex(),
                 encryptColumn.getCipher().getName(), null));
         previousEncryptColumn.getAssistedQuery().map(optional -> new 
EncryptAlterTableToken(segment.getStopIndex() + 1, 
segment.getColumnDefinition().getColumnName().getStopIndex(),
-                
encryptColumn.getAssistedQuery().map(AssistedQueryColumnItem::getName).orElse(""),
 ", CHANGE COLUMN " + optional.getName())).ifPresent(result::add);
+                        
encryptColumn.getAssistedQuery().map(AssistedQueryColumnItem::getName).orElse(""),
 ", CHANGE COLUMN " + optional.getName())).ifPresent(result::add);
         previousEncryptColumn.getLikeQuery().map(optional -> new 
EncryptAlterTableToken(segment.getStopIndex() + 1, 
segment.getColumnDefinition().getColumnName().getStopIndex(),
-                
encryptColumn.getLikeQuery().map(LikeQueryColumnItem::getName).orElse(""), ", 
CHANGE COLUMN " + optional.getName())).ifPresent(result::add);
+                        
encryptColumn.getLikeQuery().map(LikeQueryColumnItem::getName).orElse(""), ", 
CHANGE COLUMN " + optional.getName())).ifPresent(result::add);
         return result;
     }
     
diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptAssignmentTokenGenerator.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptAssignmentTokenGenerator.java
index ebdd52eee48..00af5d34d2d 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptAssignmentTokenGenerator.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptAssignmentTokenGenerator.java
@@ -73,8 +73,7 @@ public final class EncryptAssignmentTokenGenerator implements 
CollectionSQLToken
         for (AssignmentSegment each : 
getSetAssignmentSegment(sqlStatementContext.getSqlStatement()).getAssignments())
 {
             String columnName = 
each.getColumns().get(0).getIdentifier().getValue();
             if (encryptTable.isEncryptColumn(columnName)) {
-                EncryptColumn encryptColumn = 
encryptTable.getEncryptColumn(columnName);
-                generateSQLToken(schemaName, encryptTable, encryptColumn, 
each).ifPresent(result::add);
+                generateSQLToken(schemaName, encryptTable.getTable(), 
encryptTable.getEncryptColumn(columnName), each).ifPresent(result::add);
             }
         }
         return result;
@@ -89,44 +88,41 @@ public final class EncryptAssignmentTokenGenerator 
implements CollectionSQLToken
         return ((UpdateStatement) sqlStatement).getSetAssignment();
     }
     
-    private Optional<EncryptAssignmentToken> generateSQLToken(final String 
schemaName, final EncryptTable encryptTable, final EncryptColumn encryptColumn, 
final AssignmentSegment assignmentSegment) {
-        if (assignmentSegment.getValue() instanceof 
ParameterMarkerExpressionSegment) {
-            return Optional.of(generateParameterSQLToken(encryptTable, 
assignmentSegment));
+    private Optional<EncryptAssignmentToken> generateSQLToken(final String 
schemaName, final String tableName, final EncryptColumn encryptColumn, final 
AssignmentSegment segment) {
+        if (segment.getValue() instanceof ParameterMarkerExpressionSegment) {
+            return Optional.of(generateParameterSQLToken(encryptColumn, 
segment));
         }
-        if (assignmentSegment.getValue() instanceof LiteralExpressionSegment) {
-            return Optional.of(generateLiteralSQLToken(schemaName, 
encryptTable.getTable(), encryptColumn, assignmentSegment));
+        if (segment.getValue() instanceof LiteralExpressionSegment) {
+            return Optional.of(generateLiteralSQLToken(schemaName, tableName, 
encryptColumn, segment));
         }
         return Optional.empty();
     }
     
-    private EncryptAssignmentToken generateParameterSQLToken(final 
EncryptTable encryptTable, final AssignmentSegment assignmentSegment) {
-        EncryptParameterAssignmentToken result = new 
EncryptParameterAssignmentToken(assignmentSegment.getColumns().get(0).getStartIndex(),
 assignmentSegment.getStopIndex());
-        String columnName = 
assignmentSegment.getColumns().get(0).getIdentifier().getValue();
-        EncryptColumn encryptColumn = 
encryptTable.getEncryptColumn(columnName);
+    private EncryptAssignmentToken generateParameterSQLToken(final 
EncryptColumn encryptColumn, final AssignmentSegment segment) {
+        EncryptParameterAssignmentToken result = new 
EncryptParameterAssignmentToken(segment.getColumns().get(0).getStartIndex(), 
segment.getStopIndex());
         result.addColumnName(encryptColumn.getCipher().getName());
         encryptColumn.getAssistedQuery().ifPresent(optional -> 
result.addColumnName(optional.getName()));
         encryptColumn.getLikeQuery().ifPresent(optional -> 
result.addColumnName(optional.getName()));
         return result;
     }
     
-    private EncryptAssignmentToken generateLiteralSQLToken(final String 
schemaName, final String tableName, final EncryptColumn encryptColumn, final 
AssignmentSegment assignmentSegment) {
-        EncryptLiteralAssignmentToken result = new 
EncryptLiteralAssignmentToken(assignmentSegment.getColumns().get(0).getStartIndex(),
 assignmentSegment.getStopIndex());
-        addCipherAssignment(schemaName, tableName, encryptColumn, 
assignmentSegment, result);
-        addAssistedQueryAssignment(schemaName, tableName, encryptColumn, 
assignmentSegment, result);
-        addLikeAssignment(schemaName, tableName, encryptColumn, 
assignmentSegment, result);
+    private EncryptAssignmentToken generateLiteralSQLToken(final String 
schemaName, final String tableName, final EncryptColumn encryptColumn, final 
AssignmentSegment segment) {
+        EncryptLiteralAssignmentToken result = new 
EncryptLiteralAssignmentToken(segment.getColumns().get(0).getStartIndex(), 
segment.getStopIndex());
+        addCipherAssignment(schemaName, tableName, encryptColumn, segment, 
result);
+        addAssistedQueryAssignment(schemaName, tableName, encryptColumn, 
segment, result);
+        addLikeAssignment(schemaName, tableName, encryptColumn, segment, 
result);
         return result;
     }
     
-    private void addCipherAssignment(final String schemaName, final String 
tableName,
-                                     final EncryptColumn encryptColumn, final 
AssignmentSegment assignmentSegment, final EncryptLiteralAssignmentToken token) 
{
-        Object originalValue = ((LiteralExpressionSegment) 
assignmentSegment.getValue()).getLiterals();
+    private void addCipherAssignment(final String schemaName, final String 
tableName, final EncryptColumn encryptColumn, final AssignmentSegment segment, 
final EncryptLiteralAssignmentToken token) {
+        Object originalValue = ((LiteralExpressionSegment) 
segment.getValue()).getLiterals();
         Object cipherValue = encryptColumn.getCipher().encrypt(databaseName, 
schemaName, tableName, encryptColumn.getName(), 
Collections.singletonList(originalValue)).iterator().next();
         token.addAssignment(encryptColumn.getCipher().getName(), cipherValue);
     }
     
     private void addAssistedQueryAssignment(final String schemaName, final 
String tableName, final EncryptColumn encryptColumn,
-                                            final AssignmentSegment 
assignmentSegment, final EncryptLiteralAssignmentToken token) {
-        Object originalValue = ((LiteralExpressionSegment) 
assignmentSegment.getValue()).getLiterals();
+                                            final AssignmentSegment segment, 
final EncryptLiteralAssignmentToken token) {
+        Object originalValue = ((LiteralExpressionSegment) 
segment.getValue()).getLiterals();
         if (encryptColumn.getAssistedQuery().isPresent()) {
             Object assistedQueryValue = 
encryptColumn.getAssistedQuery().get().encrypt(
                     databaseName, schemaName, tableName, 
encryptColumn.getName(), 
Collections.singletonList(originalValue)).iterator().next();
@@ -134,12 +130,11 @@ public final class EncryptAssignmentTokenGenerator 
implements CollectionSQLToken
         }
     }
     
-    private void addLikeAssignment(final String schemaName, final String 
tableName, final EncryptColumn encryptColumn,
-                                   final AssignmentSegment assignmentSegment, 
final EncryptLiteralAssignmentToken token) {
-        Object originalValue = ((LiteralExpressionSegment) 
assignmentSegment.getValue()).getLiterals();
+    private void addLikeAssignment(final String schemaName, final String 
tableName, final EncryptColumn encryptColumn, final AssignmentSegment segment, 
final EncryptLiteralAssignmentToken token) {
+        Object originalValue = ((LiteralExpressionSegment) 
segment.getValue()).getLiterals();
         if (encryptColumn.getLikeQuery().isPresent()) {
             Object assistedQueryValue = 
encryptColumn.getLikeQuery().get().encrypt(databaseName, schemaName,
-                    tableName, 
assignmentSegment.getColumns().get(0).getIdentifier().getValue(), 
Collections.singletonList(originalValue)).iterator().next();
+                    tableName, 
segment.getColumns().get(0).getIdentifier().getValue(), 
Collections.singletonList(originalValue)).iterator().next();
             token.addAssignment(encryptColumn.getLikeQuery().get().getName(), 
assistedQueryValue);
         }
     }

Reply via email to