Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
Shardingsphere
提交
c11bb0eb
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,发现更多精彩内容 >>
提交
c11bb0eb
编写于
3月 30, 2018
作者:
T
terrymanu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
for #660: refactor assert SQL token
上级
17ec27f9
变更
15
隐藏空白更改
内联
并排
Showing
15 changed file
with
282 addition
and
164 deletion
+282
-164
sharding-core/src/test/java/io/shardingjdbc/core/parsing/integrate/asserts/ParserAssertHelper.java
...bc/core/parsing/integrate/asserts/ParserAssertHelper.java
+0
-85
sharding-core/src/test/java/io/shardingjdbc/core/parsing/integrate/engine/IntegrateSupportedSQLParsingTest.java
...ng/integrate/engine/IntegrateSupportedSQLParsingTest.java
+237
-11
sharding-core/src/test/java/io/shardingjdbc/core/parsing/integrate/jaxb/token/GeneratedKeyTokenAssert.java
...parsing/integrate/jaxb/token/GeneratedKeyTokenAssert.java
+5
-5
sharding-core/src/test/java/io/shardingjdbc/core/parsing/integrate/jaxb/token/IndexTokenAssert.java
...c/core/parsing/integrate/jaxb/token/IndexTokenAssert.java
+4
-1
sharding-core/src/test/java/io/shardingjdbc/core/parsing/integrate/jaxb/token/ItemsTokenAssert.java
...c/core/parsing/integrate/jaxb/token/ItemsTokenAssert.java
+5
-1
sharding-core/src/test/java/io/shardingjdbc/core/parsing/integrate/jaxb/token/MultipleInsertValuesTokenAssert.java
...integrate/jaxb/token/MultipleInsertValuesTokenAssert.java
+5
-1
sharding-core/src/test/java/io/shardingjdbc/core/parsing/integrate/jaxb/token/OffsetTokenAssert.java
.../core/parsing/integrate/jaxb/token/OffsetTokenAssert.java
+4
-1
sharding-core/src/test/java/io/shardingjdbc/core/parsing/integrate/jaxb/token/OrderByTokenAssert.java
...core/parsing/integrate/jaxb/token/OrderByTokenAssert.java
+5
-5
sharding-core/src/test/java/io/shardingjdbc/core/parsing/integrate/jaxb/token/RowCountTokenAssert.java
...ore/parsing/integrate/jaxb/token/RowCountTokenAssert.java
+4
-1
sharding-core/src/test/java/io/shardingjdbc/core/parsing/integrate/jaxb/token/SQLTokenAssert.java
...dbc/core/parsing/integrate/jaxb/token/SQLTokenAssert.java
+1
-13
sharding-core/src/test/java/io/shardingjdbc/core/parsing/integrate/jaxb/token/SQLTokenAsserts.java
...bc/core/parsing/integrate/jaxb/token/SQLTokenAsserts.java
+1
-35
sharding-core/src/test/java/io/shardingjdbc/core/parsing/integrate/jaxb/token/TableTokenAssert.java
...c/core/parsing/integrate/jaxb/token/TableTokenAssert.java
+4
-1
sharding-core/src/test/resources/parser/drop.xml
sharding-core/src/test/resources/parser/drop.xml
+3
-0
sharding-core/src/test/resources/parser/insert.xml
sharding-core/src/test/resources/parser/insert.xml
+1
-1
sharding-core/src/test/resources/parser/select_group_by.xml
sharding-core/src/test/resources/parser/select_group_by.xml
+3
-3
未找到文件。
sharding-core/src/test/java/io/shardingjdbc/core/parsing/integrate/asserts/ParserAssertHelper.java
浏览文件 @
c11bb0eb
...
...
@@ -19,31 +19,12 @@ package io.shardingjdbc.core.parsing.integrate.asserts;
import
io.shardingjdbc.core.constant.DatabaseType
;
import
io.shardingjdbc.core.parsing.integrate.jaxb.limit.LimitAssert
;
import
io.shardingjdbc.core.parsing.integrate.jaxb.token.GeneratedKeyTokenAssert
;
import
io.shardingjdbc.core.parsing.integrate.jaxb.token.IndexTokenAssert
;
import
io.shardingjdbc.core.parsing.integrate.jaxb.token.ItemsTokenAssert
;
import
io.shardingjdbc.core.parsing.integrate.jaxb.token.MultipleInsertValuesTokenAssert
;
import
io.shardingjdbc.core.parsing.integrate.jaxb.token.OffsetTokenAssert
;
import
io.shardingjdbc.core.parsing.integrate.jaxb.token.OrderByTokenAssert
;
import
io.shardingjdbc.core.parsing.integrate.jaxb.token.RowCountTokenAssert
;
import
io.shardingjdbc.core.parsing.integrate.jaxb.token.SQLTokenAssert
;
import
io.shardingjdbc.core.parsing.integrate.jaxb.token.TableTokenAssert
;
import
io.shardingjdbc.core.parsing.parser.context.OrderItem
;
import
io.shardingjdbc.core.parsing.parser.context.limit.Limit
;
import
io.shardingjdbc.core.parsing.parser.context.limit.LimitValue
;
import
io.shardingjdbc.core.parsing.parser.context.selectitem.AggregationSelectItem
;
import
io.shardingjdbc.core.parsing.parser.token.GeneratedKeyToken
;
import
io.shardingjdbc.core.parsing.parser.token.IndexToken
;
import
io.shardingjdbc.core.parsing.parser.token.ItemsToken
;
import
io.shardingjdbc.core.parsing.parser.token.MultipleInsertValuesToken
;
import
io.shardingjdbc.core.parsing.parser.token.OffsetToken
;
import
io.shardingjdbc.core.parsing.parser.token.OrderByToken
;
import
io.shardingjdbc.core.parsing.parser.token.RowCountToken
;
import
io.shardingjdbc.core.parsing.parser.token.SQLToken
;
import
io.shardingjdbc.core.parsing.parser.token.TableToken
;
import
org.apache.commons.lang3.builder.EqualsBuilder
;
import
java.util.ArrayList
;
import
java.util.Iterator
;
import
java.util.List
;
...
...
@@ -53,72 +34,6 @@ import static org.junit.Assert.assertTrue;
public
class
ParserAssertHelper
{
public
static
void
assertSqlTokens
(
final
List
<
SQLTokenAssert
>
expected
,
final
List
<
SQLToken
>
actual
,
final
boolean
isPreparedStatement
)
{
if
(
null
==
expected
||
expected
.
size
()
==
0
)
{
return
;
}
List
<
SQLToken
>
expectedSqlTokens
=
buildExpectedSqlTokens
(
expected
,
isPreparedStatement
);
assertTrue
(
expectedSqlTokens
.
size
()
==
actual
.
size
());
for
(
SQLToken
each
:
actual
)
{
boolean
hasData
=
false
;
for
(
SQLToken
sqlToken
:
expectedSqlTokens
)
{
if
(
each
.
getBeginPosition
()
==
sqlToken
.
getBeginPosition
())
{
hasData
=
true
;
assertTrue
(
EqualsBuilder
.
reflectionEquals
(
sqlToken
,
each
));
}
}
assertTrue
(
hasData
);
}
}
private
static
List
<
SQLToken
>
buildExpectedSqlTokens
(
final
List
<
SQLTokenAssert
>
sqlTokens
,
final
boolean
isPreparedStatement
)
{
List
<
SQLToken
>
result
=
new
ArrayList
<>(
sqlTokens
.
size
());
for
(
SQLTokenAssert
each
:
sqlTokens
)
{
if
(
isPreparedStatement
&&
(
each
instanceof
OffsetTokenAssert
||
each
instanceof
RowCountTokenAssert
))
{
continue
;
}
result
.
add
(
buildExpectedSQLToken
(
each
,
isPreparedStatement
));
}
return
result
;
}
private
static
SQLToken
buildExpectedSQLToken
(
final
SQLTokenAssert
sqlToken
,
final
boolean
isPreparedStatement
)
{
if
(
sqlToken
instanceof
TableTokenAssert
)
{
return
new
TableToken
(
sqlToken
.
getBeginPosition
(),
((
TableTokenAssert
)
sqlToken
).
getOriginalLiterals
());
}
if
(
sqlToken
instanceof
IndexTokenAssert
)
{
return
new
IndexToken
(
sqlToken
.
getBeginPosition
(),
((
IndexTokenAssert
)
sqlToken
).
getOriginalLiterals
(),
((
IndexTokenAssert
)
sqlToken
).
getTableName
());
}
else
if
(
sqlToken
instanceof
ItemsTokenAssert
)
{
ItemsToken
itemsToken
=
new
ItemsToken
(
sqlToken
.
getBeginPosition
());
itemsToken
.
getItems
().
addAll
(((
ItemsTokenAssert
)
sqlToken
).
getItems
());
return
itemsToken
;
}
else
if
(
sqlToken
instanceof
GeneratedKeyTokenAssert
)
{
if
(
isPreparedStatement
)
{
return
new
GeneratedKeyToken
(((
GeneratedKeyTokenAssert
)
sqlToken
).
getBeginPositionOfPreparedStatement
());
}
else
{
return
new
GeneratedKeyToken
(((
GeneratedKeyTokenAssert
)
sqlToken
).
getBeginPositionOfStatement
());
}
}
else
if
(
sqlToken
instanceof
MultipleInsertValuesTokenAssert
)
{
MultipleInsertValuesToken
multipleInsertValuesToken
=
new
MultipleInsertValuesToken
(
sqlToken
.
getBeginPosition
());
multipleInsertValuesToken
.
getValues
().
addAll
(((
MultipleInsertValuesTokenAssert
)
sqlToken
).
getValues
());
return
multipleInsertValuesToken
;
}
else
if
(
sqlToken
instanceof
RowCountTokenAssert
)
{
return
new
RowCountToken
(
sqlToken
.
getBeginPosition
(),
((
RowCountTokenAssert
)
sqlToken
).
getRowCount
());
}
else
if
(
sqlToken
instanceof
OrderByTokenAssert
)
{
if
(
isPreparedStatement
)
{
return
new
OrderByToken
(((
OrderByTokenAssert
)
sqlToken
).
getBeginPositionOfPreparedStatement
());
}
else
{
return
new
OrderByToken
(((
OrderByTokenAssert
)
sqlToken
).
getBeginPositionOfStatement
());
}
}
else
if
(
sqlToken
instanceof
OffsetTokenAssert
)
{
return
new
OffsetToken
(
sqlToken
.
getBeginPosition
(),
((
OffsetTokenAssert
)
sqlToken
).
getOffset
());
}
return
null
;
}
public
static
void
assertLimit
(
final
LimitAssert
limit
,
final
Limit
actual
,
final
boolean
isPreparedStatement
)
{
Limit
expected
=
buildExpectedLimit
(
limit
,
isPreparedStatement
);
if
(
null
==
expected
)
{
...
...
sharding-core/src/test/java/io/shardingjdbc/core/parsing/integrate/engine/IntegrateSupportedSQLParsingTest.java
浏览文件 @
c11bb0eb
...
...
@@ -26,6 +26,15 @@ import io.shardingjdbc.core.parsing.integrate.jaxb.condition.ConditionAssert;
import
io.shardingjdbc.core.parsing.integrate.jaxb.condition.Value
;
import
io.shardingjdbc.core.parsing.integrate.jaxb.root.ParserAssert
;
import
io.shardingjdbc.core.parsing.integrate.jaxb.table.TableAssert
;
import
io.shardingjdbc.core.parsing.integrate.jaxb.token.GeneratedKeyTokenAssert
;
import
io.shardingjdbc.core.parsing.integrate.jaxb.token.IndexTokenAssert
;
import
io.shardingjdbc.core.parsing.integrate.jaxb.token.ItemsTokenAssert
;
import
io.shardingjdbc.core.parsing.integrate.jaxb.token.MultipleInsertValuesTokenAssert
;
import
io.shardingjdbc.core.parsing.integrate.jaxb.token.OffsetTokenAssert
;
import
io.shardingjdbc.core.parsing.integrate.jaxb.token.OrderByTokenAssert
;
import
io.shardingjdbc.core.parsing.integrate.jaxb.token.RowCountTokenAssert
;
import
io.shardingjdbc.core.parsing.integrate.jaxb.token.SQLTokenAsserts
;
import
io.shardingjdbc.core.parsing.integrate.jaxb.token.TableTokenAssert
;
import
io.shardingjdbc.core.parsing.parser.context.condition.Column
;
import
io.shardingjdbc.core.parsing.parser.context.condition.Condition
;
import
io.shardingjdbc.core.parsing.parser.context.condition.Conditions
;
...
...
@@ -33,18 +42,29 @@ import io.shardingjdbc.core.parsing.parser.context.table.Table;
import
io.shardingjdbc.core.parsing.parser.context.table.Tables
;
import
io.shardingjdbc.core.parsing.parser.sql.SQLStatement
;
import
io.shardingjdbc.core.parsing.parser.sql.dql.select.SelectStatement
;
import
io.shardingjdbc.core.parsing.parser.token.GeneratedKeyToken
;
import
io.shardingjdbc.core.parsing.parser.token.IndexToken
;
import
io.shardingjdbc.core.parsing.parser.token.ItemsToken
;
import
io.shardingjdbc.core.parsing.parser.token.MultipleInsertValuesToken
;
import
io.shardingjdbc.core.parsing.parser.token.OffsetToken
;
import
io.shardingjdbc.core.parsing.parser.token.OrderByToken
;
import
io.shardingjdbc.core.parsing.parser.token.RowCountToken
;
import
io.shardingjdbc.core.parsing.parser.token.SQLToken
;
import
io.shardingjdbc.core.parsing.parser.token.TableToken
;
import
io.shardingjdbc.test.sql.SQLCasesLoader
;
import
lombok.RequiredArgsConstructor
;
import
org.junit.Test
;
import
org.junit.runners.Parameterized.Parameters
;
import
java.lang.reflect.Field
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.Map
;
import
static
org
.
hamcrest
.
CoreMatchers
.
is
;
import
static
org
.
junit
.
Assert
.
assertNull
;
import
static
org
.
junit
.
Assert
.
assertThat
;
import
static
org
.
junit
.
Assert
.
assertTrue
;
...
...
@@ -75,34 +95,35 @@ public final class IntegrateSupportedSQLParsingTest extends AbstractBaseIntegrat
assertSQLStatement
(
new
SQLParsingEngine
(
databaseType
,
sqlCasesLoader
.
getSupportedPlaceholderSQL
(
sqlCaseId
),
getShardingRule
()).
parse
(),
true
);
}
private
void
assertSQLStatement
(
final
SQLStatement
actual
,
final
boolean
isPreparedStatement
)
throws
NoSuchFieldException
,
IllegalAccessException
{
private
void
assertSQLStatement
(
final
SQLStatement
actual
,
final
boolean
withPlaceholder
)
throws
NoSuchFieldException
,
IllegalAccessException
{
ParserAssert
parserAssert
=
parserAssertsLoader
.
getParserAssert
(
sqlCaseId
);
assertTables
(
actual
.
getTables
(),
parserAssert
.
getTables
());
assertConditions
(
actual
.
getConditions
(),
parserAssert
.
getConditions
());
assertSQLTokens
(
actual
.
getSqlTokens
(),
parserAssert
.
getTokens
(),
withPlaceholder
);
ParserAssertHelper
.
assertSqlTokens
(
parserAssert
.
getTokens
().
getTokenAsserts
(),
actual
.
getSqlTokens
(),
isPreparedStatement
);
if
(
actual
instanceof
SelectStatement
)
{
SelectStatement
selectStatement
=
(
SelectStatement
)
actual
;
SelectStatement
expectedSqlStatement
=
ParserJAXBHelper
.
getSelectStatement
(
parserAssert
);
ParserAssertHelper
.
assertOrderBy
(
expectedSqlStatement
.
getOrderByItems
(),
selectStatement
.
getOrderByItems
());
ParserAssertHelper
.
assertGroupBy
(
expectedSqlStatement
.
getGroupByItems
(),
selectStatement
.
getGroupByItems
());
ParserAssertHelper
.
assertAggregationSelectItem
(
expectedSqlStatement
.
getAggregationSelectItems
(),
selectStatement
.
getAggregationSelectItems
());
ParserAssertHelper
.
assertLimit
(
parserAssert
.
getLimit
(),
selectStatement
.
getLimit
(),
isPreparedStatement
);
ParserAssertHelper
.
assertLimit
(
parserAssert
.
getLimit
(),
selectStatement
.
getLimit
(),
withPlaceholder
);
}
}
private
void
assertTables
(
final
Tables
actual
,
final
List
<
TableAssert
>
expected
)
{
assertThat
(
actual
.
getTableNames
().
size
(),
is
(
expected
.
size
()));
for
(
TableAssert
each
:
expected
)
{
Optional
<
Table
>
table
Optional
;
Optional
<
Table
>
table
;
if
(
null
!=
each
.
getAlias
())
{
table
Optional
=
actual
.
find
(
each
.
getAlias
());
table
=
actual
.
find
(
each
.
getAlias
());
}
else
{
table
Optional
=
actual
.
find
(
each
.
getName
());
table
=
actual
.
find
(
each
.
getName
());
}
assertTrue
(
table
Optional
.
isPresent
());
assertTable
(
table
Optional
.
get
(),
each
);
assertTrue
(
table
.
isPresent
());
assertTable
(
table
.
get
(),
each
);
}
}
...
...
@@ -114,9 +135,9 @@ public final class IntegrateSupportedSQLParsingTest extends AbstractBaseIntegrat
private
void
assertConditions
(
final
Conditions
actual
,
final
List
<
ConditionAssert
>
expected
)
throws
NoSuchFieldException
,
IllegalAccessException
{
assertThat
(
actual
.
getConditions
().
size
(),
is
(
expected
.
size
()));
for
(
ConditionAssert
each
:
expected
)
{
Optional
<
Condition
>
condition
Optional
=
actual
.
find
(
new
Column
(
each
.
getColumnName
(),
each
.
getTableName
()));
assertTrue
(
condition
Optional
.
isPresent
());
assertCondition
(
condition
Optional
.
get
(),
each
);
Optional
<
Condition
>
condition
=
actual
.
find
(
new
Column
(
each
.
getColumnName
(),
each
.
getTableName
()));
assertTrue
(
condition
.
isPresent
());
assertCondition
(
condition
.
get
(),
each
);
}
}
...
...
@@ -143,4 +164,209 @@ public final class IntegrateSupportedSQLParsingTest extends AbstractBaseIntegrat
field
.
setAccessible
(
true
);
return
field
.
get
(
actual
);
}
private
void
assertSQLTokens
(
final
List
<
SQLToken
>
actual
,
final
SQLTokenAsserts
expected
,
final
boolean
withPlaceholder
)
{
assertTableTokens
(
actual
,
expected
);
assertIndexToken
(
actual
,
expected
);
assertItemsToken
(
actual
,
expected
);
assertGeneratedKeyToken
(
actual
,
expected
,
withPlaceholder
);
assertMultipleInsertValuesToken
(
actual
,
expected
);
assertOrderByToken
(
actual
,
expected
,
withPlaceholder
);
// TODO fix offset and row count
// assertOffsetToken(actual, expected);
// assertRowCountToken(actual, expected);
}
private
void
assertTableTokens
(
final
List
<
SQLToken
>
actual
,
final
SQLTokenAsserts
expected
)
{
List
<
TableToken
>
tableTokens
=
getTableTokens
(
actual
);
assertThat
(
tableTokens
.
size
(),
is
(
expected
.
getTableTokens
().
size
()));
int
count
=
0
;
for
(
TableTokenAssert
each
:
expected
.
getTableTokens
())
{
assertTableToken
(
tableTokens
.
get
(
count
),
each
);
count
++;
}
}
private
void
assertTableToken
(
final
TableToken
actual
,
final
TableTokenAssert
expected
)
{
assertThat
(
actual
.
getBeginPosition
(),
is
(
expected
.
getBeginPosition
()));
assertThat
(
actual
.
getOriginalLiterals
(),
is
(
expected
.
getOriginalLiterals
()));
}
private
List
<
TableToken
>
getTableTokens
(
final
List
<
SQLToken
>
actual
)
{
List
<
TableToken
>
result
=
new
ArrayList
<>(
actual
.
size
());
for
(
SQLToken
each
:
actual
)
{
if
(
each
instanceof
TableToken
)
{
result
.
add
((
TableToken
)
each
);
}
}
return
result
;
}
private
void
assertIndexToken
(
final
List
<
SQLToken
>
actual
,
final
SQLTokenAsserts
expected
)
{
Optional
<
IndexToken
>
indexToken
=
getIndexToken
(
actual
);
if
(
indexToken
.
isPresent
())
{
assertIndexToken
(
indexToken
.
get
(),
expected
.
getIndexToken
());
}
else
{
assertNull
(
expected
.
getIndexToken
());
}
}
private
void
assertIndexToken
(
final
IndexToken
actual
,
final
IndexTokenAssert
expected
)
{
assertThat
(
actual
.
getBeginPosition
(),
is
(
expected
.
getBeginPosition
()));
assertThat
(
actual
.
getOriginalLiterals
(),
is
(
expected
.
getOriginalLiterals
()));
assertThat
(
actual
.
getTableName
(),
is
(
expected
.
getTableName
()));
}
private
Optional
<
IndexToken
>
getIndexToken
(
final
List
<
SQLToken
>
actual
)
{
for
(
SQLToken
each
:
actual
)
{
if
(
each
instanceof
IndexToken
)
{
return
Optional
.
of
((
IndexToken
)
each
);
}
}
return
Optional
.
absent
();
}
private
void
assertItemsToken
(
final
List
<
SQLToken
>
actual
,
final
SQLTokenAsserts
expected
)
{
Optional
<
ItemsToken
>
itemsToken
=
getItemsToken
(
actual
);
if
(
itemsToken
.
isPresent
())
{
assertItemsToken
(
itemsToken
.
get
(),
expected
.
getItemsToken
());
}
else
{
assertNull
(
expected
.
getItemsToken
());
}
}
private
void
assertItemsToken
(
final
ItemsToken
actual
,
final
ItemsTokenAssert
expected
)
{
assertThat
(
actual
.
getBeginPosition
(),
is
(
expected
.
getBeginPosition
()));
assertThat
(
actual
.
getItems
(),
is
(
expected
.
getItems
()));
}
private
Optional
<
ItemsToken
>
getItemsToken
(
final
List
<
SQLToken
>
actual
)
{
for
(
SQLToken
each
:
actual
)
{
if
(
each
instanceof
ItemsToken
)
{
return
Optional
.
of
((
ItemsToken
)
each
);
}
}
return
Optional
.
absent
();
}
private
void
assertGeneratedKeyToken
(
final
List
<
SQLToken
>
actual
,
final
SQLTokenAsserts
expected
,
final
boolean
withPlaceholder
)
{
Optional
<
GeneratedKeyToken
>
generatedKeyToken
=
getGeneratedKeyToken
(
actual
);
if
(
generatedKeyToken
.
isPresent
())
{
assertGeneratedKeyToken
(
generatedKeyToken
.
get
(),
expected
.
getGeneratedKeyToken
(),
withPlaceholder
);
}
else
{
assertNull
(
expected
.
getGeneratedKeyToken
());
}
}
private
void
assertGeneratedKeyToken
(
final
GeneratedKeyToken
actual
,
final
GeneratedKeyTokenAssert
expected
,
final
boolean
withPlaceholder
)
{
if
(
withPlaceholder
)
{
assertThat
(
actual
.
getBeginPosition
(),
is
(
expected
.
getBeginPositionWithPlaceholder
()));
}
else
{
assertThat
(
actual
.
getBeginPosition
(),
is
(
expected
.
getBeginPositionWithoutPlaceholder
()));
}
}
private
Optional
<
GeneratedKeyToken
>
getGeneratedKeyToken
(
final
List
<
SQLToken
>
actual
)
{
for
(
SQLToken
each
:
actual
)
{
if
(
each
instanceof
GeneratedKeyToken
)
{
return
Optional
.
of
((
GeneratedKeyToken
)
each
);
}
}
return
Optional
.
absent
();
}
private
void
assertMultipleInsertValuesToken
(
final
List
<
SQLToken
>
actual
,
final
SQLTokenAsserts
expected
)
{
Optional
<
MultipleInsertValuesToken
>
multipleInsertValuesToken
=
getMultipleInsertValuesToken
(
actual
);
if
(
multipleInsertValuesToken
.
isPresent
())
{
assertMultipleInsertValuesToken
(
multipleInsertValuesToken
.
get
(),
expected
.
getMultipleInsertValuesToken
());
}
else
{
assertNull
(
expected
.
getMultipleInsertValuesToken
());
}
}
private
void
assertMultipleInsertValuesToken
(
final
MultipleInsertValuesToken
actual
,
final
MultipleInsertValuesTokenAssert
expected
)
{
assertThat
(
actual
.
getBeginPosition
(),
is
(
expected
.
getBeginPosition
()));
assertThat
(
actual
.
getValues
(),
is
(
expected
.
getValues
()));
}
private
Optional
<
MultipleInsertValuesToken
>
getMultipleInsertValuesToken
(
final
List
<
SQLToken
>
actual
)
{
for
(
SQLToken
each
:
actual
)
{
if
(
each
instanceof
MultipleInsertValuesToken
)
{
return
Optional
.
of
((
MultipleInsertValuesToken
)
each
);
}
}
return
Optional
.
absent
();
}
private
void
assertOrderByToken
(
final
List
<
SQLToken
>
actual
,
final
SQLTokenAsserts
expected
,
final
boolean
withPlaceholder
)
{
Optional
<
OrderByToken
>
orderByToken
=
getOrderByToken
(
actual
);
if
(
orderByToken
.
isPresent
())
{
assertOrderByToken
(
orderByToken
.
get
(),
expected
.
getOrderByToken
(),
withPlaceholder
);
}
else
{
assertNull
(
expected
.
getOrderByToken
());
}
}
private
void
assertOrderByToken
(
final
OrderByToken
actual
,
final
OrderByTokenAssert
expected
,
final
boolean
withPlaceholder
)
{
if
(
withPlaceholder
)
{
assertThat
(
actual
.
getBeginPosition
(),
is
(
expected
.
getBeginPositionWithPlaceholder
()));
}
else
{
assertThat
(
actual
.
getBeginPosition
(),
is
(
expected
.
getBeginPositionWithoutPlaceholder
()));
}
}
private
Optional
<
OrderByToken
>
getOrderByToken
(
final
List
<
SQLToken
>
actual
)
{
for
(
SQLToken
each
:
actual
)
{
if
(
each
instanceof
OrderByToken
)
{
return
Optional
.
of
((
OrderByToken
)
each
);
}
}
return
Optional
.
absent
();
}
private
void
assertOffsetToken
(
final
List
<
SQLToken
>
actual
,
final
SQLTokenAsserts
expected
)
{
Optional
<
OffsetToken
>
offsetToken
=
getOffsetToken
(
actual
);
if
(
offsetToken
.
isPresent
())
{
assertOffsetToken
(
offsetToken
.
get
(),
expected
.
getOffsetToken
());
}
else
{
assertNull
(
expected
.
getOffsetToken
());
}
}
private
void
assertOffsetToken
(
final
OffsetToken
actual
,
final
OffsetTokenAssert
expected
)
{
assertThat
(
actual
.
getBeginPosition
(),
is
(
expected
.
getBeginPosition
()));
assertThat
(
actual
.
getOffset
(),
is
(
expected
.
getOffset
()));
}
private
Optional
<
OffsetToken
>
getOffsetToken
(
final
List
<
SQLToken
>
actual
)
{
for
(
SQLToken
each
:
actual
)
{
if
(
each
instanceof
OffsetToken
)
{
return
Optional
.
of
((
OffsetToken
)
each
);
}
}
return
Optional
.
absent
();
}
private
void
assertRowCountToken
(
final
List
<
SQLToken
>
actual
,
final
SQLTokenAsserts
expected
)
{
Optional
<
RowCountToken
>
rowCountToken
=
getRowCountToken
(
actual
);
if
(
rowCountToken
.
isPresent
())
{
assertRowCountToken
(
rowCountToken
.
get
(),
expected
.
getRowCountToken
());
}
else
{
assertNull
(
expected
.
getRowCountToken
());
}
}
private
void
assertRowCountToken
(
final
RowCountToken
actual
,
final
RowCountTokenAssert
expected
)
{
assertThat
(
actual
.
getBeginPosition
(),
is
(
expected
.
getBeginPosition
()));
assertThat
(
actual
.
getRowCount
(),
is
(
expected
.
getRowCount
()));
}
private
Optional
<
RowCountToken
>
getRowCountToken
(
final
List
<
SQLToken
>
actual
)
{
for
(
SQLToken
each
:
actual
)
{
if
(
each
instanceof
RowCountToken
)
{
return
Optional
.
of
((
RowCountToken
)
each
);
}
}
return
Optional
.
absent
();
}
}
sharding-core/src/test/java/io/shardingjdbc/core/parsing/integrate/jaxb/token/GeneratedKeyTokenAssert.java
浏览文件 @
c11bb0eb
...
...
@@ -27,11 +27,11 @@ import javax.xml.bind.annotation.XmlAttribute;
@Getter
@Setter
@XmlAccessorType
(
XmlAccessType
.
FIELD
)
public
final
class
GeneratedKeyTokenAssert
extend
s
SQLTokenAssert
{
public
final
class
GeneratedKeyTokenAssert
implement
s
SQLTokenAssert
{
@XmlAttribute
(
name
=
"begin-position-
of-statement
"
)
private
int
beginPosition
OfStatement
;
@XmlAttribute
(
name
=
"begin-position-
with-placeholder
"
)
private
int
beginPosition
WithPlaceholder
;
@XmlAttribute
(
name
=
"begin-position-
of-prepared-statement
"
)
private
int
beginPosition
OfPreparedStatement
;
@XmlAttribute
(
name
=
"begin-position-
without-placeholder
"
)
private
int
beginPosition
WithoutPlaceholder
;
}
sharding-core/src/test/java/io/shardingjdbc/core/parsing/integrate/jaxb/token/IndexTokenAssert.java
浏览文件 @
c11bb0eb
...
...
@@ -27,7 +27,10 @@ import javax.xml.bind.annotation.XmlAttribute;
@Getter
@Setter
@XmlAccessorType
(
XmlAccessType
.
FIELD
)
public
final
class
IndexTokenAssert
extends
SQLTokenAssert
{
public
final
class
IndexTokenAssert
implements
SQLTokenAssert
{
@XmlAttribute
(
name
=
"begin-position"
)
private
int
beginPosition
;
@XmlAttribute
(
name
=
"original-literals"
)
private
String
originalLiterals
;
...
...
sharding-core/src/test/java/io/shardingjdbc/core/parsing/integrate/jaxb/token/ItemsTokenAssert.java
浏览文件 @
c11bb0eb
...
...
@@ -22,6 +22,7 @@ import lombok.Setter;
import
javax.xml.bind.annotation.XmlAccessType
;
import
javax.xml.bind.annotation.XmlAccessorType
;
import
javax.xml.bind.annotation.XmlAttribute
;
import
javax.xml.bind.annotation.XmlElement
;
import
javax.xml.bind.annotation.XmlElementWrapper
;
import
java.util.LinkedList
;
...
...
@@ -30,7 +31,10 @@ import java.util.List;
@Getter
@Setter
@XmlAccessorType
(
XmlAccessType
.
FIELD
)
public
final
class
ItemsTokenAssert
extends
SQLTokenAssert
{
public
final
class
ItemsTokenAssert
implements
SQLTokenAssert
{
@XmlAttribute
(
name
=
"begin-position"
)
private
int
beginPosition
;
@XmlElementWrapper
(
name
=
"items"
)
@XmlElement
(
name
=
"item"
)
...
...
sharding-core/src/test/java/io/shardingjdbc/core/parsing/integrate/jaxb/token/MultipleInsertValuesTokenAssert.java
浏览文件 @
c11bb0eb
...
...
@@ -22,6 +22,7 @@ import lombok.Setter;
import
javax.xml.bind.annotation.XmlAccessType
;
import
javax.xml.bind.annotation.XmlAccessorType
;
import
javax.xml.bind.annotation.XmlAttribute
;
import
javax.xml.bind.annotation.XmlElement
;
import
javax.xml.bind.annotation.XmlElementWrapper
;
import
java.util.LinkedList
;
...
...
@@ -30,7 +31,10 @@ import java.util.List;
@Getter
@Setter
@XmlAccessorType
(
XmlAccessType
.
FIELD
)
public
final
class
MultipleInsertValuesTokenAssert
extends
SQLTokenAssert
{
public
final
class
MultipleInsertValuesTokenAssert
implements
SQLTokenAssert
{
@XmlAttribute
(
name
=
"begin-position"
)
private
int
beginPosition
;
@XmlElementWrapper
(
name
=
"values"
)
@XmlElement
(
name
=
"value"
)
...
...
sharding-core/src/test/java/io/shardingjdbc/core/parsing/integrate/jaxb/token/OffsetTokenAssert.java
浏览文件 @
c11bb0eb
...
...
@@ -27,7 +27,10 @@ import javax.xml.bind.annotation.XmlAttribute;
@Getter
@Setter
@XmlAccessorType
(
XmlAccessType
.
FIELD
)
public
final
class
OffsetTokenAssert
extends
SQLTokenAssert
{
public
final
class
OffsetTokenAssert
implements
SQLTokenAssert
{
@XmlAttribute
(
name
=
"begin-position"
)
private
int
beginPosition
;
@XmlAttribute
(
name
=
"offset"
)
private
int
offset
;
...
...
sharding-core/src/test/java/io/shardingjdbc/core/parsing/integrate/jaxb/token/OrderByTokenAssert.java
浏览文件 @
c11bb0eb
...
...
@@ -27,11 +27,11 @@ import javax.xml.bind.annotation.XmlAttribute;
@Getter
@Setter
@XmlAccessorType
(
XmlAccessType
.
FIELD
)
public
final
class
OrderByTokenAssert
extend
s
SQLTokenAssert
{
public
final
class
OrderByTokenAssert
implement
s
SQLTokenAssert
{
@XmlAttribute
(
name
=
"begin-position-
of-statement
"
)
private
int
beginPosition
OfStatement
;
@XmlAttribute
(
name
=
"begin-position-
with-placeholder
"
)
private
int
beginPosition
WithPlaceholder
;
@XmlAttribute
(
name
=
"begin-position-
of-prepared-statement
"
)
private
int
beginPosition
OfPreparedStatement
;
@XmlAttribute
(
name
=
"begin-position-
without-placeholder
"
)
private
int
beginPosition
WithoutPlaceholder
;
}
sharding-core/src/test/java/io/shardingjdbc/core/parsing/integrate/jaxb/token/RowCountTokenAssert.java
浏览文件 @
c11bb0eb
...
...
@@ -27,7 +27,10 @@ import javax.xml.bind.annotation.XmlAttribute;
@Getter
@Setter
@XmlAccessorType
(
XmlAccessType
.
FIELD
)
public
final
class
RowCountTokenAssert
extends
SQLTokenAssert
{
public
final
class
RowCountTokenAssert
implements
SQLTokenAssert
{
@XmlAttribute
(
name
=
"begin-position"
)
private
int
beginPosition
;
@XmlAttribute
(
name
=
"row-count"
)
private
int
rowCount
;
...
...
sharding-core/src/test/java/io/shardingjdbc/core/parsing/integrate/jaxb/token/SQLTokenAssert.java
浏览文件 @
c11bb0eb
...
...
@@ -17,18 +17,6 @@
package
io.shardingjdbc.core.parsing.integrate.jaxb.token
;
import
lombok.Getter
;
import
lombok.Setter
;
import
javax.xml.bind.annotation.XmlAccessType
;
import
javax.xml.bind.annotation.XmlAccessorType
;
import
javax.xml.bind.annotation.XmlAttribute
;
@Getter
@Setter
@XmlAccessorType
(
XmlAccessType
.
FIELD
)
public
abstract
class
SQLTokenAssert
{
public
interface
SQLTokenAssert
{
@XmlAttribute
(
name
=
"begin-position"
)
private
int
beginPosition
;
}
sharding-core/src/test/java/io/shardingjdbc/core/parsing/integrate/jaxb/token/SQLTokenAsserts.java
浏览文件 @
c11bb0eb
...
...
@@ -32,7 +32,7 @@ import java.util.List;
public
final
class
SQLTokenAsserts
{
@XmlElement
(
name
=
"table-token"
)
private
List
<
TableTokenAssert
>
tableTokens
;
private
List
<
TableTokenAssert
>
tableTokens
=
new
LinkedList
<>()
;
@XmlElement
(
name
=
"index-token"
)
private
IndexTokenAssert
indexToken
;
...
...
@@ -54,38 +54,4 @@ public final class SQLTokenAsserts {
@XmlElement
(
name
=
"row-count-token"
)
private
RowCountTokenAssert
rowCountToken
;
/**
* Get all SQL token asserts.
*
* @return all SQL token asserts
*/
public
List
<
SQLTokenAssert
>
getTokenAsserts
()
{
List
<
SQLTokenAssert
>
result
=
new
LinkedList
<>();
if
(
null
!=
tableTokens
)
{
result
.
addAll
(
tableTokens
);
}
if
(
null
!=
indexToken
)
{
result
.
add
(
indexToken
);
}
if
(
null
!=
offsetToken
)
{
result
.
add
(
offsetToken
);
}
if
(
null
!=
rowCountToken
)
{
result
.
add
(
rowCountToken
);
}
if
(
null
!=
itemsToken
)
{
result
.
add
(
itemsToken
);
}
if
(
null
!=
generatedKeyToken
)
{
result
.
add
(
generatedKeyToken
);
}
if
(
null
!=
multipleInsertValuesToken
)
{
result
.
add
(
multipleInsertValuesToken
);
}
if
(
null
!=
orderByToken
)
{
result
.
add
(
orderByToken
);
}
return
result
;
}
}
sharding-core/src/test/java/io/shardingjdbc/core/parsing/integrate/jaxb/token/TableTokenAssert.java
浏览文件 @
c11bb0eb
...
...
@@ -27,7 +27,10 @@ import javax.xml.bind.annotation.XmlAttribute;
@Getter
@Setter
@XmlAccessorType
(
XmlAccessType
.
FIELD
)
public
final
class
TableTokenAssert
extends
SQLTokenAssert
{
public
final
class
TableTokenAssert
implements
SQLTokenAssert
{
@XmlAttribute
(
name
=
"begin-position"
)
private
int
beginPosition
;
@XmlAttribute
(
name
=
"original-literals"
)
private
String
originalLiterals
;
...
...
sharding-core/src/test/resources/parser/drop.xml
浏览文件 @
c11bb0eb
...
...
@@ -31,6 +31,9 @@
<tables>
<table
name=
"t_log"
/>
</tables>
<tokens>
<table-token
begin-position=
"11"
original-literals=
"t_log"
/>
</tokens>
</parser-assert>
<parser-assert
sql-case-id=
"assertDropTableCascade"
>
...
...
sharding-core/src/test/resources/parser/insert.xml
浏览文件 @
c11bb0eb
...
...
@@ -65,7 +65,7 @@
<item>
item_id
</item>
</items>
</items-token>
<generated-key-token
begin-position-
of-statement=
"77"
begin-position-of-prepared-statement=
"73
"
/>
<generated-key-token
begin-position-
with-placeholder=
"73"
begin-position-without-placeholder=
"77
"
/>
</tokens>
<conditions>
<condition
column-name=
"order_id"
table-name=
"t_order_item"
operator=
"EQUAL"
>
...
...
sharding-core/src/test/resources/parser/select_group_by.xml
浏览文件 @
c11bb0eb
...
...
@@ -6,7 +6,7 @@
</tables>
<tokens>
<table-token
begin-position=
"76"
original-literals=
"`t_order_item`"
/>
<order-by-token
begin-position-
of-statement=
"162"
begin-position-of-prepared-statement=
"156"
/>
<order-by-token
begin-position-
with-placeholder=
"156"
begin-position-without-placeholder=
"162"
/>
</tokens>
<conditions>
<condition
column-name=
"order_id"
table-name=
"t_order_item"
operator=
"IN"
>
...
...
@@ -155,7 +155,7 @@
<item>
o.user_id AS GROUP_BY_DERIVED_0
</item>
</items>
</items-token>
<order-by-token
begin-position-
of-statement=
"195"
begin-position-of-prepared-statement=
"194
"
/>
<order-by-token
begin-position-
with-placeholder=
"194"
begin-position-without-placeholder=
"195
"
/>
</tokens>
<conditions>
<condition
column-name=
"user_id"
table-name=
"t_order"
operator=
"IN"
>
...
...
@@ -266,7 +266,7 @@
</tables>
<tokens>
<table-token
begin-position=
"58"
original-literals=
"t_order"
/>
<order-by-token
begin-position-
of-statement=
"80"
begin-position-of-prepared-statement=
"80"
/>
<order-by-token
begin-position-
with-placeholder=
"80"
begin-position-without-placeholder=
"80"
/>
</tokens>
<aggregation-select-items>
<aggregation-select-item
inner-expression=
"(order_id)"
aggregation-type=
"SUM"
alias=
"orders_sum"
/>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录