Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
kt-keystone
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Matrix
kt-keystone
Commits
adab7aee
提交
adab7aee
authored
1月 21, 2022
作者:
Matrix
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(SQL执行器): 将单引号去掉,由输入者来填写
上级
2766b230
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
43 行增加
和
16 行删除
+43
-16
HttpClientActuator.java
...a/org/matrix/actuators/httpclient/HttpClientActuator.java
+1
-0
SqlExpActuator.java
...rc/main/java/org/matrix/actuators/sql/SqlExpActuator.java
+11
-10
TestController.java
...n/java/org/matrix/database/controller/TestController.java
+28
-0
DynamicVariable.java
...main/java/org/matrix/database/entity/DynamicVariable.java
+1
-5
HttpClientActuatorTest.java
...java/org/matrix/actuators/sql/HttpClientActuatorTest.java
+1
-1
SqlExpActuatorTest.java
...est/java/org/matrix/actuators/sql/SqlExpActuatorTest.java
+1
-0
没有找到文件。
kt-base/src/main/java/org/matrix/actuators/httpclient/HttpClientActuator.java
浏览文件 @
adab7aee
...
...
@@ -148,6 +148,7 @@ public class HttpClientActuator implements Actuator {
endTime
.
getTime
()
-
startTime
.
getTime
()
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
throw
new
HttpRequestException
(
String
.
format
(
"解析返回值失败,本次请求详细参数如下: %s "
,
httpRequestDetail
));
}
finally
{
//关闭请求request
...
...
kt-base/src/main/java/org/matrix/actuators/sql/SqlExpActuator.java
浏览文件 @
adab7aee
...
...
@@ -73,8 +73,8 @@ public class SqlExpActuator implements Actuator {
if
(
varList
.
size
()
==
1
)
{
SqlRegularObject
sqlReg
=
varList
.
get
(
0
);
DynamicVariable
variable
=
varService
.
getByName
(
sqlReg
.
getVarName
(),
projectId
)
.
orElseThrow
(()
->
new
GlobalException
(
"没有找到name = "
+
sqlReg
.
getVarName
()
+
" 的动态变量"
)
)
.
parseSqlDetail
(
);
.
map
(
DynamicVariable:
:
parseSqlDetail
)
.
orElseThrow
(()
->
new
GlobalException
(
"没有找到name = "
+
sqlReg
.
getVarName
()
+
" 的动态变量"
)
);
return
parseVar
(
envId
,
sqlReg
.
getIndex
(),
projectId
,
variable
);
}
else
{
throw
new
GlobalException
(
"varNameString 参数请一次只输入一个动态变量! 你的提供的参数为: "
+
varNameString
);
...
...
@@ -91,15 +91,16 @@ public class SqlExpActuator implements Actuator {
*/
public
String
parseVarById
(
Long
varId
,
Long
envId
,
Long
projectId
)
{
DynamicVariable
dynamicVar
=
Optional
.
of
(
varService
.
getById
(
varId
))
.
orElseThrow
(()
->
new
GlobalException
(
String
.
format
(
"没有找到ID = %d 的动态变量"
,
varId
))
)
.
parseSqlDetail
(
);
.
map
(
DynamicVariable:
:
parseSqlDetail
)
.
orElseThrow
(()
->
new
GlobalException
(
String
.
format
(
"没有找到ID = %d 的动态变量"
,
varId
))
);
return
parseVar
(
envId
,
0
,
projectId
,
dynamicVar
);
}
/**
* 依据不同的变量类型调用不同的解析Handler
* @param envId 环境ID - 环境共享变量需要
*
* @param envId 环境ID - 环境共享变量需要
* @param takenIndex 使用的结果集下标,递归传递
* @param projectId 项目id,防止SQL表达式中带的嵌合动态变量名字重复
* @param dynamicVar {@link DynamicVariable}
...
...
@@ -116,7 +117,7 @@ public class SqlExpActuator implements Actuator {
}
else
if
(
varType
==
HTTP_VARIABLE
)
{
return
httpVarHandler
(
envId
,
projectId
,
dynamicVar
);
}
else
if
(
varType
==
CASE_VARIABLE
)
{
return
use
caseHandler
(
envId
,
projectId
,
dynamicVar
);
return
caseHandler
(
envId
,
projectId
,
dynamicVar
);
}
else
{
throw
new
GlobalException
(
"不支持的动态变量类型: "
+
varType
);
}
...
...
@@ -130,7 +131,7 @@ public class SqlExpActuator implements Actuator {
* @param dynamicVar {@link DynamicVariable}
* @return 解析后的字符串
*/
private
String
use
caseHandler
(
Long
envId
,
Long
projectId
,
DynamicVariable
dynamicVar
)
{
private
String
caseHandler
(
Long
envId
,
Long
projectId
,
DynamicVariable
dynamicVar
)
{
CaseActuator
caseActuator
=
new
CaseActuator
(
envId
,
projectId
);
long
caseId
=
Long
.
parseLong
(
dynamicVar
.
getDetail
());
TestCase
testCase
=
Optional
.
of
(
caseService
.
getById
(
caseId
))
...
...
@@ -172,11 +173,11 @@ public class SqlExpActuator implements Actuator {
// 如果还存在动态变量,则继续递归解析
for
(
SqlRegularObject
sqlRegular
:
dynamicVarList
)
{
DynamicVariable
recVar
=
varService
.
getByName
(
sqlRegular
.
getVarName
(),
projectId
)
.
map
(
DynamicVariable:
:
parseSqlDetail
)
.
orElseThrow
(()
->
new
GlobalException
(
String
.
format
(
"没有找到项目id = %d 下,name = %s的变量"
,
projectId
,
sqlRegular
.
getVarName
())))
.
parseSqlDetail
();
String
.
format
(
"没有找到项目id = %d 下,name = %s的变量"
,
projectId
,
sqlRegular
.
getVarName
())));
String
calculatedValue
=
parseVar
(
envId
,
sqlRegular
.
getIndex
(),
projectId
,
recVar
);
sqlExp
=
sqlExp
.
replaceAll
(
String
.
format
(
REPLACE_VAR_EXP
,
sqlRegular
.
getVarName
()),
"'"
+
calculatedValue
+
"'"
);
sqlExp
=
sqlExp
.
replaceAll
(
String
.
format
(
REPLACE_VAR_EXP
,
sqlRegular
.
getVarName
()),
calculatedValue
);
dynamicVar
.
getSqlExpDetail
().
setSqlExp
(
sqlExp
);
}
}
...
...
kt-base/src/main/java/org/matrix/database/controller/TestController.java
0 → 100644
浏览文件 @
adab7aee
package
org
.
matrix
.
database
.
controller
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* TestController. 用于测试的控制器
*
* @author Matrix <xhyrzldf@gmail.com>
* @since 2022/1/21 at 4:53 PM
* Suffering is the most powerful teacher of life.
*/
@RestController
@RequestMapping
(
"/test"
)
public
class
TestController
{
/**
* 获得表名,用于测试http执行器的调用
*/
@GetMapping
(
"/tableName"
)
public
ResponseEntity
<
String
>
getTableName
(
@RequestParam
String
tableName
)
{
return
ResponseEntity
.
ok
(
tableName
);
}
}
kt-base/src/main/java/org/matrix/database/entity/DynamicVariable.java
浏览文件 @
adab7aee
...
...
@@ -8,7 +8,6 @@ import io.swagger.annotations.ApiModelProperty;
import
lombok.*
;
import
org.matrix.actuators.sql.SqlExpDetail
;
import
org.matrix.enums.DynamicVarType
;
import
org.matrix.exception.GlobalException
;
/**
* <p>
...
...
@@ -52,11 +51,8 @@ public class DynamicVariable extends BaseEntity {
public
DynamicVariable
parseSqlDetail
()
{
if
(
type
==
DynamicVarType
.
SQL_VARIABLE
)
{
this
.
sqlExpDetail
=
JSON
.
parseObject
(
this
.
detail
,
SqlExpDetail
.
class
);
return
this
;
}
else
{
throw
new
GlobalException
(
"只有SQL类型的变量才能解析详细内容"
);
}
return
this
;
}
...
...
kt-base/src/test/java/org/matrix/actuators/sql/HttpClientActuatorTest.java
浏览文件 @
adab7aee
...
...
@@ -22,7 +22,7 @@ public class HttpClientActuatorTest {
1
l
);
String
json
=
"{\n"
+
" \"url\": \"http://127.0.0.1:
13245
/test/tableName\",\n"
+
" \"url\": \"http://127.0.0.1:
8080
/test/tableName\",\n"
+
" \"method\": \"GET\",\n"
+
" \"requestType\": \"QUERY\",\n"
+
" \"requestBodies\": [\n"
+
...
...
kt-base/src/test/java/org/matrix/actuators/sql/SqlExpActuatorTest.java
浏览文件 @
adab7aee
...
...
@@ -25,6 +25,7 @@ class SqlExpActuatorTest {
void
parseVarByName
()
{
// todo 这里的递归校验要多写一点
String
result
=
sqlExpActuator
.
parseVarByName
(
"${componentName}[2]"
,
1L
,
1L
);
System
.
out
.
println
(
result
);
Assertions
.
assertNotNull
(
result
);
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论