From ef045495c75e67062e7d44b211c7d2bd92e0f891 Mon Sep 17 00:00:00 2001
From: q1279335527 <1279335527@qq.com>
Date: Sun, 20 Apr 2025 22:02:21 +0800
Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81http=E8=AF=B7=E6=B1=82?=
=?UTF-8?q?=E7=AC=AC=E4=B8=89=E6=96=B9=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 3 +
README.md | 15 +-
apis/pom.xml | 5 +
.../common/connector/entity/bo/Linker.java | 7 +-
.../common/connector/linker/ConnBuilder.java | 4 +
.../common/connector/linker/LinkerHelper.java | 8 ++
.../core/constants/FolderNameConstant.java | 4 +
.../common/crud/core/service/BaseService.java | 4 +-
.../crud/core/service/BaseServiceImpl.java | 3 +-
executor/pom.xml | 9 +-
executor/viewer-executor-core/pom.xml | 6 +
.../executor/core/base/AbstractExecutor.java | 7 +-
.../executor/core/entity/QueryBody.java | 1 +
.../core/factory/ExecutorRegistry.java | 6 +-
...ot.autoconfigure.AutoConfiguration.imports | 1 -
modules/viewer-modules-ds/pom.xml | 2 +
.../viewer-modules-ds-command}/pom.xml | 6 +-
.../ds/command/DsCmdAutoConfiguration.java | 6 +-
.../ds/command/executor/CommandExecutor.java | 41 ++++++
.../main/resources/META-INF/spring.factories | 2 +-
...ot.autoconfigure.AutoConfiguration.imports | 1 +
.../viewer-modules-ds-core/pom.xml | 8 ++
.../ds/core/factory/ConnectFactory.java | 5 +-
.../ds}/core/factory/ExecutorManager.java | 17 ++-
.../core/service/LinkerConfigServiceImpl.java | 2 +-
.../viewer-modules-ds-http/pom.xml | 32 +++++
.../viewer-modules-ds-http-core/pom.xml | 21 +++
.../core/DsHttpCoreAutoConfiguration.java | 11 ++
.../core/constant/RequireAttrConstant.java | 8 ++
.../core/constant/SupportTypeConstant.java | 5 +
.../http/core/enums/OkHttp3BuilderEnum.java | 58 ++++++++
.../http/core/executor/HttpReqExecutor.java | 85 ++++++++++++
.../ds/http/core/linker/HttpConnBuilder.java | 129 ++++++++++++++++++
.../modules/ds/http/core/req/BaseReq.java | 58 ++++++++
.../modules/ds/http/core/req/SyncHttpReq.java | 58 ++++++++
.../main/resources/META-INF/spring.factories | 1 +
...ot.autoconfigure.AutoConfiguration.imports | 1 +
.../viewer-modules-ds-http-simple/pom.xml | 28 ++++
.../simple/DsHttpSimpleAutoConfiguration.java | 11 ++
.../interceptor/SelfInterceptorLoad.java | 10 ++
.../simple/linker/ManualHttpReqBuilder.java | 45 ++++++
.../linker/ManualHttpReqLinkerBuilder.java | 24 ++++
.../simple/linker/SimpleHttpReqBuilder.java | 28 ++++
.../main/resources/META-INF/spring.factories | 1 +
...ot.autoconfigure.AutoConfiguration.imports | 1 +
.../viewer-modules-ds-jdbc-core/pom.xml | 1 +
.../core/constant/SupportTypeConstant.java | 6 +
.../core/factory/MybatisSqlQueryExecutor.java | 23 ++--
.../ds/jdbc/mysql/config/MysqlDsConfig.java | 5 +-
.../self/linker/ManualJdbcLinkerBuilder.java | 4 +-
modules/viewer-modules-step/pom.xml | 4 -
.../step/executor/SimpleBlockExecutor.java | 24 ++--
pom.xml | 15 +-
53 files changed, 809 insertions(+), 61 deletions(-)
delete mode 100644 executor/viewer-executor-mybatis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
rename {executor/viewer-executor-mybatis => modules/viewer-modules-ds/viewer-modules-ds-command}/pom.xml (82%)
rename executor/viewer-executor-mybatis/src/main/java/xyz/thoughtset/viewer/executor/mybatis/MybatisExecutorAutoConfiguration.java => modules/viewer-modules-ds/viewer-modules-ds-command/src/main/java/xyz/thoughtset/viewer/modules/ds/command/DsCmdAutoConfiguration.java (73%)
create mode 100644 modules/viewer-modules-ds/viewer-modules-ds-command/src/main/java/xyz/thoughtset/viewer/modules/ds/command/executor/CommandExecutor.java
rename {executor/viewer-executor-mybatis => modules/viewer-modules-ds/viewer-modules-ds-command}/src/main/resources/META-INF/spring.factories (62%)
create mode 100644 modules/viewer-modules-ds/viewer-modules-ds-command/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
rename {executor/viewer-executor-core/src/main/java/xyz/thoughtset/viewer/executor => modules/viewer-modules-ds/viewer-modules-ds-core/src/main/java/xyz/thoughtset/viewer/modules/ds}/core/factory/ExecutorManager.java (71%)
create mode 100644 modules/viewer-modules-ds/viewer-modules-ds-http/pom.xml
create mode 100644 modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/pom.xml
create mode 100644 modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/DsHttpCoreAutoConfiguration.java
create mode 100644 modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/constant/RequireAttrConstant.java
create mode 100644 modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/constant/SupportTypeConstant.java
create mode 100644 modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/enums/OkHttp3BuilderEnum.java
create mode 100644 modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/executor/HttpReqExecutor.java
create mode 100644 modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/linker/HttpConnBuilder.java
create mode 100644 modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/req/BaseReq.java
create mode 100644 modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/req/SyncHttpReq.java
create mode 100644 modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/resources/META-INF/spring.factories
create mode 100644 modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
create mode 100644 modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/pom.xml
create mode 100644 modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/src/main/java/xyz/thoughtset/viewer/modules/ds/http/simple/DsHttpSimpleAutoConfiguration.java
create mode 100644 modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/src/main/java/xyz/thoughtset/viewer/modules/ds/http/simple/interceptor/SelfInterceptorLoad.java
create mode 100644 modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/src/main/java/xyz/thoughtset/viewer/modules/ds/http/simple/linker/ManualHttpReqBuilder.java
create mode 100644 modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/src/main/java/xyz/thoughtset/viewer/modules/ds/http/simple/linker/ManualHttpReqLinkerBuilder.java
create mode 100644 modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/src/main/java/xyz/thoughtset/viewer/modules/ds/http/simple/linker/SimpleHttpReqBuilder.java
create mode 100644 modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/src/main/resources/META-INF/spring.factories
create mode 100644 modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
create mode 100644 modules/viewer-modules-ds/viewer-modules-ds-jdbc/viewer-modules-ds-jdbc-core/src/main/java/xyz/thoughtset/viewer/modules/ds/jdbc/core/constant/SupportTypeConstant.java
rename executor/viewer-executor-mybatis/src/main/java/xyz/thoughtset/viewer/executor/mybatis/factory/MybatisTypeQueryExecutor.java => modules/viewer-modules-ds/viewer-modules-ds-jdbc/viewer-modules-ds-jdbc-core/src/main/java/xyz/thoughtset/viewer/modules/ds/jdbc/core/factory/MybatisSqlQueryExecutor.java (90%)
diff --git a/.gitignore b/.gitignore
index 549e00a..0adc7c7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
HELP.md
+.DS_Store
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
@@ -29,5 +30,7 @@ build/
!**/src/main/**/build/
!**/src/test/**/build/
+test/
+
### VS Code ###
.vscode/
diff --git a/README.md b/README.md
index 98254a8..c01d869 100644
--- a/README.md
+++ b/README.md
@@ -81,11 +81,14 @@ java -jar viewer-apis-service.jar --spring.config.location=application.yml
MIT License - 自由修改和商用,但需保留原始版权声明
## ☎ 联系我们
-- Email: your-email@example.com
-- GitHub Issues: https://github.com/your-repo/viewer/issues
+- 欢迎大家提需求和建议[【新建issuses】](https://gitee.com/ThoughtSet/Viewer/issues/new)!(详细描述你的原始需求,我们会帮你提供一些方案,节约大家的成本)
+- **内推项目** 如您觉得项目不错,可推荐到公司,建立长期稳定的商业合作,提供更专业的技术服务。
-## 分支命名规则
-- `feat/*`:新功能开发
-- `fix/*`:问题修复
-- `docs/*`:文档更新
+[//]: # (## 分支命名规则)
+
+[//]: # (- `feat/*`:新功能开发)
+
+[//]: # (- `fix/*`:问题修复)
+
+[//]: # (- `docs/*`:文档更新)
diff --git a/apis/pom.xml b/apis/pom.xml
index b761682..6aa4cd7 100644
--- a/apis/pom.xml
+++ b/apis/pom.xml
@@ -35,6 +35,11 @@
xyz.thoughtset.viewer
viewer-modules-ds-jdbc-self
+
+
+ xyz.thoughtset.viewer
+ viewer-modules-ds-http-simple
+
\ No newline at end of file
diff --git a/commons/viewer-common-connector/src/main/java/xyz/thoughtset/viewer/common/connector/entity/bo/Linker.java b/commons/viewer-common-connector/src/main/java/xyz/thoughtset/viewer/common/connector/entity/bo/Linker.java
index 5651e38..16f9dd9 100644
--- a/commons/viewer-common-connector/src/main/java/xyz/thoughtset/viewer/common/connector/entity/bo/Linker.java
+++ b/commons/viewer-common-connector/src/main/java/xyz/thoughtset/viewer/common/connector/entity/bo/Linker.java
@@ -19,16 +19,17 @@ public class Linker {
protected String linkerType;
- public Linker(String title, String driverClassName, Map otherSettings, Boolean reactive) {
+ public Linker(String title, String driverClassName, Map otherSettings, Boolean reactive,String linkerType) {
this.id = title;
this.driverClassName = driverClassName;
this.otherSettings = otherSettings;
this.nativeDriver = Boolean.TRUE;
this.reactive = reactive;
+ this.linkerType = linkerType;
}
- public Linker(String title, String driverClassName) {
- this(title, driverClassName, null, false);
+ public Linker(String title, String driverClassName,String linkerType) {
+ this(title, driverClassName, null, false,linkerType);
}
}
diff --git a/commons/viewer-common-connector/src/main/java/xyz/thoughtset/viewer/common/connector/linker/ConnBuilder.java b/commons/viewer-common-connector/src/main/java/xyz/thoughtset/viewer/common/connector/linker/ConnBuilder.java
index 4881a50..549a065 100644
--- a/commons/viewer-common-connector/src/main/java/xyz/thoughtset/viewer/common/connector/linker/ConnBuilder.java
+++ b/commons/viewer-common-connector/src/main/java/xyz/thoughtset/viewer/common/connector/linker/ConnBuilder.java
@@ -18,5 +18,9 @@ public abstract class ConnBuilder {
public abstract Object buildConnect(ConnectorMeta connectorMeta, Properties properties);
+ public Object unloadConnect(ConnectorMeta connectorMeta, Properties properties) {
+ return null;
+ }
+
}
diff --git a/commons/viewer-common-connector/src/main/java/xyz/thoughtset/viewer/common/connector/linker/LinkerHelper.java b/commons/viewer-common-connector/src/main/java/xyz/thoughtset/viewer/common/connector/linker/LinkerHelper.java
index 68cc9a3..8b58196 100644
--- a/commons/viewer-common-connector/src/main/java/xyz/thoughtset/viewer/common/connector/linker/LinkerHelper.java
+++ b/commons/viewer-common-connector/src/main/java/xyz/thoughtset/viewer/common/connector/linker/LinkerHelper.java
@@ -46,6 +46,14 @@ public class LinkerHelper{
return linkerTypeCache.get(linkId);
}
+ public static String getTarExecType(String linkId) {
+ if (!connectorCache.containsKey(linkId)) {
+ log.error("Linker not found for id: {}", linkId);
+ return null;
+ }
+ return connectorCache.get(linkId).dataLinker.getLinkerType();
+ }
+
public static void registerConn(ConnBuilder connBuilder) {
Linker linker = connBuilder.getDataLinker();
registerConnectorToCache(linker.getId(), connBuilder);
diff --git a/commons/viewer-common-core/src/main/java/xyz/thoughtset/viewer/common/core/constants/FolderNameConstant.java b/commons/viewer-common-core/src/main/java/xyz/thoughtset/viewer/common/core/constants/FolderNameConstant.java
index 4d4afeb..baf67d3 100644
--- a/commons/viewer-common-core/src/main/java/xyz/thoughtset/viewer/common/core/constants/FolderNameConstant.java
+++ b/commons/viewer-common-core/src/main/java/xyz/thoughtset/viewer/common/core/constants/FolderNameConstant.java
@@ -10,4 +10,8 @@ public class FolderNameConstant {
return folderName + File.separator + fileName;
}
+ public static String jarFileAllPath(String jarFilePath) {
+ return folderWithSep(FolderNameConstant.LINKER , jarFilePath);
+ }
+
}
diff --git a/commons/viewer-common-crud/viewer-common-crud-core/src/main/java/xyz/thoughtset/viewer/common/crud/core/service/BaseService.java b/commons/viewer-common-crud/viewer-common-crud-core/src/main/java/xyz/thoughtset/viewer/common/crud/core/service/BaseService.java
index bd27efb..cbf31e2 100644
--- a/commons/viewer-common-crud/viewer-common-crud-core/src/main/java/xyz/thoughtset/viewer/common/crud/core/service/BaseService.java
+++ b/commons/viewer-common-crud/viewer-common-crud-core/src/main/java/xyz/thoughtset/viewer/common/crud/core/service/BaseService.java
@@ -2,13 +2,15 @@ package xyz.thoughtset.viewer.common.crud.core.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
+import xyz.thoughtset.viewer.common.core.entity.IdMeta;
import java.util.LinkedHashMap;
import java.util.List;
-public interface BaseService extends IService {
+public interface BaseService extends IService {
public Object createData(LinkedHashMap baseMap);
+
public Object updateData(LinkedHashMap baseMap);
public Object saveData(LinkedHashMap baseMap);
diff --git a/commons/viewer-common-crud/viewer-common-crud-core/src/main/java/xyz/thoughtset/viewer/common/crud/core/service/BaseServiceImpl.java b/commons/viewer-common-crud/viewer-common-crud-core/src/main/java/xyz/thoughtset/viewer/common/crud/core/service/BaseServiceImpl.java
index 1662394..9825194 100644
--- a/commons/viewer-common-crud/viewer-common-crud-core/src/main/java/xyz/thoughtset/viewer/common/crud/core/service/BaseServiceImpl.java
+++ b/commons/viewer-common-crud/viewer-common-crud-core/src/main/java/xyz/thoughtset/viewer/common/crud/core/service/BaseServiceImpl.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import xyz.thoughtset.viewer.common.core.entity.IdMeta;
import xyz.thoughtset.viewer.common.crud.core.util.MPWrapperUtil;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.SneakyThrows;
@@ -13,7 +14,7 @@ import java.util.LinkedHashMap;
import java.util.List;
@SuppressWarnings({"unchecked","SpringJavaInjectionPointsAutowiringInspection"})
-public class BaseServiceImpl , T> extends ServiceImpl implements BaseService {
+public class BaseServiceImpl , T extends IdMeta> extends ServiceImpl implements BaseService {
@Autowired
protected ObjectMapper mapper;
diff --git a/executor/pom.xml b/executor/pom.xml
index 9c65edd..1c8681a 100644
--- a/executor/pom.xml
+++ b/executor/pom.xml
@@ -12,7 +12,6 @@
executor
pom
- viewer-executor-mybatis
viewer-executor-core
@@ -24,10 +23,10 @@
-
- xyz.thoughtset.viewer
- viewer-modules-ds-core
-
+
+
+
+
\ No newline at end of file
diff --git a/executor/viewer-executor-core/pom.xml b/executor/viewer-executor-core/pom.xml
index 3acfa07..530021f 100644
--- a/executor/viewer-executor-core/pom.xml
+++ b/executor/viewer-executor-core/pom.xml
@@ -16,5 +16,11 @@
17
UTF-8
+
+
+ xyz.thoughtset.viewer
+ viewer-common-crud-core
+
+
\ No newline at end of file
diff --git a/executor/viewer-executor-core/src/main/java/xyz/thoughtset/viewer/executor/core/base/AbstractExecutor.java b/executor/viewer-executor-core/src/main/java/xyz/thoughtset/viewer/executor/core/base/AbstractExecutor.java
index 20b1f1f..5be09b0 100644
--- a/executor/viewer-executor-core/src/main/java/xyz/thoughtset/viewer/executor/core/base/AbstractExecutor.java
+++ b/executor/viewer-executor-core/src/main/java/xyz/thoughtset/viewer/executor/core/base/AbstractExecutor.java
@@ -1,9 +1,10 @@
package xyz.thoughtset.viewer.executor.core.base;
+import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.Getter;
+import org.springframework.beans.factory.annotation.Autowired;
import xyz.thoughtset.viewer.executor.core.entity.QueryBody;
import xyz.thoughtset.viewer.executor.core.factory.ExecutorRegistry;
-import xyz.thoughtset.viewer.executor.core.service.QueryBodyService;
import java.util.Map;
@@ -12,6 +13,10 @@ public abstract class AbstractExecutor {
protected final String supportType;
@Getter
protected final boolean innerExecutor;
+ @Autowired
+ protected ObjectMapper objectMapper;
+
+
protected AbstractExecutor(String supportType, boolean innerExecutor){
this.supportType = supportType;
this.innerExecutor = innerExecutor;
diff --git a/executor/viewer-executor-core/src/main/java/xyz/thoughtset/viewer/executor/core/entity/QueryBody.java b/executor/viewer-executor-core/src/main/java/xyz/thoughtset/viewer/executor/core/entity/QueryBody.java
index 6453cd1..2b10d1e 100644
--- a/executor/viewer-executor-core/src/main/java/xyz/thoughtset/viewer/executor/core/entity/QueryBody.java
+++ b/executor/viewer-executor-core/src/main/java/xyz/thoughtset/viewer/executor/core/entity/QueryBody.java
@@ -20,6 +20,7 @@ public class QueryBody extends BaseMeta {
protected String dsId;
@TableField(condition = SqlCondition.LIKE)
protected String query;
+// protected String type;
@TableField(exist = false)
private List params;
diff --git a/executor/viewer-executor-core/src/main/java/xyz/thoughtset/viewer/executor/core/factory/ExecutorRegistry.java b/executor/viewer-executor-core/src/main/java/xyz/thoughtset/viewer/executor/core/factory/ExecutorRegistry.java
index 6d21f8e..024cc12 100644
--- a/executor/viewer-executor-core/src/main/java/xyz/thoughtset/viewer/executor/core/factory/ExecutorRegistry.java
+++ b/executor/viewer-executor-core/src/main/java/xyz/thoughtset/viewer/executor/core/factory/ExecutorRegistry.java
@@ -12,13 +12,13 @@ import java.util.concurrent.ConcurrentHashMap;
public class ExecutorRegistry {
private static AbstractExecutor DEFAULT = null;
private static final ConcurrentHashMap Executor_Map = new ConcurrentHashMap<>();
- @Getter
- private static final LinkedHashSet Executor_Keys = new LinkedHashSet<>();
+// @Getter
+// private static final LinkedHashSet Executor_Keys = new LinkedHashSet<>();
public static void register(AbstractExecutor executor) {
if (DEFAULT==null) DEFAULT = executor;
Executor_Map.put(executor.getSupportType(), executor);
- Executor_Keys.add(executor.getSupportType());
+// Executor_Keys.add(executor.getSupportType());
}
public static AbstractExecutor findExecutor(String supportType){
diff --git a/executor/viewer-executor-mybatis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/executor/viewer-executor-mybatis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
deleted file mode 100644
index 54d7e55..0000000
--- a/executor/viewer-executor-mybatis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ /dev/null
@@ -1 +0,0 @@
-xyz.thoughtset.viewer.executor.mybatis.MybatisExecutorAutoConfiguration
\ No newline at end of file
diff --git a/modules/viewer-modules-ds/pom.xml b/modules/viewer-modules-ds/pom.xml
index e001f9c..102c6b9 100644
--- a/modules/viewer-modules-ds/pom.xml
+++ b/modules/viewer-modules-ds/pom.xml
@@ -14,6 +14,8 @@
viewer-modules-ds-core
viewer-modules-ds-jdbc
+ viewer-modules-ds-http
+ viewer-modules-ds-command
diff --git a/executor/viewer-executor-mybatis/pom.xml b/modules/viewer-modules-ds/viewer-modules-ds-command/pom.xml
similarity index 82%
rename from executor/viewer-executor-mybatis/pom.xml
rename to modules/viewer-modules-ds/viewer-modules-ds-command/pom.xml
index 556a6f1..ae79c6b 100644
--- a/executor/viewer-executor-mybatis/pom.xml
+++ b/modules/viewer-modules-ds/viewer-modules-ds-command/pom.xml
@@ -5,11 +5,11 @@
4.0.0
xyz.thoughtset.viewer
- executor
+ viewer-modules-ds
${revision}
- viewer-executor-mybatis
+ viewer-modules-ds-command
17
@@ -20,7 +20,7 @@
xyz.thoughtset.viewer
- viewer-executor-core
+ viewer-modules-ds-core
diff --git a/executor/viewer-executor-mybatis/src/main/java/xyz/thoughtset/viewer/executor/mybatis/MybatisExecutorAutoConfiguration.java b/modules/viewer-modules-ds/viewer-modules-ds-command/src/main/java/xyz/thoughtset/viewer/modules/ds/command/DsCmdAutoConfiguration.java
similarity index 73%
rename from executor/viewer-executor-mybatis/src/main/java/xyz/thoughtset/viewer/executor/mybatis/MybatisExecutorAutoConfiguration.java
rename to modules/viewer-modules-ds/viewer-modules-ds-command/src/main/java/xyz/thoughtset/viewer/modules/ds/command/DsCmdAutoConfiguration.java
index a172206..1d67bb3 100644
--- a/executor/viewer-executor-mybatis/src/main/java/xyz/thoughtset/viewer/executor/mybatis/MybatisExecutorAutoConfiguration.java
+++ b/modules/viewer-modules-ds/viewer-modules-ds-command/src/main/java/xyz/thoughtset/viewer/modules/ds/command/DsCmdAutoConfiguration.java
@@ -1,4 +1,4 @@
-package xyz.thoughtset.viewer.executor.mybatis;
+package xyz.thoughtset.viewer.modules.ds.command;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.ComponentScan;
@@ -7,5 +7,5 @@ import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan
@EnableConfigurationProperties
-public class MybatisExecutorAutoConfiguration {
-}
\ No newline at end of file
+public class DsCmdAutoConfiguration {
+}
diff --git a/modules/viewer-modules-ds/viewer-modules-ds-command/src/main/java/xyz/thoughtset/viewer/modules/ds/command/executor/CommandExecutor.java b/modules/viewer-modules-ds/viewer-modules-ds-command/src/main/java/xyz/thoughtset/viewer/modules/ds/command/executor/CommandExecutor.java
new file mode 100644
index 0000000..0de68df
--- /dev/null
+++ b/modules/viewer-modules-ds/viewer-modules-ds-command/src/main/java/xyz/thoughtset/viewer/modules/ds/command/executor/CommandExecutor.java
@@ -0,0 +1,41 @@
+package xyz.thoughtset.viewer.modules.ds.command.executor;
+
+import lombok.SneakyThrows;
+import org.apache.ibatis.mapping.BoundSql;
+import org.apache.ibatis.mapping.SqlSource;
+import org.apache.ibatis.parsing.XNode;
+import org.apache.ibatis.parsing.XPathParser;
+import org.apache.ibatis.reflection.ParamNameResolver;
+import org.apache.ibatis.scripting.xmltags.XMLScriptBuilder;
+import org.apache.ibatis.session.Configuration;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
+import xyz.thoughtset.viewer.executor.core.base.AbstractExecutor;
+import xyz.thoughtset.viewer.executor.core.entity.QueryBody;
+import xyz.thoughtset.viewer.modules.ds.core.factory.ConnectFactory;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Component
+public class CommandExecutor extends AbstractExecutor {
+ @Autowired
+ protected ConnectFactory connectFactory;
+ public CommandExecutor() {
+ super(null, true);
+ }
+ private final Configuration configuration = new Configuration();
+ private final String head_xml = "";
+ private final String tail_xml = "";
+
+ @Override
+ protected Object exec(QueryBody queryBody, Map param) {
+ return null;
+// return doQuery(queryBody.getQuery(),param, connectFactory.buildConnect(queryBody.getDsId(), BaseReq.class));
+ }
+
+
+
+
+}
diff --git a/executor/viewer-executor-mybatis/src/main/resources/META-INF/spring.factories b/modules/viewer-modules-ds/viewer-modules-ds-command/src/main/resources/META-INF/spring.factories
similarity index 62%
rename from executor/viewer-executor-mybatis/src/main/resources/META-INF/spring.factories
rename to modules/viewer-modules-ds/viewer-modules-ds-command/src/main/resources/META-INF/spring.factories
index eb37a7b..d7d832d 100644
--- a/executor/viewer-executor-mybatis/src/main/resources/META-INF/spring.factories
+++ b/modules/viewer-modules-ds/viewer-modules-ds-command/src/main/resources/META-INF/spring.factories
@@ -1 +1 @@
-org.springframework.boot.autoconfigure.EnableAutoConfiguration=xyz.thoughtset.viewer.executor.mybatis
\ No newline at end of file
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=xyz.thoughtset.viewer.modules.ds.command
\ No newline at end of file
diff --git a/modules/viewer-modules-ds/viewer-modules-ds-command/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/modules/viewer-modules-ds/viewer-modules-ds-command/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 0000000..8921063
--- /dev/null
+++ b/modules/viewer-modules-ds/viewer-modules-ds-command/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1 @@
+xyz.thoughtset.viewer.modules.ds.command.DsCmdAutoConfiguration
\ No newline at end of file
diff --git a/modules/viewer-modules-ds/viewer-modules-ds-core/pom.xml b/modules/viewer-modules-ds/viewer-modules-ds-core/pom.xml
index 4109b15..c93e585 100644
--- a/modules/viewer-modules-ds/viewer-modules-ds-core/pom.xml
+++ b/modules/viewer-modules-ds/viewer-modules-ds-core/pom.xml
@@ -17,4 +17,12 @@
UTF-8
+
+
+
+ xyz.thoughtset.viewer
+ viewer-executor-core
+
+
+
\ No newline at end of file
diff --git a/modules/viewer-modules-ds/viewer-modules-ds-core/src/main/java/xyz/thoughtset/viewer/modules/ds/core/factory/ConnectFactory.java b/modules/viewer-modules-ds/viewer-modules-ds-core/src/main/java/xyz/thoughtset/viewer/modules/ds/core/factory/ConnectFactory.java
index 72cc300..fc0e855 100644
--- a/modules/viewer-modules-ds/viewer-modules-ds-core/src/main/java/xyz/thoughtset/viewer/modules/ds/core/factory/ConnectFactory.java
+++ b/modules/viewer-modules-ds/viewer-modules-ds-core/src/main/java/xyz/thoughtset/viewer/modules/ds/core/factory/ConnectFactory.java
@@ -29,6 +29,9 @@ public class ConnectFactory {
private DsConfigDao dsConfigDao;
private ConcurrentHashMap DS_CACHE = new ConcurrentHashMap<>();
+ public T buildConnect(String dsId,Class targetType) {
+ return (T) buildConnect(dsId);
+ }
public Object buildConnect(String dsId) {
Object result = DS_CACHE.get(dsId);
@@ -54,7 +57,7 @@ public class ConnectFactory {
return result;
}
- private ConnBuilder findConnBuilder(DsConfig ds){
+ public ConnBuilder findConnBuilder(DsConfig ds){
ConnBuilder connBuilder = LinkerHelper.getConnBuilder(ds);
if (Objects.nonNull(connBuilder)){
return connBuilder;
diff --git a/executor/viewer-executor-core/src/main/java/xyz/thoughtset/viewer/executor/core/factory/ExecutorManager.java b/modules/viewer-modules-ds/viewer-modules-ds-core/src/main/java/xyz/thoughtset/viewer/modules/ds/core/factory/ExecutorManager.java
similarity index 71%
rename from executor/viewer-executor-core/src/main/java/xyz/thoughtset/viewer/executor/core/factory/ExecutorManager.java
rename to modules/viewer-modules-ds/viewer-modules-ds-core/src/main/java/xyz/thoughtset/viewer/modules/ds/core/factory/ExecutorManager.java
index 66348bb..6ba51d0 100644
--- a/executor/viewer-executor-core/src/main/java/xyz/thoughtset/viewer/executor/core/factory/ExecutorManager.java
+++ b/modules/viewer-modules-ds/viewer-modules-ds-core/src/main/java/xyz/thoughtset/viewer/modules/ds/core/factory/ExecutorManager.java
@@ -1,15 +1,22 @@
-package xyz.thoughtset.viewer.executor.core.factory;
+package xyz.thoughtset.viewer.modules.ds.core.factory;
import cn.hutool.core.convert.Convert;
import lombok.Getter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+import xyz.thoughtset.viewer.common.connector.entity.bo.Linker;
+import xyz.thoughtset.viewer.common.connector.linker.ConnBuilder;
+import xyz.thoughtset.viewer.common.connector.linker.LinkerBuilder;
+import xyz.thoughtset.viewer.common.connector.linker.LinkerHelper;
import xyz.thoughtset.viewer.executor.core.base.AbstractExecutor;
import xyz.thoughtset.viewer.executor.core.base.DataContext;
import xyz.thoughtset.viewer.executor.core.constants.TypeConstants;
import xyz.thoughtset.viewer.executor.core.entity.QueryBody;
import xyz.thoughtset.viewer.executor.core.entity.QueryParam;
+import xyz.thoughtset.viewer.executor.core.factory.ExecutorRegistry;
import xyz.thoughtset.viewer.executor.core.service.QueryBodyService;
+import xyz.thoughtset.viewer.modules.ds.core.dao.DsConfigDao;
+import xyz.thoughtset.viewer.modules.ds.core.entity.DsConfig;
import java.util.HashMap;
import java.util.LinkedHashSet;
@@ -23,6 +30,10 @@ import java.util.stream.Collectors;
public class ExecutorManager {
@Autowired
private QueryBodyService queryBodyService;
+ @Autowired
+ private DsConfigDao dsConfigDao;
+ @Autowired
+ private ConnectFactory connectFactory;
public Object execute(String bodyId, Map tmpParam){
QueryBody queryBody = queryBodyService.getById(bodyId);
@@ -41,7 +52,9 @@ public class ExecutorManager {
paramsMap.put(queryParam.getTitle(),
Convert.convert(TypeConstants.TYPE_MAP.get(queryParam.getDataType()),value));
}
- AbstractExecutor executor = ExecutorRegistry.findExecutor(queryBody.getDsId());
+ DsConfig dsConfig = dsConfigDao.selectById(queryBody.getDsId());
+ ConnBuilder connBuilder = connectFactory.findConnBuilder(dsConfig);
+ AbstractExecutor executor = ExecutorRegistry.findExecutor(connBuilder.getDataLinker().getLinkerType());
return executor.execute(queryBody,paramsMap);
}
diff --git a/modules/viewer-modules-ds/viewer-modules-ds-core/src/main/java/xyz/thoughtset/viewer/modules/ds/core/service/LinkerConfigServiceImpl.java b/modules/viewer-modules-ds/viewer-modules-ds-core/src/main/java/xyz/thoughtset/viewer/modules/ds/core/service/LinkerConfigServiceImpl.java
index ce1a599..50e2c24 100644
--- a/modules/viewer-modules-ds/viewer-modules-ds-core/src/main/java/xyz/thoughtset/viewer/modules/ds/core/service/LinkerConfigServiceImpl.java
+++ b/modules/viewer-modules-ds/viewer-modules-ds-core/src/main/java/xyz/thoughtset/viewer/modules/ds/core/service/LinkerConfigServiceImpl.java
@@ -10,7 +10,7 @@ import xyz.thoughtset.viewer.modules.ds.core.entity.LinkerConfig;
import java.util.LinkedHashMap;
import java.util.Objects;
-@Service("linkerConfigService")
+@Service
@Transactional
public class LinkerConfigServiceImpl extends BaseServiceImpl implements LinkerConfigService{
diff --git a/modules/viewer-modules-ds/viewer-modules-ds-http/pom.xml b/modules/viewer-modules-ds/viewer-modules-ds-http/pom.xml
new file mode 100644
index 0000000..642e3a0
--- /dev/null
+++ b/modules/viewer-modules-ds/viewer-modules-ds-http/pom.xml
@@ -0,0 +1,32 @@
+
+
+ 4.0.0
+
+ xyz.thoughtset.viewer
+ viewer-modules-ds
+ ${revision}
+
+
+ viewer-modules-ds-http
+ pom
+
+ viewer-modules-ds-http-core
+ viewer-modules-ds-http-simple
+
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+
+ xyz.thoughtset.viewer
+ viewer-modules-ds-core
+
+
+
+
\ No newline at end of file
diff --git a/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/pom.xml b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/pom.xml
new file mode 100644
index 0000000..3919da3
--- /dev/null
+++ b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/pom.xml
@@ -0,0 +1,21 @@
+
+
+ 4.0.0
+
+ xyz.thoughtset.viewer
+ viewer-modules-ds-http
+ ${revision}
+
+
+ viewer-modules-ds-http-core
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+
\ No newline at end of file
diff --git a/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/DsHttpCoreAutoConfiguration.java b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/DsHttpCoreAutoConfiguration.java
new file mode 100644
index 0000000..c66dd5f
--- /dev/null
+++ b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/DsHttpCoreAutoConfiguration.java
@@ -0,0 +1,11 @@
+package xyz.thoughtset.viewer.modules.ds.http.core;
+
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@ComponentScan
+@EnableConfigurationProperties
+public class DsHttpCoreAutoConfiguration {
+}
diff --git a/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/constant/RequireAttrConstant.java b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/constant/RequireAttrConstant.java
new file mode 100644
index 0000000..aad2dde
--- /dev/null
+++ b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/constant/RequireAttrConstant.java
@@ -0,0 +1,8 @@
+package xyz.thoughtset.viewer.modules.ds.http.core.constant;
+
+public class RequireAttrConstant {
+ public static final String USE_FORMAT_URL = "formatUrl";
+ public static final Boolean USE_FORMAT_URL_DEFAULT = Boolean.TRUE;
+
+ public static final String USE_FORMAT_BODY = "formatBody";
+}
diff --git a/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/constant/SupportTypeConstant.java b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/constant/SupportTypeConstant.java
new file mode 100644
index 0000000..7dbc3bd
--- /dev/null
+++ b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/constant/SupportTypeConstant.java
@@ -0,0 +1,5 @@
+package xyz.thoughtset.viewer.modules.ds.http.core.constant;
+
+public class SupportTypeConstant {
+ public static final String SUPPORT_TYPE = "HTTP";
+}
diff --git a/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/enums/OkHttp3BuilderEnum.java b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/enums/OkHttp3BuilderEnum.java
new file mode 100644
index 0000000..b109c7d
--- /dev/null
+++ b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/enums/OkHttp3BuilderEnum.java
@@ -0,0 +1,58 @@
+package xyz.thoughtset.viewer.modules.ds.http.core.enums;
+
+import lombok.Getter;
+
+import java.util.Map;
+
+public enum OkHttp3BuilderEnum {
+ MAX_IDLE_CONNECTIONS("maxIdleConnections"),
+ KEEP_ALIVE_DURATION("keepAliveDuration"),
+ PROXY_HOST("proxyHost"),
+ PROXY_PORT("proxyPort"),
+ PROXY_TYPE("proxyType","HTTP"),
+ CONNECT_TIMEOUT("connectTimeout"),
+ READ_TIMEOUT("readTimeout"),
+ WRITE_TIMEOUT("writeTimeout"),
+ ENABLE_VERIFY_SSL("verifySSL","true");
+
+ @Getter
+ private final String title;
+ private final String defaultValue;
+ private final boolean autoLoad;
+
+ OkHttp3BuilderEnum(String title) {
+ this(title,null);
+ }
+ OkHttp3BuilderEnum(String title,String defaultValue) {
+ this(title,null,false);
+ }
+ OkHttp3BuilderEnum(String title,String defaultValue,boolean autoLoad) {
+ this.title = title;
+ this.defaultValue = defaultValue;
+ this.autoLoad = autoLoad;
+ }
+
+ public static Object getVal(Map map, OkHttp3BuilderEnum builderEnum) {
+ Object value = map.get(builderEnum.title);
+ if (value == null) {
+ value = builderEnum.defaultValue;
+ }
+ return value;
+ }
+
+ public static String getStrVal(Map map, OkHttp3BuilderEnum builderEnum) {
+ return (String) getVal(map, builderEnum);
+ }
+
+ public static Integer getIntVal(Map map, OkHttp3BuilderEnum builderEnum) {
+ Object value = getVal(map, builderEnum);
+ return value == null ? null : value instanceof Integer? (Integer) value :Integer.valueOf((String)value);
+ }
+
+ public static Long getLongVal(Map map, OkHttp3BuilderEnum builderEnum) {
+ Object value = getVal(map, builderEnum);
+ return value == null ? null : value instanceof Long? (Long) value :Long.valueOf((String)value);
+ }
+
+
+}
diff --git a/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/executor/HttpReqExecutor.java b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/executor/HttpReqExecutor.java
new file mode 100644
index 0000000..aa6a35b
--- /dev/null
+++ b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/executor/HttpReqExecutor.java
@@ -0,0 +1,85 @@
+package xyz.thoughtset.viewer.modules.ds.http.core.executor;
+
+import lombok.SneakyThrows;
+import org.apache.ibatis.mapping.BoundSql;
+import org.apache.ibatis.mapping.SqlSource;
+import org.apache.ibatis.parsing.XNode;
+import org.apache.ibatis.parsing.XPathParser;
+import org.apache.ibatis.reflection.ParamNameResolver;
+import org.apache.ibatis.scripting.xmltags.XMLScriptBuilder;
+import org.apache.ibatis.session.Configuration;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
+import org.springframework.web.util.UriComponentsBuilder;
+import xyz.thoughtset.viewer.executor.core.base.AbstractExecutor;
+import xyz.thoughtset.viewer.executor.core.entity.QueryBody;
+import xyz.thoughtset.viewer.modules.ds.core.factory.ConnectFactory;
+import xyz.thoughtset.viewer.modules.ds.http.core.constant.RequireAttrConstant;
+import xyz.thoughtset.viewer.modules.ds.http.core.constant.SupportTypeConstant;
+import xyz.thoughtset.viewer.modules.ds.http.core.req.BaseReq;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Component
+public class HttpReqExecutor extends AbstractExecutor {
+ @Autowired
+ protected ConnectFactory connectFactory;
+ public HttpReqExecutor() {
+ super(SupportTypeConstant.SUPPORT_TYPE, true);
+ }
+ private final Configuration configuration = new Configuration();
+ private final String head_xml = "";
+ private final String tail_xml = "";
+
+ @Override
+ protected Object exec(QueryBody queryBody, Map param) {
+ return doQuery(queryBody.getQuery(),param, connectFactory.buildConnect(queryBody.getDsId(), BaseReq.class));
+ }
+
+
+ @SneakyThrows
+ public Object doQuery(String sqlText, Object param, BaseReq baseReq) {
+ sqlText = sqlText.trim().replaceAll("&", "&");
+ //todo:优化点直接使用DocumentBuilderFactory进行创建
+ XPathParser parser = new XPathParser(head_xml+sqlText+tail_xml);
+ XNode rootNode = parser.evalNode("/root");
+ XNode xNode = rootNode.evalNode("http|get|post");
+ XNode payloadNode = rootNode.evalNode("/payload");
+ Boolean useFormatUrl = xNode.getBooleanAttribute(RequireAttrConstant.USE_FORMAT_URL, RequireAttrConstant.USE_FORMAT_URL_DEFAULT);
+ //#{
+ XMLScriptBuilder builder = new XMLScriptBuilder(configuration, xNode, null);
+ SqlSource sqlSource = builder.parseScriptNode();
+ Object parameterObject = ParamNameResolver.wrapToMapIfCollection(param, null);
+ BoundSql boundSql = sqlSource.getBoundSql(parameterObject);
+ String reqUrl = boundSql.getSql().trim()
+ .replaceAll("\\s*","")
+ .replace("?&","?");
+ if (reqUrl.endsWith("?")){
+ reqUrl = reqUrl.substring(reqUrl.length()-1,reqUrl.length());
+ }
+ String payload = null;
+ if (payloadNode!=null){
+ payload = new XMLScriptBuilder(configuration, payloadNode, null)
+ .parseScriptNode().getBoundSql(parameterObject).getSql().trim()
+ .replaceAll("\\s*","");
+ }
+ String resultJson = null;
+ switch (xNode.getName().toLowerCase()){
+ case "post":
+ resultJson = baseReq.doPost(reqUrl, useFormatUrl, payload);
+ break;
+ case "get":
+ default:
+ resultJson = baseReq.doGet(reqUrl, useFormatUrl);
+ }
+// List result = new ArrayList();
+// result.add(StringUtils.hasText(resultJson) ? objectMapper.readValue(resultJson, Map.class) : new HashMap<>());
+ return StringUtils.hasText(resultJson) ? objectMapper.readValue(resultJson, Map.class) : new HashMap<>();
+ }
+
+
+
+
+}
diff --git a/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/linker/HttpConnBuilder.java b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/linker/HttpConnBuilder.java
new file mode 100644
index 0000000..2344325
--- /dev/null
+++ b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/linker/HttpConnBuilder.java
@@ -0,0 +1,129 @@
+package xyz.thoughtset.viewer.modules.ds.http.core.linker;
+
+
+import lombok.SneakyThrows;
+import okhttp3.ConnectionPool;
+import okhttp3.OkHttpClient;
+import xyz.thoughtset.viewer.common.connector.entity.bo.ConnectorMeta;
+import xyz.thoughtset.viewer.common.connector.entity.bo.Linker;
+import xyz.thoughtset.viewer.common.connector.linker.ConnBuilder;
+import xyz.thoughtset.viewer.modules.ds.http.core.enums.OkHttp3BuilderEnum;
+import xyz.thoughtset.viewer.modules.ds.http.core.req.SyncHttpReq;
+
+import javax.net.ssl.*;
+import java.net.InetSocketAddress;
+import java.net.Proxy;
+import java.security.KeyStore;
+import java.security.SecureRandom;
+import java.security.cert.X509Certificate;
+import java.util.Objects;
+import java.util.Properties;
+import java.util.concurrent.TimeUnit;
+
+public abstract class HttpConnBuilder extends ConnBuilder {
+ private static final Properties EMPTY_PROP = new Properties();
+
+ public HttpConnBuilder(Linker dataLinker) {
+ super(dataLinker);
+ }
+
+ @SneakyThrows
+ @Override
+ public Object buildConnect(ConnectorMeta connectorMeta, Properties properties){
+ if (properties == null) {
+ properties = EMPTY_PROP;
+ }
+ Object connections = properties.get(OkHttp3BuilderEnum.MAX_IDLE_CONNECTIONS.getTitle());
+ OkHttpClient.Builder builder = new OkHttpClient.Builder();
+ if (Objects.nonNull(connections)){
+ if (connections instanceof String){
+ connections = Integer.parseInt((String) connections);
+ }
+ if(((Integer) connections) < 3){
+ connections = 3;
+ }
+ Object keepAliveDuration = properties.get(OkHttp3BuilderEnum.KEEP_ALIVE_DURATION.getTitle());
+ if(Objects.isNull(keepAliveDuration)){
+ keepAliveDuration = 5L;
+ }else {
+ if (keepAliveDuration instanceof String){
+ keepAliveDuration = Long.parseLong((String) keepAliveDuration);
+ }
+ }
+ if(((Long) keepAliveDuration) < 2L){
+ connections = 2L;
+ }
+ builder.connectionPool(
+ new ConnectionPool(
+ (Integer) connections,
+ (Long) keepAliveDuration,
+ TimeUnit.MINUTES));
+ }
+ if (!Boolean.valueOf(OkHttp3BuilderEnum.getStrVal(properties, OkHttp3BuilderEnum.ENABLE_VERIFY_SSL))) {
+ builder.hostnameVerifier((hostname, session) -> true);
+ X509TrustManager myTrustManager = new X509TrustManager() {
+ @Override
+ public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws java.security.cert.CertificateException {
+
+ }
+ @Override
+ public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws java.security.cert.CertificateException {
+ }
+ @Override
+ public X509Certificate[] getAcceptedIssuers() {
+ return new X509Certificate[0];
+ }
+ };
+ SSLContext sslCtx = SSLContext.getInstance("TLS");
+ sslCtx.init(null, new TrustManager[] { myTrustManager }, new SecureRandom());
+ builder.sslSocketFactory(sslCtx.getSocketFactory(),myTrustManager);
+ }
+ Integer connectTimeout = OkHttp3BuilderEnum.getIntVal(properties, OkHttp3BuilderEnum.CONNECT_TIMEOUT);
+ Integer readTimeout = OkHttp3BuilderEnum.getIntVal(properties, OkHttp3BuilderEnum.READ_TIMEOUT);
+ Integer writeTimeout = OkHttp3BuilderEnum.getIntVal(properties, OkHttp3BuilderEnum.WRITE_TIMEOUT);
+ if (connectTimeout != null && connectTimeout > 0) {
+ builder.connectTimeout(connectTimeout, TimeUnit.SECONDS);
+ }
+ if (readTimeout != null && readTimeout > 0) {
+ builder.readTimeout(readTimeout, TimeUnit.SECONDS);
+ }
+ if (writeTimeout != null && writeTimeout > 0 && writeTimeout < 60 * 1000 * 10L
+ && writeTimeout > readTimeout + 5L) {
+ builder.writeTimeout(writeTimeout, TimeUnit.SECONDS);
+ }
+ String proxyHost = OkHttp3BuilderEnum.getStrVal(properties, OkHttp3BuilderEnum.PROXY_HOST);
+ Integer proxyPort = OkHttp3BuilderEnum.getIntVal(properties, OkHttp3BuilderEnum.PROXY_PORT);
+ if (proxyHost != null && !proxyHost.isEmpty() && proxyPort != null) {
+ if (proxyPort < 1 || proxyPort > 65535) {
+ throw new IllegalArgumentException("Invalid proxy port: " + proxyPort);
+ }
+ if (proxyHost.length() > 255) {
+ throw new IllegalArgumentException("Invalid proxy host: " + proxyHost);
+ }
+ if (proxyHost.contains(":")) {
+ throw new IllegalArgumentException("Invalid proxy host: " + proxyHost);
+ }
+ Proxy.Type type = Proxy.Type.HTTP;
+ if (OkHttp3BuilderEnum.getStrVal(properties, OkHttp3BuilderEnum.PROXY_TYPE).equalsIgnoreCase("SOCKS")) {
+ type = Proxy.Type.SOCKS;
+ }
+ Proxy proxy = new Proxy(type, new InetSocketAddress(proxyHost, proxyPort));
+ builder.proxy(proxy);
+ }
+
+ return new SyncHttpReq(true,connectorMeta.getUrl(),builder.build());
+ }
+
+
+// private Authenticator getProxyAuthenticator(String username, String password) {
+// return (route, response) -> {
+// String credential = okhttp3.Credentials.basic(username, password);
+// return response.request().newBuilder()
+// .header("Proxy-Authorization", credential)
+// .build();
+// };
+// }
+
+ protected abstract OkHttpClient.Builder addInterceptor(OkHttpClient.Builder builder, ConnectorMeta connectorMeta, Properties properties);
+
+}
diff --git a/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/req/BaseReq.java b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/req/BaseReq.java
new file mode 100644
index 0000000..04f253a
--- /dev/null
+++ b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/req/BaseReq.java
@@ -0,0 +1,58 @@
+package xyz.thoughtset.viewer.modules.ds.http.core.req;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import okhttp3.OkHttpClient;
+import org.springframework.web.util.UriComponentsBuilder;
+
+@Data
+@AllArgsConstructor
+public abstract class BaseReq {
+ protected boolean wasHttp;
+ protected String baseUrl;
+ protected OkHttpClient okHttpClient;
+
+ protected String buildUrl(String url,boolean formatUrl) {
+ String fullUrl;
+ if (url == null) {
+ if (baseUrl != null) {
+ fullUrl = baseUrl;
+ } else {
+ throw new NullPointerException("在设置 BaseUrl 之前,您必须指定具体路径才能发起请求!");
+ }
+ } else {
+ url = url.trim();
+ boolean isFullPath = url.startsWith("https://")
+ || url.startsWith("http://")
+ || url.startsWith("wss://")
+ || url.startsWith("ws://");
+ if (isFullPath) {
+ fullUrl = url;
+ } else if (baseUrl != null) {
+ fullUrl = baseUrl + url;
+ } else {
+ throw new NullPointerException("在设置 BaseUrl 之前,您必须使用全路径URL发起请求,当前URL为:'" + url + "'");
+ }
+ }
+ if (wasHttp && fullUrl.startsWith("http")) {
+ fullUrl = fullUrl.replaceFirst("http", "ws");
+ }
+ if (!wasHttp && fullUrl.startsWith("ws")) {
+ fullUrl = fullUrl.replaceFirst("ws", "http");
+ }
+
+
+ if (formatUrl) {
+ UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromUriString(fullUrl);
+ return uriBuilder.toUriString();
+ } else {
+ return fullUrl;
+ }
+
+ }
+
+
+ public abstract String doGet(String url,boolean formatUrl);
+ public abstract String doPost(String url,boolean formatUrl,String jsonStr);
+
+}
diff --git a/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/req/SyncHttpReq.java b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/req/SyncHttpReq.java
new file mode 100644
index 0000000..b91a396
--- /dev/null
+++ b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/java/xyz/thoughtset/viewer/modules/ds/http/core/req/SyncHttpReq.java
@@ -0,0 +1,58 @@
+package xyz.thoughtset.viewer.modules.ds.http.core.req;
+
+import lombok.SneakyThrows;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.RequestBody;
+import okhttp3.Response;
+import org.springframework.http.MediaType;
+
+import java.io.IOException;
+
+
+
+public class SyncHttpReq extends BaseReq{
+
+ public SyncHttpReq(boolean wasHttp, String baseUrl, OkHttpClient okHttpClient) {
+ super(wasHttp, baseUrl, okHttpClient);
+ }
+
+
+ @Override
+ public String doGet(String url,boolean formatUrl) {
+ Request request = new Request.Builder()
+ .url(buildUrl(url,formatUrl))
+ .get()
+ .build();
+ return exeReq(request);
+ }
+
+ @Override
+ public String doPost(String url,boolean formatUrl,String jsonStr) {
+ RequestBody body = null;
+ if (jsonStr != null) {
+ body = RequestBody.create(
+ jsonStr,
+ okhttp3.MediaType.parse(MediaType.APPLICATION_JSON_VALUE)
+ );
+ }
+ Request request = new Request.Builder()
+ .url(buildUrl(url,formatUrl))
+ .post(body) // 这里可以添加请求体
+ .build();
+ return exeReq(request);
+ }
+
+ @SneakyThrows
+ private String exeReq(Request request){
+ try (Response response = okHttpClient.newCall(request).execute()) {
+ if (!response.isSuccessful()) {
+ throw new IOException("Unexpected code " + response);
+ }
+ // 解析响应
+ return response.body().string();
+ }
+ }
+
+
+}
diff --git a/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/resources/META-INF/spring.factories b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/resources/META-INF/spring.factories
new file mode 100644
index 0000000..f02c75c
--- /dev/null
+++ b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/resources/META-INF/spring.factories
@@ -0,0 +1 @@
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=xyz.thoughtset.viewer.modules.ds.http.core
\ No newline at end of file
diff --git a/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 0000000..a252273
--- /dev/null
+++ b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1 @@
+xyz.thoughtset.viewer.modules.ds.http.core.DsHttpCoreAutoConfiguration
\ No newline at end of file
diff --git a/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/pom.xml b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/pom.xml
new file mode 100644
index 0000000..cb7cfbd
--- /dev/null
+++ b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/pom.xml
@@ -0,0 +1,28 @@
+
+
+ 4.0.0
+
+ xyz.thoughtset.viewer
+ viewer-modules-ds-http
+ ${revision}
+
+
+ viewer-modules-ds-http-simple
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+
+
+ xyz.thoughtset.viewer
+ viewer-modules-ds-http-core
+
+
+
+
\ No newline at end of file
diff --git a/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/src/main/java/xyz/thoughtset/viewer/modules/ds/http/simple/DsHttpSimpleAutoConfiguration.java b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/src/main/java/xyz/thoughtset/viewer/modules/ds/http/simple/DsHttpSimpleAutoConfiguration.java
new file mode 100644
index 0000000..c58585a
--- /dev/null
+++ b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/src/main/java/xyz/thoughtset/viewer/modules/ds/http/simple/DsHttpSimpleAutoConfiguration.java
@@ -0,0 +1,11 @@
+package xyz.thoughtset.viewer.modules.ds.http.simple;
+
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@ComponentScan
+@EnableConfigurationProperties
+public class DsHttpSimpleAutoConfiguration {
+}
diff --git a/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/src/main/java/xyz/thoughtset/viewer/modules/ds/http/simple/interceptor/SelfInterceptorLoad.java b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/src/main/java/xyz/thoughtset/viewer/modules/ds/http/simple/interceptor/SelfInterceptorLoad.java
new file mode 100644
index 0000000..b43e4c6
--- /dev/null
+++ b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/src/main/java/xyz/thoughtset/viewer/modules/ds/http/simple/interceptor/SelfInterceptorLoad.java
@@ -0,0 +1,10 @@
+package xyz.thoughtset.viewer.modules.ds.http.simple.interceptor;
+
+import okhttp3.Interceptor;
+
+import java.util.List;
+import java.util.Properties;
+
+public interface SelfInterceptorLoad {
+ List buildInterceptors(String baseUrl, String ak, String sk, Properties properties);
+}
diff --git a/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/src/main/java/xyz/thoughtset/viewer/modules/ds/http/simple/linker/ManualHttpReqBuilder.java b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/src/main/java/xyz/thoughtset/viewer/modules/ds/http/simple/linker/ManualHttpReqBuilder.java
new file mode 100644
index 0000000..a6ee05e
--- /dev/null
+++ b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/src/main/java/xyz/thoughtset/viewer/modules/ds/http/simple/linker/ManualHttpReqBuilder.java
@@ -0,0 +1,45 @@
+package xyz.thoughtset.viewer.modules.ds.http.simple.linker;
+
+
+import lombok.SneakyThrows;
+import okhttp3.Interceptor;
+import okhttp3.OkHttpClient;
+import xyz.thoughtset.viewer.common.connector.entity.bo.ConnectorMeta;
+import xyz.thoughtset.viewer.common.connector.entity.bo.Linker;
+import xyz.thoughtset.viewer.common.core.constants.FolderNameConstant;
+import xyz.thoughtset.viewer.modules.ds.http.core.linker.HttpConnBuilder;
+import xyz.thoughtset.viewer.modules.ds.http.simple.interceptor.SelfInterceptorLoad;
+
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.List;
+import java.util.Properties;
+
+//@Component
+public class ManualHttpReqBuilder extends HttpConnBuilder {
+ public ManualHttpReqBuilder(Linker dataLinker) {
+ super(dataLinker);
+ }
+
+ @SneakyThrows
+ @Override
+ protected OkHttpClient.Builder addInterceptor(OkHttpClient.Builder builder,
+ ConnectorMeta connectorMeta, Properties properties) {
+ URLClassLoader urlClassLoader = new URLClassLoader(
+ new URL[]{new URL(FolderNameConstant.jarFileAllPath(dataLinker.getJarFilePath()))},
+ Thread.currentThread().getContextClassLoader());
+ Class clazz = urlClassLoader.loadClass(dataLinker.getDriverClassName());
+ SelfInterceptorLoad interceptor = (SelfInterceptorLoad) clazz.newInstance();
+ List interceptors = interceptor.buildInterceptors(
+ connectorMeta.getUrl(),
+ connectorMeta.getAk(),
+ connectorMeta.getSk(),
+ properties);
+ if (interceptors != null && !interceptors.isEmpty()) {
+ for (Interceptor interceptorEle : interceptors) {
+ builder.addInterceptor(interceptorEle);
+ }
+ }
+ return builder;
+ }
+}
diff --git a/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/src/main/java/xyz/thoughtset/viewer/modules/ds/http/simple/linker/ManualHttpReqLinkerBuilder.java b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/src/main/java/xyz/thoughtset/viewer/modules/ds/http/simple/linker/ManualHttpReqLinkerBuilder.java
new file mode 100644
index 0000000..0a436fa
--- /dev/null
+++ b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/src/main/java/xyz/thoughtset/viewer/modules/ds/http/simple/linker/ManualHttpReqLinkerBuilder.java
@@ -0,0 +1,24 @@
+package xyz.thoughtset.viewer.modules.ds.http.simple.linker;
+
+
+import lombok.Getter;
+import org.springframework.stereotype.Component;
+import xyz.thoughtset.viewer.common.connector.entity.bo.Linker;
+import xyz.thoughtset.viewer.common.connector.linker.ConnBuilder;
+import xyz.thoughtset.viewer.common.connector.linker.LinkerBuilder;
+import xyz.thoughtset.viewer.modules.ds.http.core.constant.SupportTypeConstant;
+
+@Component
+@Getter
+public class ManualHttpReqLinkerBuilder extends LinkerBuilder {
+ public ManualHttpReqLinkerBuilder() {
+ super(SupportTypeConstant.SUPPORT_TYPE);
+ }
+
+ @Override
+ public ConnBuilder buildConnBuilder(Linker linker) {
+ return new ManualHttpReqBuilder(linker);
+ }
+
+
+}
diff --git a/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/src/main/java/xyz/thoughtset/viewer/modules/ds/http/simple/linker/SimpleHttpReqBuilder.java b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/src/main/java/xyz/thoughtset/viewer/modules/ds/http/simple/linker/SimpleHttpReqBuilder.java
new file mode 100644
index 0000000..e82edea
--- /dev/null
+++ b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/src/main/java/xyz/thoughtset/viewer/modules/ds/http/simple/linker/SimpleHttpReqBuilder.java
@@ -0,0 +1,28 @@
+package xyz.thoughtset.viewer.modules.ds.http.simple.linker;
+
+
+import okhttp3.OkHttpClient;
+import org.springframework.stereotype.Component;
+import xyz.thoughtset.viewer.common.connector.entity.bo.ConnectorMeta;
+import xyz.thoughtset.viewer.common.connector.entity.bo.Linker;
+import xyz.thoughtset.viewer.modules.ds.http.core.linker.HttpConnBuilder;
+import xyz.thoughtset.viewer.modules.ds.http.core.constant.SupportTypeConstant;
+
+import java.util.Properties;
+
+@Component
+public class SimpleHttpReqBuilder extends HttpConnBuilder {
+ public SimpleHttpReqBuilder() {
+ super(new Linker(
+ "SimpleHttpReq",
+ null,
+ SupportTypeConstant.SUPPORT_TYPE
+ ));
+ }
+
+
+ @Override
+ protected OkHttpClient.Builder addInterceptor(OkHttpClient.Builder builder, ConnectorMeta connectorMeta, Properties properties) {
+ return builder;
+ }
+}
diff --git a/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/src/main/resources/META-INF/spring.factories b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/src/main/resources/META-INF/spring.factories
new file mode 100644
index 0000000..677f87d
--- /dev/null
+++ b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/src/main/resources/META-INF/spring.factories
@@ -0,0 +1 @@
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=xyz.thoughtset.viewer.modules.ds.http.simple
\ No newline at end of file
diff --git a/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 0000000..d44179a
--- /dev/null
+++ b/modules/viewer-modules-ds/viewer-modules-ds-http/viewer-modules-ds-http-simple/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1 @@
+xyz.thoughtset.viewer.modules.ds.http.simple.DsHttpSimpleAutoConfiguration
\ No newline at end of file
diff --git a/modules/viewer-modules-ds/viewer-modules-ds-jdbc/viewer-modules-ds-jdbc-core/pom.xml b/modules/viewer-modules-ds/viewer-modules-ds-jdbc/viewer-modules-ds-jdbc-core/pom.xml
index 4309ebe..19e6921 100644
--- a/modules/viewer-modules-ds/viewer-modules-ds-jdbc/viewer-modules-ds-jdbc-core/pom.xml
+++ b/modules/viewer-modules-ds/viewer-modules-ds-jdbc/viewer-modules-ds-jdbc-core/pom.xml
@@ -17,4 +17,5 @@
UTF-8
+
\ No newline at end of file
diff --git a/modules/viewer-modules-ds/viewer-modules-ds-jdbc/viewer-modules-ds-jdbc-core/src/main/java/xyz/thoughtset/viewer/modules/ds/jdbc/core/constant/SupportTypeConstant.java b/modules/viewer-modules-ds/viewer-modules-ds-jdbc/viewer-modules-ds-jdbc-core/src/main/java/xyz/thoughtset/viewer/modules/ds/jdbc/core/constant/SupportTypeConstant.java
new file mode 100644
index 0000000..5098ec1
--- /dev/null
+++ b/modules/viewer-modules-ds/viewer-modules-ds-jdbc/viewer-modules-ds-jdbc-core/src/main/java/xyz/thoughtset/viewer/modules/ds/jdbc/core/constant/SupportTypeConstant.java
@@ -0,0 +1,6 @@
+package xyz.thoughtset.viewer.modules.ds.jdbc.core.constant;
+
+public class SupportTypeConstant {
+ public static final String SUPPORT_TYPE = "jdbc";
+ public static final String MYSQL = "mysql";
+}
diff --git a/executor/viewer-executor-mybatis/src/main/java/xyz/thoughtset/viewer/executor/mybatis/factory/MybatisTypeQueryExecutor.java b/modules/viewer-modules-ds/viewer-modules-ds-jdbc/viewer-modules-ds-jdbc-core/src/main/java/xyz/thoughtset/viewer/modules/ds/jdbc/core/factory/MybatisSqlQueryExecutor.java
similarity index 90%
rename from executor/viewer-executor-mybatis/src/main/java/xyz/thoughtset/viewer/executor/mybatis/factory/MybatisTypeQueryExecutor.java
rename to modules/viewer-modules-ds/viewer-modules-ds-jdbc/viewer-modules-ds-jdbc-core/src/main/java/xyz/thoughtset/viewer/modules/ds/jdbc/core/factory/MybatisSqlQueryExecutor.java
index 63109da..2b6fed4 100644
--- a/executor/viewer-executor-mybatis/src/main/java/xyz/thoughtset/viewer/executor/mybatis/factory/MybatisTypeQueryExecutor.java
+++ b/modules/viewer-modules-ds/viewer-modules-ds-jdbc/viewer-modules-ds-jdbc-core/src/main/java/xyz/thoughtset/viewer/modules/ds/jdbc/core/factory/MybatisSqlQueryExecutor.java
@@ -1,4 +1,4 @@
-package xyz.thoughtset.viewer.executor.mybatis.factory;
+package xyz.thoughtset.viewer.modules.ds.jdbc.core.factory;
import lombok.SneakyThrows;
import org.apache.ibatis.mapping.BoundSql;
@@ -15,13 +15,11 @@ import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.TypeException;
import org.apache.ibatis.type.TypeHandler;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.DependsOn;
import org.springframework.stereotype.Component;
import xyz.thoughtset.viewer.executor.core.base.AbstractExecutor;
-import xyz.thoughtset.viewer.executor.core.base.DataContext;
import xyz.thoughtset.viewer.executor.core.entity.QueryBody;
-import xyz.thoughtset.viewer.executor.core.service.QueryBodyService;
-import xyz.thoughtset.viewer.modules.ds.core.service.DsConfigService;
+import xyz.thoughtset.viewer.modules.ds.core.factory.ConnectFactory;
+import xyz.thoughtset.viewer.modules.ds.jdbc.core.constant.SupportTypeConstant;
import javax.sql.DataSource;
import java.sql.*;
@@ -31,21 +29,20 @@ import java.util.List;
import java.util.Map;
@Component
-public class MybatisTypeQueryExecutor extends AbstractExecutor {
+public class MybatisSqlQueryExecutor extends AbstractExecutor {
+ @Autowired
+ protected ConnectFactory connectFactory;
- public MybatisTypeQueryExecutor() {
- super("MybatisType", true);
-// this.dsConfigService = dsConfigService;
+ public MybatisSqlQueryExecutor() {
+ super(SupportTypeConstant.SUPPORT_TYPE, true);
}
private final Configuration configuration = new Configuration();
- @Autowired
- private DsConfigService dsConfigService;
@Override
protected Object exec(QueryBody queryBody, Map param) {
- return doQuery(queryBody.getQuery(),param,dsConfigService.buildDataSource(queryBody.getDsId()));
+ return doQuery(queryBody.getQuery(),param, connectFactory.buildConnect(queryBody.getDsId(),DataSource.class));
}
@@ -76,6 +73,8 @@ public class MybatisTypeQueryExecutor extends AbstractExecutor {
}
list.add(resultMap);
}
+ }catch (Exception e){
+ e.printStackTrace();
}
// org.apache.ibatis.executor.SimpleExecutor
// Executor executor = new SimpleExecutor();
diff --git a/modules/viewer-modules-ds/viewer-modules-ds-jdbc/viewer-modules-ds-jdbc-mysql/src/main/java/xyz/thoughtset/viewer/modules/ds/jdbc/mysql/config/MysqlDsConfig.java b/modules/viewer-modules-ds/viewer-modules-ds-jdbc/viewer-modules-ds-jdbc-mysql/src/main/java/xyz/thoughtset/viewer/modules/ds/jdbc/mysql/config/MysqlDsConfig.java
index 26d2cbb..ee9e3d5 100644
--- a/modules/viewer-modules-ds/viewer-modules-ds-jdbc/viewer-modules-ds-jdbc-mysql/src/main/java/xyz/thoughtset/viewer/modules/ds/jdbc/mysql/config/MysqlDsConfig.java
+++ b/modules/viewer-modules-ds/viewer-modules-ds-jdbc/viewer-modules-ds-jdbc-mysql/src/main/java/xyz/thoughtset/viewer/modules/ds/jdbc/mysql/config/MysqlDsConfig.java
@@ -3,6 +3,8 @@ package xyz.thoughtset.viewer.modules.ds.jdbc.mysql.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import xyz.thoughtset.viewer.common.connector.entity.bo.Linker;
+import xyz.thoughtset.viewer.modules.ds.jdbc.core.constant.SupportTypeConstant;
+import xyz.thoughtset.viewer.modules.ds.jdbc.core.factory.MybatisSqlQueryExecutor;
import xyz.thoughtset.viewer.modules.ds.jdbc.core.linker.JdbcConnBuilder;
@Configuration
@@ -12,7 +14,8 @@ public class MysqlDsConfig {
public JdbcConnBuilder mysqlConnBuilder() {
Linker dataLinker = new Linker(
"mysql",
- "com.mysql.cj.jdbc.Driver"
+ "com.mysql.cj.jdbc.Driver",
+ SupportTypeConstant.SUPPORT_TYPE
);
return new JdbcConnBuilder(dataLinker);
}
diff --git a/modules/viewer-modules-ds/viewer-modules-ds-jdbc/viewer-modules-ds-jdbc-self/src/main/java/xyz/thoughtset/viewer/modules/ds/jdbc/self/linker/ManualJdbcLinkerBuilder.java b/modules/viewer-modules-ds/viewer-modules-ds-jdbc/viewer-modules-ds-jdbc-self/src/main/java/xyz/thoughtset/viewer/modules/ds/jdbc/self/linker/ManualJdbcLinkerBuilder.java
index eafe572..e578230 100644
--- a/modules/viewer-modules-ds/viewer-modules-ds-jdbc/viewer-modules-ds-jdbc-self/src/main/java/xyz/thoughtset/viewer/modules/ds/jdbc/self/linker/ManualJdbcLinkerBuilder.java
+++ b/modules/viewer-modules-ds/viewer-modules-ds-jdbc/viewer-modules-ds-jdbc-self/src/main/java/xyz/thoughtset/viewer/modules/ds/jdbc/self/linker/ManualJdbcLinkerBuilder.java
@@ -7,12 +7,14 @@ import xyz.thoughtset.viewer.common.connector.entity.bo.Linker;
import xyz.thoughtset.viewer.common.connector.linker.ConnBuilder;
import xyz.thoughtset.viewer.common.connector.linker.LinkerBuilder;
import xyz.thoughtset.viewer.common.connector.linker.LinkerHelper;
+import xyz.thoughtset.viewer.modules.ds.jdbc.core.constant.SupportTypeConstant;
+import xyz.thoughtset.viewer.modules.ds.jdbc.core.factory.MybatisSqlQueryExecutor;
@Component
@Getter
public class ManualJdbcLinkerBuilder extends LinkerBuilder {
public ManualJdbcLinkerBuilder() {
- super("jdbc");
+ super(SupportTypeConstant.SUPPORT_TYPE);
}
@Override
diff --git a/modules/viewer-modules-step/pom.xml b/modules/viewer-modules-step/pom.xml
index 6817d32..c4872b0 100644
--- a/modules/viewer-modules-step/pom.xml
+++ b/modules/viewer-modules-step/pom.xml
@@ -26,10 +26,6 @@
-
- xyz.thoughtset.viewer
- viewer-executor-mybatis
-
\ No newline at end of file
diff --git a/modules/viewer-modules-step/src/main/java/xyz/thoughtset/viewer/modules/step/executor/SimpleBlockExecutor.java b/modules/viewer-modules-step/src/main/java/xyz/thoughtset/viewer/modules/step/executor/SimpleBlockExecutor.java
index 5f1638c..0ef8748 100644
--- a/modules/viewer-modules-step/src/main/java/xyz/thoughtset/viewer/modules/step/executor/SimpleBlockExecutor.java
+++ b/modules/viewer-modules-step/src/main/java/xyz/thoughtset/viewer/modules/step/executor/SimpleBlockExecutor.java
@@ -7,15 +7,12 @@ import org.springframework.expression.spel.support.StandardEvaluationContext;
import org.springframework.stereotype.Component;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
-import xyz.thoughtset.viewer.executor.core.factory.ExecutorManager;
+import xyz.thoughtset.viewer.modules.ds.core.factory.ExecutorManager;
import xyz.thoughtset.viewer.modules.step.entity.BlockParam;
import xyz.thoughtset.viewer.modules.step.entity.QueryBlock;
import xyz.thoughtset.viewer.modules.step.service.QueryBlockService;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
@Component
public class SimpleBlockExecutor {
@@ -32,10 +29,19 @@ public class SimpleBlockExecutor {
List blocks = queryBlockService.listByPId(apiId);
for (QueryBlock block : blocks) {
Object queryResult = blockQuery(block,contentMap);
+ String key = block.getTitle();
+ Object val = queryResult;
if (block.resultWasSingle() && !ObjectUtils.isEmpty(queryResult)){
- queryResult = ((List)queryResult).get(0);
+ if (val instanceof List){
+ val = ((List)queryResult).get(0);
+ }
+ }else{
+ if (!(val instanceof Collection)){
+ val = new ArrayList<>();
+ ((ArrayList) val).add(queryResult);
+ }
}
- contentMap.put(block.getTitle(),queryResult);
+ contentMap.put(key,val);
}
return contentMap;
@@ -67,7 +73,7 @@ public class SimpleBlockExecutor {
// return simpleQueryExecutor.doQuery(queryBody.getQuery(),tmpParamsMap,queryBody.getDsId());
// }
- private List blockQuery(QueryBlock block,Map contentMap){
+ private Object blockQuery(QueryBlock block,Map contentMap){
Map tmpParamsMap = new HashMap();
List blockParams = queryBlockService.blockParams(block.getId());
if (Objects.nonNull(blockParams)){
@@ -84,7 +90,7 @@ public class SimpleBlockExecutor {
tmpParamsMap.put(blockParam.getQpId(),value);
}
}
- return (List) executorManager.execute(block.getBodyId(),tmpParamsMap);
+ return executorManager.execute(block.getBodyId(),tmpParamsMap);
}
diff --git a/pom.xml b/pom.xml
index 63ba05d..9067546 100644
--- a/pom.xml
+++ b/pom.xml
@@ -48,6 +48,7 @@
33.1.0-jre
1.76
1.1.0
+ 4.11.0
@@ -124,6 +125,12 @@
bcprov-jdk18on
${bouncycastle.version}
+
+
+ com.squareup.okhttp3
+ okhttp
+ ${okhttp3.version}
+
@@ -215,10 +222,14 @@
viewer-common-envvar
${revision}
-
xyz.thoughtset.viewer
- viewer-executor-mybatis
+ viewer-modules-ds-http-core
+ ${revision}
+
+
+ xyz.thoughtset.viewer
+ viewer-modules-ds-http-simple
${revision}
--
Gitee