Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
Shardingsphere
提交
758dea85
Shardingsphere
项目概览
apache
/
Shardingsphere
通知
56
Star
3
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Shardingsphere
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
758dea85
编写于
10月 30, 2019
作者:
L
Liang Zhang
提交者:
GitHub
10月 30, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add basic encrypt token generator to simplify code (#3403)
* add BaseEncryptSQLTokenGenerator * add aware package
上级
c7fcb4cb
变更
25
隐藏空白更改
内联
并排
Showing
25 changed file
with
132 addition
and
116 deletion
+132
-116
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/aware/EncryptRuleAware.java
.../core/rewrite/feature/encrypt/aware/EncryptRuleAware.java
+1
-1
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/aware/QueryWithCipherColumnAware.java
...ite/feature/encrypt/aware/QueryWithCipherColumnAware.java
+1
-1
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/parameter/EncryptParameterRewriterBuilder.java
...re/encrypt/parameter/EncryptParameterRewriterBuilder.java
+2
-2
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/parameter/impl/EncryptAssignmentParameterRewriter.java
...pt/parameter/impl/EncryptAssignmentParameterRewriter.java
+1
-1
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/parameter/impl/EncryptInsertValueParameterRewriter.java
...t/parameter/impl/EncryptInsertValueParameterRewriter.java
+1
-1
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/parameter/impl/EncryptPredicateParameterRewriter.java
...ypt/parameter/impl/EncryptPredicateParameterRewriter.java
+2
-2
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/token/EncryptTokenGenerateBuilder.java
...te/feature/encrypt/token/EncryptTokenGenerateBuilder.java
+2
-2
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/token/generator/BaseEncryptSQLTokenGenerator.java
...encrypt/token/generator/BaseEncryptSQLTokenGenerator.java
+53
-0
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/token/generator/impl/AssistQueryAndPlainInsertColumnsTokenGenerator.java
.../impl/AssistQueryAndPlainInsertColumnsTokenGenerator.java
+6
-12
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/token/generator/impl/EncryptAssignmentTokenGenerator.java
...token/generator/impl/EncryptAssignmentTokenGenerator.java
+12
-21
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/token/generator/impl/EncryptForUseDefaultInsertColumnsTokenGenerator.java
...impl/EncryptForUseDefaultInsertColumnsTokenGenerator.java
+6
-10
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/token/generator/impl/EncryptInsertValuesTokenGenerator.java
...ken/generator/impl/EncryptInsertValuesTokenGenerator.java
+7
-11
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/token/generator/impl/EncryptPredicateColumnTokenGenerator.java
.../generator/impl/EncryptPredicateColumnTokenGenerator.java
+5
-8
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/token/generator/impl/EncryptPredicateRightValueTokenGenerator.java
...erator/impl/EncryptPredicateRightValueTokenGenerator.java
+8
-11
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/token/generator/impl/EncryptProjectionTokenGenerator.java
...token/generator/impl/EncryptProjectionTokenGenerator.java
+8
-11
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/token/generator/impl/InsertCipherNameTokenGenerator.java
.../token/generator/impl/InsertCipherNameTokenGenerator.java
+6
-11
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/sharding/aware/SQLRouteResultAware.java
...e/rewrite/feature/sharding/aware/SQLRouteResultAware.java
+1
-1
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/sharding/aware/ShardingRuleAware.java
...ore/rewrite/feature/sharding/aware/ShardingRuleAware.java
+1
-1
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/sharding/parameter/ShardingParameterRewriterBuilder.java
.../sharding/parameter/ShardingParameterRewriterBuilder.java
+2
-2
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/sharding/parameter/impl/ShardingGeneratedKeyInsertValueParameterRewriter.java
...mpl/ShardingGeneratedKeyInsertValueParameterRewriter.java
+1
-1
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/sharding/parameter/impl/ShardingPaginationParameterRewriter.java
...g/parameter/impl/ShardingPaginationParameterRewriter.java
+1
-1
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/sharding/token/ShardingTokenGenerateBuilder.java
.../feature/sharding/token/ShardingTokenGenerateBuilder.java
+2
-2
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/sharding/token/generator/impl/InsertValuesTokenGenerator.java
...ding/token/generator/impl/InsertValuesTokenGenerator.java
+1
-1
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/sharding/token/generator/impl/TableTokenGenerator.java
...re/sharding/token/generator/impl/TableTokenGenerator.java
+1
-1
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/sharding/token/generator/impl/keygen/BaseGeneratedKeyTokenGenerator.java
...generator/impl/keygen/BaseGeneratedKeyTokenGenerator.java
+1
-1
未找到文件。
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/
token/generator
/EncryptRuleAware.java
→
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/
aware
/EncryptRuleAware.java
浏览文件 @
758dea85
...
...
@@ -15,7 +15,7 @@
* limitations under the License.
*/
package
org.apache.shardingsphere.core.rewrite.feature.encrypt.
token.generator
;
package
org.apache.shardingsphere.core.rewrite.feature.encrypt.
aware
;
import
org.apache.shardingsphere.core.rule.EncryptRule
;
...
...
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/
token/generator
/QueryWithCipherColumnAware.java
→
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/
aware
/QueryWithCipherColumnAware.java
浏览文件 @
758dea85
...
...
@@ -15,7 +15,7 @@
* limitations under the License.
*/
package
org.apache.shardingsphere.core.rewrite.feature.encrypt.
token.generator
;
package
org.apache.shardingsphere.core.rewrite.feature.encrypt.
aware
;
/**
* Query with cipher column aware.
...
...
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/parameter/EncryptParameterRewriterBuilder.java
浏览文件 @
758dea85
...
...
@@ -22,8 +22,8 @@ import org.apache.shardingsphere.core.metadata.table.TableMetas;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.parameter.impl.EncryptAssignmentParameterRewriter
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.parameter.impl.EncryptInsertValueParameterRewriter
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.parameter.impl.EncryptPredicateParameterRewriter
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.
token.generator
.EncryptRuleAware
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.
token.generator
.QueryWithCipherColumnAware
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.
aware
.EncryptRuleAware
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.
aware
.QueryWithCipherColumnAware
;
import
org.apache.shardingsphere.core.rewrite.parameter.rewriter.ParameterRewriter
;
import
org.apache.shardingsphere.core.rewrite.parameter.rewriter.ParameterRewriterBuilder
;
import
org.apache.shardingsphere.core.rewrite.sql.token.generator.aware.TableMetasAware
;
...
...
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/parameter/impl/EncryptAssignmentParameterRewriter.java
浏览文件 @
758dea85
...
...
@@ -28,7 +28,7 @@ import org.apache.shardingsphere.core.parse.sql.statement.dml.InsertStatement;
import
org.apache.shardingsphere.core.parse.sql.statement.dml.UpdateStatement
;
import
org.apache.shardingsphere.core.preprocessor.statement.SQLStatementContext
;
import
org.apache.shardingsphere.core.preprocessor.statement.impl.InsertSQLStatementContext
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.
token.generator
.EncryptRuleAware
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.
aware
.EncryptRuleAware
;
import
org.apache.shardingsphere.core.rewrite.parameter.builder.ParameterBuilder
;
import
org.apache.shardingsphere.core.rewrite.parameter.builder.impl.GroupedParameterBuilder
;
import
org.apache.shardingsphere.core.rewrite.parameter.builder.impl.StandardParameterBuilder
;
...
...
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/parameter/impl/EncryptInsertValueParameterRewriter.java
浏览文件 @
758dea85
...
...
@@ -23,7 +23,7 @@ import lombok.Setter;
import
org.apache.shardingsphere.core.parse.sql.statement.dml.InsertStatement
;
import
org.apache.shardingsphere.core.preprocessor.statement.SQLStatementContext
;
import
org.apache.shardingsphere.core.preprocessor.statement.impl.InsertSQLStatementContext
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.
token.generator
.EncryptRuleAware
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.
aware
.EncryptRuleAware
;
import
org.apache.shardingsphere.core.rewrite.parameter.builder.ParameterBuilder
;
import
org.apache.shardingsphere.core.rewrite.parameter.builder.impl.GroupedParameterBuilder
;
import
org.apache.shardingsphere.core.rewrite.parameter.builder.impl.StandardParameterBuilder
;
...
...
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/parameter/impl/EncryptPredicateParameterRewriter.java
浏览文件 @
758dea85
...
...
@@ -25,8 +25,8 @@ import org.apache.shardingsphere.core.rewrite.feature.encrypt.EncryptConditionEn
import
org.apache.shardingsphere.core.rewrite.parameter.builder.ParameterBuilder
;
import
org.apache.shardingsphere.core.rewrite.parameter.builder.impl.StandardParameterBuilder
;
import
org.apache.shardingsphere.core.rewrite.parameter.rewriter.ParameterRewriter
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.
token.generator
.EncryptRuleAware
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.
token.generator
.QueryWithCipherColumnAware
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.
aware
.EncryptRuleAware
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.
aware
.QueryWithCipherColumnAware
;
import
org.apache.shardingsphere.core.rewrite.sql.token.generator.aware.TableMetasAware
;
import
org.apache.shardingsphere.core.rule.EncryptRule
;
...
...
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/token/EncryptTokenGenerateBuilder.java
浏览文件 @
758dea85
...
...
@@ -18,8 +18,8 @@
package
org.apache.shardingsphere.core.rewrite.feature.encrypt.token
;
import
lombok.RequiredArgsConstructor
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.
token.generator
.EncryptRuleAware
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.
token.generator
.QueryWithCipherColumnAware
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.
aware
.EncryptRuleAware
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.
aware
.QueryWithCipherColumnAware
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.token.generator.impl.AssistQueryAndPlainInsertColumnsTokenGenerator
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.token.generator.impl.EncryptAssignmentTokenGenerator
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.token.generator.impl.EncryptForUseDefaultInsertColumnsTokenGenerator
;
...
...
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/token/generator/BaseEncryptSQLTokenGenerator.java
0 → 100644
浏览文件 @
758dea85
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.apache.shardingsphere.core.rewrite.feature.encrypt.token.generator
;
import
lombok.Getter
;
import
lombok.Setter
;
import
org.apache.shardingsphere.core.preprocessor.statement.SQLStatementContext
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.aware.EncryptRuleAware
;
import
org.apache.shardingsphere.core.rewrite.sql.token.generator.SQLTokenGenerator
;
import
org.apache.shardingsphere.core.rule.EncryptRule
;
/**
* Base SQL token generator for encrypt.
*
* @author zhangliang
*/
@Getter
@Setter
public
abstract
class
BaseEncryptSQLTokenGenerator
implements
SQLTokenGenerator
,
EncryptRuleAware
{
private
EncryptRule
encryptRule
;
@Override
public
final
boolean
isGenerateSQLToken
(
final
SQLStatementContext
sqlStatementContext
)
{
return
isGenerateSQLTokenForEncrypt
(
sqlStatementContext
)
&&
needEncrypt
(
sqlStatementContext
);
}
protected
abstract
boolean
isGenerateSQLTokenForEncrypt
(
SQLStatementContext
sqlStatementContext
);
private
boolean
needEncrypt
(
final
SQLStatementContext
sqlStatementContext
)
{
for
(
String
each
:
sqlStatementContext
.
getTablesContext
().
getTableNames
())
{
if
(
encryptRule
.
findEncryptTable
(
each
).
isPresent
())
{
return
true
;
}
}
return
false
;
}
}
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/token/generator/impl/AssistQueryAndPlainInsertColumnsTokenGenerator.java
浏览文件 @
758dea85
...
...
@@ -19,16 +19,14 @@ package org.apache.shardingsphere.core.rewrite.feature.encrypt.token.generator.i
import
com.google.common.base.Optional
;
import
com.google.common.base.Preconditions
;
import
lombok.Setter
;
import
org.apache.shardingsphere.core.parse.sql.segment.dml.column.ColumnSegment
;
import
org.apache.shardingsphere.core.parse.sql.segment.dml.column.InsertColumnsSegment
;
import
org.apache.shardingsphere.core.parse.sql.statement.dml.InsertStatement
;
import
org.apache.shardingsphere.core.preprocessor.statement.SQLStatementContext
;
import
org.apache.shardingsphere.core.preprocessor.statement.impl.InsertSQLStatementContext
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.token.generator.EncryptRuleAware
;
import
org.apache.shardingsphere.core.rewrite.sql.token.pojo.generic.InsertColumnsToken
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.token.generator.BaseEncryptSQLTokenGenerator
;
import
org.apache.shardingsphere.core.rewrite.sql.token.generator.CollectionSQLTokenGenerator
;
import
org.apache.shardingsphere.core.r
ule.EncryptRule
;
import
org.apache.shardingsphere.core.r
ewrite.sql.token.pojo.generic.InsertColumnsToken
;
import
org.apache.shardingsphere.core.strategy.encrypt.EncryptTable
;
import
java.util.Collection
;
...
...
@@ -41,22 +39,18 @@ import java.util.List;
* @author panjuan
* @author zhangliang
*/
@Setter
public
final
class
AssistQueryAndPlainInsertColumnsTokenGenerator
implements
CollectionSQLTokenGenerator
,
EncryptRuleAware
{
private
EncryptRule
encryptRule
;
public
final
class
AssistQueryAndPlainInsertColumnsTokenGenerator
extends
BaseEncryptSQLTokenGenerator
implements
CollectionSQLTokenGenerator
{
@Override
p
ublic
boolean
isGenerateSQLToken
(
final
SQLStatementContext
sqlStatementContext
)
{
p
rotected
boolean
isGenerateSQLTokenForEncrypt
(
final
SQLStatementContext
sqlStatementContext
)
{
return
sqlStatementContext
instanceof
InsertSQLStatementContext
&&
sqlStatementContext
.
getSqlStatement
().
findSQLSegment
(
InsertColumnsSegment
.
class
).
isPresent
()
&&
!((
InsertStatement
)
sqlStatementContext
.
getSqlStatement
()).
useDefaultColumns
()
&&
encryptRule
.
findEncryptTable
(
sqlStatementContext
.
getTablesContext
().
getSingleTableName
()).
isPresent
();
&&
!((
InsertStatement
)
sqlStatementContext
.
getSqlStatement
()).
useDefaultColumns
();
}
@Override
public
Collection
<
InsertColumnsToken
>
generateSQLTokens
(
final
SQLStatementContext
sqlStatementContext
)
{
Collection
<
InsertColumnsToken
>
result
=
new
LinkedList
<>();
Optional
<
EncryptTable
>
encryptTable
=
encryptRule
.
findEncryptTable
(
sqlStatementContext
.
getTablesContext
().
getSingleTableName
());
Optional
<
EncryptTable
>
encryptTable
=
getEncryptRule
()
.
findEncryptTable
(
sqlStatementContext
.
getTablesContext
().
getSingleTableName
());
Preconditions
.
checkState
(
encryptTable
.
isPresent
());
for
(
ColumnSegment
each
:
((
InsertStatement
)
sqlStatementContext
.
getSqlStatement
()).
getColumns
())
{
List
<
String
>
columns
=
getColumns
(
encryptTable
.
get
(),
each
);
...
...
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/token/generator/impl/EncryptAssignmentTokenGenerator.java
浏览文件 @
758dea85
...
...
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.core.rewrite.feature.encrypt.token.generator.i
import
com.google.common.base.Optional
;
import
com.google.common.base.Preconditions
;
import
lombok.Setter
;
import
org.apache.shardingsphere.core.parse.sql.segment.dml.assignment.AssignmentSegment
;
import
org.apache.shardingsphere.core.parse.sql.segment.dml.assignment.SetAssignmentsSegment
;
import
org.apache.shardingsphere.core.parse.sql.segment.dml.expr.simple.LiteralExpressionSegment
;
...
...
@@ -29,12 +28,11 @@ import org.apache.shardingsphere.core.parse.sql.statement.dml.InsertStatement;
import
org.apache.shardingsphere.core.parse.sql.statement.dml.UpdateStatement
;
import
org.apache.shardingsphere.core.preprocessor.statement.SQLStatementContext
;
import
org.apache.shardingsphere.core.preprocessor.statement.impl.InsertSQLStatementContext
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.token.generator.
EncryptRuleAware
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.token.generator.
BaseEncryptSQLTokenGenerator
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.token.pojo.EncryptAssignmentToken
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.token.pojo.EncryptLiteralAssignmentToken
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.token.pojo.EncryptParameterAssignmentToken
;
import
org.apache.shardingsphere.core.rewrite.sql.token.generator.CollectionSQLTokenGenerator
;
import
org.apache.shardingsphere.core.rule.EncryptRule
;
import
java.util.Collection
;
import
java.util.Collections
;
...
...
@@ -45,17 +43,10 @@ import java.util.LinkedList;
*
* @author panjuan
*/
@Setter
public
final
class
EncryptAssignmentTokenGenerator
implements
CollectionSQLTokenGenerator
,
EncryptRuleAware
{
private
EncryptRule
encryptRule
;
public
final
class
EncryptAssignmentTokenGenerator
extends
BaseEncryptSQLTokenGenerator
implements
CollectionSQLTokenGenerator
{
@Override
public
boolean
isGenerateSQLToken
(
final
SQLStatementContext
sqlStatementContext
)
{
return
isSetAssignmentStatement
(
sqlStatementContext
);
}
private
boolean
isSetAssignmentStatement
(
final
SQLStatementContext
sqlStatementContext
)
{
protected
boolean
isGenerateSQLTokenForEncrypt
(
final
SQLStatementContext
sqlStatementContext
)
{
return
sqlStatementContext
.
getSqlStatement
()
instanceof
UpdateStatement
||
sqlStatementContext
instanceof
InsertSQLStatementContext
&&
sqlStatementContext
.
getSqlStatement
().
findSQLSegment
(
SetAssignmentsSegment
.
class
).
isPresent
();
}
...
...
@@ -65,7 +56,7 @@ public final class EncryptAssignmentTokenGenerator implements CollectionSQLToken
Collection
<
EncryptAssignmentToken
>
result
=
new
LinkedList
<>();
String
tableName
=
sqlStatementContext
.
getTablesContext
().
getSingleTableName
();
for
(
AssignmentSegment
each
:
getSetAssignmentsSegment
(
sqlStatementContext
.
getSqlStatement
()).
getAssignments
())
{
if
(
encryptRule
.
findShardingEncryptor
(
tableName
,
each
.
getColumn
().
getName
()).
isPresent
())
{
if
(
getEncryptRule
()
.
findShardingEncryptor
(
tableName
,
each
.
getColumn
().
getName
()).
isPresent
())
{
Optional
<
EncryptAssignmentToken
>
sqlToken
=
generateSQLToken
(
tableName
,
each
);
if
(
sqlToken
.
isPresent
())
{
result
.
add
(
sqlToken
.
get
());
...
...
@@ -104,18 +95,18 @@ public final class EncryptAssignmentTokenGenerator implements CollectionSQLToken
}
private
void
addCipherColumn
(
final
String
tableName
,
final
String
columnName
,
final
EncryptParameterAssignmentToken
token
)
{
token
.
addColumnName
(
encryptRule
.
getCipherColumn
(
tableName
,
columnName
));
token
.
addColumnName
(
getEncryptRule
()
.
getCipherColumn
(
tableName
,
columnName
));
}
private
void
addAssistedQueryColumn
(
final
String
tableName
,
final
String
columnName
,
final
EncryptParameterAssignmentToken
token
)
{
Optional
<
String
>
assistedQueryColumn
=
encryptRule
.
findAssistedQueryColumn
(
tableName
,
columnName
);
Optional
<
String
>
assistedQueryColumn
=
getEncryptRule
()
.
findAssistedQueryColumn
(
tableName
,
columnName
);
if
(
assistedQueryColumn
.
isPresent
())
{
token
.
addColumnName
(
assistedQueryColumn
.
get
());
}
}
private
void
addPlainColumn
(
final
String
tableName
,
final
String
columnName
,
final
EncryptParameterAssignmentToken
token
)
{
Optional
<
String
>
plainColumn
=
encryptRule
.
findPlainColumn
(
tableName
,
columnName
);
Optional
<
String
>
plainColumn
=
getEncryptRule
()
.
findPlainColumn
(
tableName
,
columnName
);
if
(
plainColumn
.
isPresent
())
{
token
.
addColumnName
(
plainColumn
.
get
());
}
...
...
@@ -131,22 +122,22 @@ public final class EncryptAssignmentTokenGenerator implements CollectionSQLToken
private
void
addCipherAssignment
(
final
String
tableName
,
final
AssignmentSegment
assignmentSegment
,
final
EncryptLiteralAssignmentToken
token
)
{
Object
originalValue
=
((
LiteralExpressionSegment
)
assignmentSegment
.
getValue
()).
getLiterals
();
Object
cipherValue
=
encryptRule
.
getEncryptValues
(
tableName
,
assignmentSegment
.
getColumn
().
getName
(),
Collections
.
singletonList
(
originalValue
)).
iterator
().
next
();
token
.
addAssignment
(
encryptRule
.
getCipherColumn
(
tableName
,
assignmentSegment
.
getColumn
().
getName
()),
cipherValue
);
Object
cipherValue
=
getEncryptRule
()
.
getEncryptValues
(
tableName
,
assignmentSegment
.
getColumn
().
getName
(),
Collections
.
singletonList
(
originalValue
)).
iterator
().
next
();
token
.
addAssignment
(
getEncryptRule
()
.
getCipherColumn
(
tableName
,
assignmentSegment
.
getColumn
().
getName
()),
cipherValue
);
}
private
void
addAssistedQueryAssignment
(
final
String
tableName
,
final
AssignmentSegment
assignmentSegment
,
final
EncryptLiteralAssignmentToken
token
)
{
Object
originalValue
=
((
LiteralExpressionSegment
)
assignmentSegment
.
getValue
()).
getLiterals
();
Optional
<
String
>
assistedQueryColumn
=
encryptRule
.
findAssistedQueryColumn
(
tableName
,
assignmentSegment
.
getColumn
().
getName
());
Optional
<
String
>
assistedQueryColumn
=
getEncryptRule
()
.
findAssistedQueryColumn
(
tableName
,
assignmentSegment
.
getColumn
().
getName
());
if
(
assistedQueryColumn
.
isPresent
())
{
Object
assistedQueryValue
=
encryptRule
.
getEncryptAssistedQueryValues
(
tableName
,
assignmentSegment
.
getColumn
().
getName
(),
Collections
.
singletonList
(
originalValue
)).
iterator
().
next
();
Object
assistedQueryValue
=
getEncryptRule
()
.
getEncryptAssistedQueryValues
(
tableName
,
assignmentSegment
.
getColumn
().
getName
(),
Collections
.
singletonList
(
originalValue
)).
iterator
().
next
();
token
.
addAssignment
(
assistedQueryColumn
.
get
(),
assistedQueryValue
);
}
}
private
void
addPlainAssignment
(
final
String
tableName
,
final
AssignmentSegment
assignmentSegment
,
final
EncryptLiteralAssignmentToken
token
)
{
Object
originalValue
=
((
LiteralExpressionSegment
)
assignmentSegment
.
getValue
()).
getLiterals
();
Optional
<
String
>
plainColumn
=
encryptRule
.
findPlainColumn
(
tableName
,
assignmentSegment
.
getColumn
().
getName
());
Optional
<
String
>
plainColumn
=
getEncryptRule
()
.
findPlainColumn
(
tableName
,
assignmentSegment
.
getColumn
().
getName
());
if
(
plainColumn
.
isPresent
())
{
token
.
addAssignment
(
plainColumn
.
get
(),
originalValue
);
}
...
...
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/token/generator/impl/EncryptForUseDefaultInsertColumnsTokenGenerator.java
浏览文件 @
758dea85
...
...
@@ -24,12 +24,11 @@ import org.apache.shardingsphere.core.parse.sql.segment.dml.column.InsertColumns
import
org.apache.shardingsphere.core.parse.sql.statement.dml.InsertStatement
;
import
org.apache.shardingsphere.core.preprocessor.statement.SQLStatementContext
;
import
org.apache.shardingsphere.core.preprocessor.statement.impl.InsertSQLStatementContext
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.token.generator.
EncryptRuleAware
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.token.generator.
BaseEncryptSQLTokenGenerator
;
import
org.apache.shardingsphere.core.rewrite.sql.token.generator.OptionalSQLTokenGenerator
;
import
org.apache.shardingsphere.core.rewrite.sql.token.generator.aware.PreviousSQLTokensAware
;
import
org.apache.shardingsphere.core.rewrite.sql.token.pojo.SQLToken
;
import
org.apache.shardingsphere.core.rewrite.sql.token.pojo.generic.UseDefaultInsertColumnsToken
;
import
org.apache.shardingsphere.core.rule.EncryptRule
;
import
org.apache.shardingsphere.core.strategy.encrypt.EncryptTable
;
import
java.util.Iterator
;
...
...
@@ -43,16 +42,13 @@ import java.util.List;
* @author zhangliang
*/
@Setter
public
final
class
EncryptForUseDefaultInsertColumnsTokenGenerator
implements
OptionalSQLTokenGenerator
,
EncryptRuleAware
,
PreviousSQLTokensAware
{
private
EncryptRule
encryptRule
;
public
final
class
EncryptForUseDefaultInsertColumnsTokenGenerator
extends
BaseEncryptSQLTokenGenerator
implements
OptionalSQLTokenGenerator
,
PreviousSQLTokensAware
{
private
List
<
SQLToken
>
previousSQLTokens
;
@Override
public
boolean
isGenerateSQLToken
(
final
SQLStatementContext
sqlStatementContext
)
{
return
sqlStatementContext
instanceof
InsertSQLStatementContext
&&
((
InsertStatement
)
sqlStatementContext
.
getSqlStatement
()).
useDefaultColumns
()
&&
encryptRule
.
findEncryptTable
(
sqlStatementContext
.
getTablesContext
().
getSingleTableName
()).
isPresent
();
protected
boolean
isGenerateSQLTokenForEncrypt
(
final
SQLStatementContext
sqlStatementContext
)
{
return
sqlStatementContext
instanceof
InsertSQLStatementContext
&&
((
InsertStatement
)
sqlStatementContext
.
getSqlStatement
()).
useDefaultColumns
();
}
@Override
...
...
@@ -76,7 +72,7 @@ public final class EncryptForUseDefaultInsertColumnsTokenGenerator implements Op
}
private
void
processPreviousSQLToken
(
final
UseDefaultInsertColumnsToken
previousSQLToken
,
final
InsertSQLStatementContext
sqlStatementContext
,
final
String
tableName
)
{
Optional
<
EncryptTable
>
encryptTable
=
encryptRule
.
findEncryptTable
(
tableName
);
Optional
<
EncryptTable
>
encryptTable
=
getEncryptRule
()
.
findEncryptTable
(
tableName
);
Preconditions
.
checkState
(
encryptTable
.
isPresent
());
List
<
String
>
columnNames
=
getColumnNames
(
sqlStatementContext
,
encryptTable
.
get
(),
previousSQLToken
.
getColumns
());
previousSQLToken
.
getColumns
().
clear
();
...
...
@@ -86,7 +82,7 @@ public final class EncryptForUseDefaultInsertColumnsTokenGenerator implements Op
private
UseDefaultInsertColumnsToken
generateNewSQLToken
(
final
InsertSQLStatementContext
sqlStatementContext
,
final
String
tableName
)
{
Optional
<
InsertColumnsSegment
>
insertColumnsSegment
=
sqlStatementContext
.
getSqlStatement
().
findSQLSegment
(
InsertColumnsSegment
.
class
);
Preconditions
.
checkState
(
insertColumnsSegment
.
isPresent
());
Optional
<
EncryptTable
>
encryptTable
=
encryptRule
.
findEncryptTable
(
tableName
);
Optional
<
EncryptTable
>
encryptTable
=
getEncryptRule
()
.
findEncryptTable
(
tableName
);
Preconditions
.
checkState
(
encryptTable
.
isPresent
());
return
new
UseDefaultInsertColumnsToken
(
insertColumnsSegment
.
get
().
getStopIndex
(),
getColumnNames
(
sqlStatementContext
,
encryptTable
.
get
(),
sqlStatementContext
.
getColumnNames
()));
}
...
...
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/token/generator/impl/EncryptInsertValuesTokenGenerator.java
浏览文件 @
758dea85
...
...
@@ -29,7 +29,7 @@ import org.apache.shardingsphere.core.preprocessor.segment.insert.expression.Der
import
org.apache.shardingsphere.core.preprocessor.segment.insert.expression.DerivedSimpleExpressionSegment
;
import
org.apache.shardingsphere.core.preprocessor.statement.SQLStatementContext
;
import
org.apache.shardingsphere.core.preprocessor.statement.impl.InsertSQLStatementContext
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.token.generator.
EncryptRuleAware
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.token.generator.
BaseEncryptSQLTokenGenerator
;
import
org.apache.shardingsphere.core.rewrite.sql.token.generator.OptionalSQLTokenGenerator
;
import
org.apache.shardingsphere.core.rewrite.sql.token.generator.aware.PreviousSQLTokensAware
;
import
org.apache.shardingsphere.core.rewrite.sql.token.pojo.SQLToken
;
...
...
@@ -37,7 +37,6 @@ import org.apache.shardingsphere.core.rewrite.sql.token.pojo.generic.InsertValue
import
org.apache.shardingsphere.core.rewrite.sql.token.pojo.generic.InsertValuesToken.InsertValueToken
;
import
org.apache.shardingsphere.core.rewrite.sql.token.pojo.generic.UseDefaultInsertColumnsToken
;
import
org.apache.shardingsphere.core.rule.DataNode
;
import
org.apache.shardingsphere.core.rule.EncryptRule
;
import
org.apache.shardingsphere.spi.encrypt.ShardingEncryptor
;
import
org.apache.shardingsphere.spi.encrypt.ShardingQueryAssistedEncryptor
;
...
...
@@ -52,16 +51,13 @@ import java.util.List;
* @author panjuan
*/
@Setter
public
final
class
EncryptInsertValuesTokenGenerator
implements
OptionalSQLTokenGenerator
,
EncryptRuleAware
,
PreviousSQLTokensAware
{
private
EncryptRule
encryptRule
;
public
final
class
EncryptInsertValuesTokenGenerator
extends
BaseEncryptSQLTokenGenerator
implements
OptionalSQLTokenGenerator
,
PreviousSQLTokensAware
{
private
List
<
SQLToken
>
previousSQLTokens
;
@Override
public
boolean
isGenerateSQLToken
(
final
SQLStatementContext
sqlStatementContext
)
{
return
sqlStatementContext
instanceof
InsertSQLStatementContext
&&
!
sqlStatementContext
.
getSqlStatement
().
findSQLSegments
(
InsertValuesSegment
.
class
).
isEmpty
()
&&
encryptRule
.
findEncryptTable
(
sqlStatementContext
.
getTablesContext
().
getSingleTableName
()).
isPresent
();
protected
boolean
isGenerateSQLTokenForEncrypt
(
final
SQLStatementContext
sqlStatementContext
)
{
return
sqlStatementContext
instanceof
InsertSQLStatementContext
&&
!
sqlStatementContext
.
getSqlStatement
().
findSQLSegments
(
InsertValuesSegment
.
class
).
isEmpty
();
}
@Override
...
...
@@ -125,7 +121,7 @@ public final class EncryptInsertValuesTokenGenerator implements OptionalSQLToken
Iterator
<
String
>
descendingColumnNames
=
sqlStatementContext
.
getDescendingColumnNames
();
while
(
descendingColumnNames
.
hasNext
())
{
String
columnName
=
descendingColumnNames
.
next
();
Optional
<
ShardingEncryptor
>
encryptor
=
encryptRule
.
findShardingEncryptor
(
tableName
,
columnName
);
Optional
<
ShardingEncryptor
>
encryptor
=
getEncryptRule
()
.
findShardingEncryptor
(
tableName
,
columnName
);
if
(
encryptor
.
isPresent
())
{
int
columnIndex
=
useDefaultInsertColumnsToken
.
isPresent
()
?
((
UseDefaultInsertColumnsToken
)
useDefaultInsertColumnsToken
.
get
()).
getColumns
().
indexOf
(
columnName
)
:
sqlStatementContext
.
getColumnNames
().
indexOf
(
columnName
);
...
...
@@ -139,7 +135,7 @@ public final class EncryptInsertValuesTokenGenerator implements OptionalSQLToken
private
void
addPlainColumn
(
final
InsertValueToken
insertValueToken
,
final
int
columnIndex
,
final
String
tableName
,
final
String
columnName
,
final
InsertValueContext
insertValueContext
,
final
Object
originalValue
)
{
if
(
encryptRule
.
findPlainColumn
(
tableName
,
columnName
).
isPresent
())
{
if
(
getEncryptRule
()
.
findPlainColumn
(
tableName
,
columnName
).
isPresent
())
{
DerivedSimpleExpressionSegment
derivedExpressionSegment
=
insertValueContext
.
getParameters
().
isEmpty
()
?
new
DerivedLiteralExpressionSegment
(
originalValue
)
:
new
DerivedParameterMarkerExpressionSegment
(
getParameterIndexCount
(
insertValueToken
));
insertValueToken
.
getValues
().
add
(
columnIndex
+
1
,
derivedExpressionSegment
);
...
...
@@ -148,7 +144,7 @@ public final class EncryptInsertValuesTokenGenerator implements OptionalSQLToken
private
void
addAssistedQueryColumn
(
final
InsertValueToken
insertValueToken
,
final
ShardingEncryptor
encryptor
,
final
int
columnIndex
,
final
String
tableName
,
final
String
columnName
,
final
InsertValueContext
insertValueContext
,
final
Object
originalValue
)
{
if
(
encryptRule
.
findAssistedQueryColumn
(
tableName
,
columnName
).
isPresent
())
{
if
(
getEncryptRule
()
.
findAssistedQueryColumn
(
tableName
,
columnName
).
isPresent
())
{
DerivedSimpleExpressionSegment
derivedExpressionSegment
=
insertValueContext
.
getParameters
().
isEmpty
()
?
new
DerivedLiteralExpressionSegment
(((
ShardingQueryAssistedEncryptor
)
encryptor
).
queryAssistedEncrypt
(
null
==
originalValue
?
null
:
originalValue
.
toString
()))
:
new
DerivedParameterMarkerExpressionSegment
(
getParameterIndexCount
(
insertValueToken
));
...
...
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/token/generator/impl/EncryptPredicateColumnTokenGenerator.java
浏览文件 @
758dea85
...
...
@@ -25,12 +25,11 @@ import org.apache.shardingsphere.core.parse.sql.segment.dml.predicate.AndPredica
import
org.apache.shardingsphere.core.parse.sql.segment.dml.predicate.PredicateSegment
;
import
org.apache.shardingsphere.core.parse.sql.statement.generic.WhereSegmentAvailable
;
import
org.apache.shardingsphere.core.preprocessor.statement.SQLStatementContext
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.token.generator.
EncryptRuleAware
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.
token.generator
.QueryWithCipherColumnAware
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.token.generator.
BaseEncryptSQLTokenGenerator
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.
aware
.QueryWithCipherColumnAware
;
import
org.apache.shardingsphere.core.rewrite.sql.token.generator.CollectionSQLTokenGenerator
;
import
org.apache.shardingsphere.core.rewrite.sql.token.generator.aware.TableMetasAware
;
import
org.apache.shardingsphere.core.rewrite.sql.token.pojo.generic.SubstitutableColumnNameToken
;
import
org.apache.shardingsphere.core.rule.EncryptRule
;
import
org.apache.shardingsphere.core.strategy.encrypt.EncryptTable
;
import
java.util.Collection
;
...
...
@@ -43,16 +42,14 @@ import java.util.LinkedList;
* @author zhangliang
*/
@Setter
public
final
class
EncryptPredicateColumnTokenGenerator
implements
CollectionSQLTokenGenerator
,
TableMetasAware
,
EncryptRule
Aware
,
QueryWithCipherColumnAware
{
public
final
class
EncryptPredicateColumnTokenGenerator
extends
BaseEncryptSQLTokenGenerator
implements
CollectionSQLTokenGenerator
,
TableMetas
Aware
,
QueryWithCipherColumnAware
{
private
TableMetas
tableMetas
;
private
EncryptRule
encryptRule
;
private
boolean
queryWithCipherColumn
;
@Override
p
ublic
boolean
isGenerateSQLToken
(
final
SQLStatementContext
sqlStatementContext
)
{
p
rotected
boolean
isGenerateSQLTokenForEncrypt
(
final
SQLStatementContext
sqlStatementContext
)
{
return
sqlStatementContext
.
getSqlStatement
()
instanceof
WhereSegmentAvailable
&&
((
WhereSegmentAvailable
)
sqlStatementContext
.
getSqlStatement
()).
getWhere
().
isPresent
();
}
...
...
@@ -92,6 +89,6 @@ public final class EncryptPredicateColumnTokenGenerator implements CollectionSQL
private
Optional
<
EncryptTable
>
findEncryptTable
(
final
SQLStatementContext
sqlStatementContext
,
final
PredicateSegment
segment
)
{
Optional
<
String
>
tableName
=
sqlStatementContext
.
getTablesContext
().
findTableName
(
segment
.
getColumn
(),
tableMetas
);
return
tableName
.
isPresent
()
?
encryptRule
.
findEncryptTable
(
tableName
.
get
())
:
Optional
.<
EncryptTable
>
absent
();
return
tableName
.
isPresent
()
?
getEncryptRule
()
.
findEncryptTable
(
tableName
.
get
())
:
Optional
.<
EncryptTable
>
absent
();
}
}
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/token/generator/impl/EncryptPredicateRightValueTokenGenerator.java
浏览文件 @
758dea85
...
...
@@ -24,13 +24,12 @@ import org.apache.shardingsphere.core.parse.sql.statement.generic.WhereSegmentAv
import
org.apache.shardingsphere.core.preprocessor.statement.SQLStatementContext
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.EncryptCondition
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.EncryptConditionEngine
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.token.generator.
EncryptRuleAware
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.
token.generator
.QueryWithCipherColumnAware
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.token.generator.
BaseEncryptSQLTokenGenerator
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.
aware
.QueryWithCipherColumnAware
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.token.pojo.EncryptPredicateRightValueToken
;
import
org.apache.shardingsphere.core.rewrite.sql.token.generator.CollectionSQLTokenGenerator
;
import
org.apache.shardingsphere.core.rewrite.sql.token.generator.aware.ParametersAware
;
import
org.apache.shardingsphere.core.rewrite.sql.token.generator.aware.TableMetasAware
;
import
org.apache.shardingsphere.core.rule.EncryptRule
;
import
java.util.Collection
;
import
java.util.Collections
;
...
...
@@ -46,24 +45,22 @@ import java.util.Map;
* @author zhangliang
*/
@Setter
public
final
class
EncryptPredicateRightValueTokenGenerator
implements
CollectionSQLTokenGenerator
,
TableMetasAware
,
EncryptRule
Aware
,
ParametersAware
,
QueryWithCipherColumnAware
{
public
final
class
EncryptPredicateRightValueTokenGenerator
extends
BaseEncryptSQLTokenGenerator
implements
CollectionSQLTokenGenerator
,
TableMetas
Aware
,
ParametersAware
,
QueryWithCipherColumnAware
{
private
TableMetas
tableMetas
;
private
EncryptRule
encryptRule
;
private
List
<
Object
>
parameters
;
private
boolean
queryWithCipherColumn
;
@Override
p
ublic
boolean
isGenerateSQLToken
(
final
SQLStatementContext
sqlStatementContext
)
{
p
rotected
boolean
isGenerateSQLTokenForEncrypt
(
final
SQLStatementContext
sqlStatementContext
)
{
return
sqlStatementContext
.
getSqlStatement
()
instanceof
WhereSegmentAvailable
&&
((
WhereSegmentAvailable
)
sqlStatementContext
.
getSqlStatement
()).
getWhere
().
isPresent
();
}
@Override
public
Collection
<
EncryptPredicateRightValueToken
>
generateSQLTokens
(
final
SQLStatementContext
sqlStatementContext
)
{
List
<
EncryptCondition
>
encryptConditions
=
new
EncryptConditionEngine
(
encryptRule
,
tableMetas
).
createEncryptConditions
(
sqlStatementContext
);
List
<
EncryptCondition
>
encryptConditions
=
new
EncryptConditionEngine
(
getEncryptRule
()
,
tableMetas
).
createEncryptConditions
(
sqlStatementContext
);
return
encryptConditions
.
isEmpty
()
?
Collections
.<
EncryptPredicateRightValueToken
>
emptyList
()
:
generateSQLTokens
(
encryptConditions
);
}
...
...
@@ -87,10 +84,10 @@ public final class EncryptPredicateRightValueTokenGenerator implements Collectio
}
private
List
<
Object
>
getEncryptedValues
(
final
EncryptCondition
encryptCondition
,
final
List
<
Object
>
originalValues
)
{
Optional
<
String
>
assistedQueryColumn
=
encryptRule
.
findAssistedQueryColumn
(
encryptCondition
.
getTableName
(),
encryptCondition
.
getColumnName
());
Optional
<
String
>
assistedQueryColumn
=
getEncryptRule
()
.
findAssistedQueryColumn
(
encryptCondition
.
getTableName
(),
encryptCondition
.
getColumnName
());
return
assistedQueryColumn
.
isPresent
()
?
encryptRule
.
getEncryptAssistedQueryValues
(
encryptCondition
.
getTableName
(),
encryptCondition
.
getColumnName
(),
originalValues
)
:
encryptRule
.
getEncryptValues
(
encryptCondition
.
getTableName
(),
encryptCondition
.
getColumnName
(),
originalValues
);
?
getEncryptRule
()
.
getEncryptAssistedQueryValues
(
encryptCondition
.
getTableName
(),
encryptCondition
.
getColumnName
(),
originalValues
)
:
getEncryptRule
()
.
getEncryptValues
(
encryptCondition
.
getTableName
(),
encryptCondition
.
getColumnName
(),
originalValues
);
}
private
EncryptPredicateRightValueToken
generateSQLTokenForQueryWithoutCipherColumn
(
final
EncryptCondition
encryptCondition
,
final
List
<
Object
>
originalValues
)
{
...
...
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/token/generator/impl/EncryptProjectionTokenGenerator.java
浏览文件 @
758dea85
...
...
@@ -25,11 +25,10 @@ import org.apache.shardingsphere.core.parse.sql.segment.dml.item.SelectItemSegme
import
org.apache.shardingsphere.core.parse.sql.segment.dml.item.SelectItemsSegment
;
import
org.apache.shardingsphere.core.parse.sql.statement.dml.SelectStatement
;
import
org.apache.shardingsphere.core.preprocessor.statement.SQLStatementContext
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.token.generator.
EncryptRuleAware
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.
token.generator
.QueryWithCipherColumnAware
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.token.generator.
BaseEncryptSQLTokenGenerator
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.
aware
.QueryWithCipherColumnAware
;
import
org.apache.shardingsphere.core.rewrite.sql.token.generator.CollectionSQLTokenGenerator
;
import
org.apache.shardingsphere.core.rewrite.sql.token.pojo.generic.SubstitutableColumnNameToken
;
import
org.apache.shardingsphere.core.rule.EncryptRule
;
import
org.apache.shardingsphere.core.strategy.encrypt.EncryptTable
;
import
java.util.Collection
;
...
...
@@ -37,19 +36,17 @@ import java.util.Collections;
import
java.util.LinkedList
;
/**
*
Encrypt projection token generator
.
*
Projection token generator for encrypt
.
*
* @author panjuan
*/
@Setter
public
final
class
EncryptProjectionTokenGenerator
implements
CollectionSQLTokenGenerator
,
EncryptRuleAware
,
QueryWithCipherColumnAware
{
private
EncryptRule
encryptRule
;
public
final
class
EncryptProjectionTokenGenerator
extends
BaseEncryptSQLTokenGenerator
implements
CollectionSQLTokenGenerator
,
QueryWithCipherColumnAware
{
private
boolean
queryWithCipherColumn
;
@Override
p
ublic
boolean
isGenerateSQLToken
(
final
SQLStatementContext
sqlStatementContext
)
{
p
rotected
boolean
isGenerateSQLTokenForEncrypt
(
final
SQLStatementContext
sqlStatementContext
)
{
if
(!(
sqlStatementContext
.
getSqlStatement
()
instanceof
SelectStatement
&&
!
sqlStatementContext
.
getTablesContext
().
isEmpty
()))
{
return
false
;
}
...
...
@@ -63,7 +60,7 @@ public final class EncryptProjectionTokenGenerator implements CollectionSQLToken
Optional
<
SelectItemsSegment
>
selectItemsSegment
=
sqlStatementContext
.
getSqlStatement
().
findSQLSegment
(
SelectItemsSegment
.
class
);
Preconditions
.
checkState
(
selectItemsSegment
.
isPresent
());
String
tableName
=
sqlStatementContext
.
getTablesContext
().
getSingleTableName
();
Optional
<
EncryptTable
>
encryptTable
=
encryptRule
.
findEncryptTable
(
tableName
);
Optional
<
EncryptTable
>
encryptTable
=
getEncryptRule
()
.
findEncryptTable
(
tableName
);
if
(!
encryptTable
.
isPresent
())
{
return
Collections
.
emptyList
();
}
...
...
@@ -80,8 +77,8 @@ public final class EncryptProjectionTokenGenerator implements CollectionSQLToken
}
private
SubstitutableColumnNameToken
generateSQLToken
(
final
ColumnSelectItemSegment
segment
,
final
String
tableName
)
{
Optional
<
String
>
plainColumn
=
encryptRule
.
findPlainColumn
(
tableName
,
segment
.
getName
());
String
columnName
=
plainColumn
.
isPresent
()
&&
!
queryWithCipherColumn
?
plainColumn
.
get
()
:
encryptRule
.
getCipherColumn
(
tableName
,
segment
.
getName
());
Optional
<
String
>
plainColumn
=
getEncryptRule
()
.
findPlainColumn
(
tableName
,
segment
.
getName
());
String
columnName
=
plainColumn
.
isPresent
()
&&
!
queryWithCipherColumn
?
plainColumn
.
get
()
:
getEncryptRule
()
.
getCipherColumn
(
tableName
,
segment
.
getName
());
return
segment
.
getOwner
().
isPresent
()
?
new
SubstitutableColumnNameToken
(
segment
.
getOwner
().
get
().
getStopIndex
()
+
2
,
segment
.
getStopIndex
(),
columnName
)
:
new
SubstitutableColumnNameToken
(
segment
.
getStartIndex
(),
segment
.
getStopIndex
(),
columnName
);
}
...
...
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/encrypt/token/generator/impl/InsertCipherNameTokenGenerator.java
浏览文件 @
758dea85
...
...
@@ -19,15 +19,13 @@ package org.apache.shardingsphere.core.rewrite.feature.encrypt.token.generator.i
import
com.google.common.base.Optional
;
import
com.google.common.base.Preconditions
;
import
lombok.Setter
;
import
org.apache.shardingsphere.core.preprocessor.statement.SQLStatementContext
;
import
org.apache.shardingsphere.core.preprocessor.statement.impl.InsertSQLStatementContext
;
import
org.apache.shardingsphere.core.parse.sql.segment.dml.column.ColumnSegment
;
import
org.apache.shardingsphere.core.parse.sql.segment.dml.column.InsertColumnsSegment
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.token.generator.EncryptRuleAware
;
import
org.apache.shardingsphere.core.preprocessor.statement.SQLStatementContext
;
import
org.apache.shardingsphere.core.preprocessor.statement.impl.InsertSQLStatementContext
;
import
org.apache.shardingsphere.core.rewrite.feature.encrypt.token.generator.BaseEncryptSQLTokenGenerator
;
import
org.apache.shardingsphere.core.rewrite.sql.token.generator.CollectionSQLTokenGenerator
;
import
org.apache.shardingsphere.core.rewrite.sql.token.pojo.generic.SubstitutableColumnNameToken
;
import
org.apache.shardingsphere.core.rule.EncryptRule
;
import
java.util.Collection
;
import
java.util.LinkedList
;
...
...
@@ -38,13 +36,10 @@ import java.util.Map;
*
* @author panjuan
*/
@Setter
public
final
class
InsertCipherNameTokenGenerator
implements
CollectionSQLTokenGenerator
,
EncryptRuleAware
{
private
EncryptRule
encryptRule
;
public
final
class
InsertCipherNameTokenGenerator
extends
BaseEncryptSQLTokenGenerator
implements
CollectionSQLTokenGenerator
{
@Override
p
ublic
boolean
isGenerateSQLToken
(
final
SQLStatementContext
sqlStatementContext
)
{
p
rotected
boolean
isGenerateSQLTokenForEncrypt
(
final
SQLStatementContext
sqlStatementContext
)
{
Optional
<
InsertColumnsSegment
>
insertColumnsSegment
=
sqlStatementContext
.
getSqlStatement
().
findSQLSegment
(
InsertColumnsSegment
.
class
);
return
sqlStatementContext
instanceof
InsertSQLStatementContext
&&
insertColumnsSegment
.
isPresent
()
&&
!
insertColumnsSegment
.
get
().
getColumns
().
isEmpty
();
}
...
...
@@ -53,7 +48,7 @@ public final class InsertCipherNameTokenGenerator implements CollectionSQLTokenG
public
Collection
<
SubstitutableColumnNameToken
>
generateSQLTokens
(
final
SQLStatementContext
sqlStatementContext
)
{
Optional
<
InsertColumnsSegment
>
sqlSegment
=
sqlStatementContext
.
getSqlStatement
().
findSQLSegment
(
InsertColumnsSegment
.
class
);
Preconditions
.
checkState
(
sqlSegment
.
isPresent
());
Map
<
String
,
String
>
logicAndCipherColumns
=
encryptRule
.
getLogicAndCipherColumns
(
sqlStatementContext
.
getTablesContext
().
getSingleTableName
());
Map
<
String
,
String
>
logicAndCipherColumns
=
getEncryptRule
()
.
getLogicAndCipherColumns
(
sqlStatementContext
.
getTablesContext
().
getSingleTableName
());
Collection
<
SubstitutableColumnNameToken
>
result
=
new
LinkedList
<>();
for
(
ColumnSegment
each
:
sqlSegment
.
get
().
getColumns
())
{
if
(
logicAndCipherColumns
.
keySet
().
contains
(
each
.
getName
()))
{
...
...
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/sharding/
token/generator
/SQLRouteResultAware.java
→
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/sharding/
aware
/SQLRouteResultAware.java
浏览文件 @
758dea85
...
...
@@ -15,7 +15,7 @@
* limitations under the License.
*/
package
org.apache.shardingsphere.core.rewrite.feature.sharding.
token.generator
;
package
org.apache.shardingsphere.core.rewrite.feature.sharding.
aware
;
import
org.apache.shardingsphere.core.route.SQLRouteResult
;
...
...
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/sharding/
token/generator
/ShardingRuleAware.java
→
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/sharding/
aware
/ShardingRuleAware.java
浏览文件 @
758dea85
...
...
@@ -15,7 +15,7 @@
* limitations under the License.
*/
package
org.apache.shardingsphere.core.rewrite.feature.sharding.
token.generator
;
package
org.apache.shardingsphere.core.rewrite.feature.sharding.
aware
;
import
org.apache.shardingsphere.core.rule.ShardingRule
;
...
...
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/sharding/parameter/ShardingParameterRewriterBuilder.java
浏览文件 @
758dea85
...
...
@@ -21,8 +21,8 @@ import lombok.RequiredArgsConstructor;
import
org.apache.shardingsphere.core.metadata.table.TableMetas
;
import
org.apache.shardingsphere.core.rewrite.feature.sharding.parameter.impl.ShardingGeneratedKeyInsertValueParameterRewriter
;
import
org.apache.shardingsphere.core.rewrite.feature.sharding.parameter.impl.ShardingPaginationParameterRewriter
;
import
org.apache.shardingsphere.core.rewrite.feature.sharding.
token.generator
.SQLRouteResultAware
;
import
org.apache.shardingsphere.core.rewrite.feature.sharding.
token.generator
.ShardingRuleAware
;
import
org.apache.shardingsphere.core.rewrite.feature.sharding.
aware
.SQLRouteResultAware
;
import
org.apache.shardingsphere.core.rewrite.feature.sharding.
aware
.ShardingRuleAware
;
import
org.apache.shardingsphere.core.rewrite.parameter.rewriter.ParameterRewriter
;
import
org.apache.shardingsphere.core.rewrite.parameter.rewriter.ParameterRewriterBuilder
;
import
org.apache.shardingsphere.core.rewrite.sql.token.generator.aware.TableMetasAware
;
...
...
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/sharding/parameter/impl/ShardingGeneratedKeyInsertValueParameterRewriter.java
浏览文件 @
758dea85
...
...
@@ -21,7 +21,7 @@ import com.google.common.collect.Lists;
import
lombok.Setter
;
import
org.apache.shardingsphere.core.preprocessor.statement.SQLStatementContext
;
import
org.apache.shardingsphere.core.preprocessor.statement.impl.InsertSQLStatementContext
;
import
org.apache.shardingsphere.core.rewrite.feature.sharding.
token.generator
.SQLRouteResultAware
;
import
org.apache.shardingsphere.core.rewrite.feature.sharding.
aware
.SQLRouteResultAware
;
import
org.apache.shardingsphere.core.rewrite.parameter.builder.ParameterBuilder
;
import
org.apache.shardingsphere.core.rewrite.parameter.builder.impl.GroupedParameterBuilder
;
import
org.apache.shardingsphere.core.rewrite.parameter.rewriter.ParameterRewriter
;
...
...
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/sharding/parameter/impl/ShardingPaginationParameterRewriter.java
浏览文件 @
758dea85
...
...
@@ -25,7 +25,7 @@ import org.apache.shardingsphere.core.preprocessor.statement.impl.SelectSQLState
import
org.apache.shardingsphere.core.rewrite.parameter.builder.ParameterBuilder
;
import
org.apache.shardingsphere.core.rewrite.parameter.builder.impl.StandardParameterBuilder
;
import
org.apache.shardingsphere.core.rewrite.parameter.rewriter.ParameterRewriter
;
import
org.apache.shardingsphere.core.rewrite.feature.sharding.
token.generator
.SQLRouteResultAware
;
import
org.apache.shardingsphere.core.rewrite.feature.sharding.
aware
.SQLRouteResultAware
;
import
org.apache.shardingsphere.core.route.SQLRouteResult
;
import
java.util.List
;
...
...
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/sharding/token/ShardingTokenGenerateBuilder.java
浏览文件 @
758dea85
...
...
@@ -20,9 +20,9 @@ package org.apache.shardingsphere.core.rewrite.feature.sharding.token;
import
lombok.RequiredArgsConstructor
;
import
org.apache.shardingsphere.core.rewrite.sql.token.generator.builder.SQLTokenGeneratorBuilder
;
import
org.apache.shardingsphere.core.rewrite.feature.sharding.token.generator.IgnoreForSingleRoute
;
import
org.apache.shardingsphere.core.rewrite.feature.sharding.
token.generator
.SQLRouteResultAware
;
import
org.apache.shardingsphere.core.rewrite.feature.sharding.
aware
.SQLRouteResultAware
;
import
org.apache.shardingsphere.core.rewrite.sql.token.generator.SQLTokenGenerator
;
import
org.apache.shardingsphere.core.rewrite.feature.sharding.
token.generator
.ShardingRuleAware
;
import
org.apache.shardingsphere.core.rewrite.feature.sharding.
aware
.ShardingRuleAware
;
import
org.apache.shardingsphere.core.rewrite.feature.sharding.token.generator.impl.AggregationDistinctTokenGenerator
;
import
org.apache.shardingsphere.core.rewrite.feature.sharding.token.generator.impl.IndexTokenGenerator
;
import
org.apache.shardingsphere.core.rewrite.feature.sharding.token.generator.impl.TableTokenGenerator
;
...
...
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/sharding/token/generator/impl/InsertValuesTokenGenerator.java
浏览文件 @
758dea85
...
...
@@ -24,7 +24,7 @@ import org.apache.shardingsphere.core.parse.sql.statement.dml.InsertStatement;
import
org.apache.shardingsphere.core.preprocessor.segment.insert.InsertValueContext
;
import
org.apache.shardingsphere.core.preprocessor.statement.SQLStatementContext
;
import
org.apache.shardingsphere.core.preprocessor.statement.impl.InsertSQLStatementContext
;
import
org.apache.shardingsphere.core.rewrite.feature.sharding.
token.generator
.SQLRouteResultAware
;
import
org.apache.shardingsphere.core.rewrite.feature.sharding.
aware
.SQLRouteResultAware
;
import
org.apache.shardingsphere.core.rewrite.sql.token.generator.OptionalSQLTokenGenerator
;
import
org.apache.shardingsphere.core.rewrite.sql.token.pojo.generic.InsertValuesToken
;
import
org.apache.shardingsphere.core.rewrite.sql.token.pojo.generic.InsertValuesToken.InsertValueToken
;
...
...
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/sharding/token/generator/impl/TableTokenGenerator.java
浏览文件 @
758dea85
...
...
@@ -32,7 +32,7 @@ import org.apache.shardingsphere.core.parse.sql.segment.generic.TableSegment;
import
org.apache.shardingsphere.core.parse.sql.statement.SQLStatement
;
import
org.apache.shardingsphere.core.parse.sql.statement.dml.SelectStatement
;
import
org.apache.shardingsphere.core.rewrite.sql.token.generator.CollectionSQLTokenGenerator
;
import
org.apache.shardingsphere.core.rewrite.feature.sharding.
token.generator
.ShardingRuleAware
;
import
org.apache.shardingsphere.core.rewrite.feature.sharding.
aware
.ShardingRuleAware
;
import
org.apache.shardingsphere.core.rewrite.feature.sharding.token.pojo.TableToken
;
import
org.apache.shardingsphere.core.rule.ShardingRule
;
...
...
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/feature/sharding/token/generator/impl/keygen/BaseGeneratedKeyTokenGenerator.java
浏览文件 @
758dea85
...
...
@@ -22,7 +22,7 @@ import lombok.Setter;
import
org.apache.shardingsphere.core.preprocessor.statement.SQLStatementContext
;
import
org.apache.shardingsphere.core.preprocessor.statement.impl.InsertSQLStatementContext
;
import
org.apache.shardingsphere.core.parse.sql.statement.dml.InsertStatement
;
import
org.apache.shardingsphere.core.rewrite.feature.sharding.
token.generator
.SQLRouteResultAware
;
import
org.apache.shardingsphere.core.rewrite.feature.sharding.
aware
.SQLRouteResultAware
;
import
org.apache.shardingsphere.core.rewrite.sql.token.generator.OptionalSQLTokenGenerator
;
import
org.apache.shardingsphere.core.rewrite.sql.token.pojo.SQLToken
;
import
org.apache.shardingsphere.core.route.SQLRouteResult
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录