mirror of
https://github.com/CodePhiliaX/Chat2DB.git
synced 2025-08-02 05:20:15 +08:00
Driver configuration is configured through json,
Support driver attribute configuration.
This commit is contained in:
@ -17,4 +17,18 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<artifactId>chat2db-clickhouse</artifactId>
|
<artifactId>chat2db-clickhouse</artifactId>
|
||||||
|
<build>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/java</directory>
|
||||||
|
<includes>
|
||||||
|
<!--properties的配置文件会和编译后的class文件放在一起-->
|
||||||
|
<include>**/*.json</include>
|
||||||
|
</includes>
|
||||||
|
</resource>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</build>
|
||||||
</project>
|
</project>
|
@ -1,16 +1,16 @@
|
|||||||
package ai.chat2db.plugin.clickhouse;
|
package ai.chat2db.plugin.clickhouse;
|
||||||
|
|
||||||
|
|
||||||
import ai.chat2db.plugin.clickhouse.builder.DBConfigBuilder;
|
|
||||||
import ai.chat2db.spi.DBManage;
|
import ai.chat2db.spi.DBManage;
|
||||||
import ai.chat2db.spi.MetaData;
|
import ai.chat2db.spi.MetaData;
|
||||||
import ai.chat2db.spi.Plugin;
|
import ai.chat2db.spi.Plugin;
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
import ai.chat2db.spi.config.DBConfig;
|
||||||
|
import ai.chat2db.spi.util.FileUtils;
|
||||||
|
|
||||||
public class ClickHousePlugin implements Plugin {
|
public class ClickHousePlugin implements Plugin {
|
||||||
@Override
|
@Override
|
||||||
public DBConfig getDBConfig() {
|
public DBConfig getDBConfig() {
|
||||||
return DBConfigBuilder.buildDBConfig();
|
return FileUtils.readJsonValue(this.getClass(),"clickhouse.json", DBConfig.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
package ai.chat2db.plugin.clickhouse.builder;
|
|
||||||
|
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
|
||||||
import ai.chat2db.spi.config.DriverConfig;
|
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
|
|
||||||
public class DBConfigBuilder {
|
|
||||||
public static DBConfig buildDBConfig() {
|
|
||||||
DBConfig dbConfig = new DBConfig();
|
|
||||||
dbConfig.setName("ClickHouse");
|
|
||||||
dbConfig.setDbType("CLICKHOUSE");
|
|
||||||
|
|
||||||
DriverConfig driverConfig = new DriverConfig();
|
|
||||||
driverConfig.setJdbcDriver("clickhouse-jdbc-0.3.2-patch8-http.jar");
|
|
||||||
driverConfig.setJdbcDriverClass("com.clickhouse.jdbc.ClickHouseDriver");
|
|
||||||
driverConfig.setDownloadJdbcDriverUrls(Lists.newArrayList("https://oss.sqlgpt.cn/lib/clickhouse-jdbc-0.3.2-patch8-http.jar"));
|
|
||||||
dbConfig.setDefaultDriverConfig(driverConfig);
|
|
||||||
|
|
||||||
dbConfig.setDriverConfigList(Lists.newArrayList(driverConfig));
|
|
||||||
return dbConfig;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"dbType": "CLICKHOUSE",
|
||||||
|
"driverConfigList": [
|
||||||
|
{
|
||||||
|
"url": "jdbc:clickhouse://localhost:8123/",
|
||||||
|
"defaultDriver": true,
|
||||||
|
"custom": false,
|
||||||
|
"downloadJdbcDriverUrls": [
|
||||||
|
"https://oss.sqlgpt.cn/lib/clickhouse-jdbc-0.3.2-patch8-http.jar"
|
||||||
|
],
|
||||||
|
"jdbcDriver": "clickhouse-jdbc-0.3.2-patch8-http.jar",
|
||||||
|
"jdbcDriverClass": "com.clickhouse.jdbc.ClickHouseDriver"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "ClickHouse"
|
||||||
|
}
|
@ -17,5 +17,18 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<artifactId>chat2db-db2</artifactId>
|
<artifactId>chat2db-db2</artifactId>
|
||||||
|
<build>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/java</directory>
|
||||||
|
<includes>
|
||||||
|
<!--properties的配置文件会和编译后的class文件放在一起-->
|
||||||
|
<include>**/*.json</include>
|
||||||
|
</includes>
|
||||||
|
</resource>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</build>
|
||||||
</project>
|
</project>
|
@ -1,15 +1,16 @@
|
|||||||
package ai.chat2db.plugin.db2;
|
package ai.chat2db.plugin.db2;
|
||||||
|
|
||||||
import ai.chat2db.plugin.db2.builder.DBConfigBuilder;
|
|
||||||
import ai.chat2db.spi.DBManage;
|
import ai.chat2db.spi.DBManage;
|
||||||
import ai.chat2db.spi.MetaData;
|
import ai.chat2db.spi.MetaData;
|
||||||
import ai.chat2db.spi.Plugin;
|
import ai.chat2db.spi.Plugin;
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
import ai.chat2db.spi.config.DBConfig;
|
||||||
|
import ai.chat2db.spi.util.FileUtils;
|
||||||
|
|
||||||
public class DB2Plugin implements Plugin {
|
public class DB2Plugin implements Plugin {
|
||||||
@Override
|
@Override
|
||||||
public DBConfig getDBConfig() {
|
public DBConfig getDBConfig() {
|
||||||
return DBConfigBuilder.buildDBConfig();
|
return FileUtils.readJsonValue(this.getClass(),"db2.json", DBConfig.class);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
package ai.chat2db.plugin.db2.builder;
|
|
||||||
|
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
|
||||||
import ai.chat2db.spi.config.DriverConfig;
|
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
|
|
||||||
public class DBConfigBuilder {
|
|
||||||
public static DBConfig buildDBConfig() {
|
|
||||||
DBConfig dbConfig = new DBConfig();
|
|
||||||
dbConfig.setName("DB2");
|
|
||||||
dbConfig.setDbType("DB2");
|
|
||||||
|
|
||||||
DriverConfig driverConfig = new DriverConfig();
|
|
||||||
driverConfig.setJdbcDriver("db2jcc4_4.26.14.jar");
|
|
||||||
driverConfig.setJdbcDriverClass("com.ibm.db2.jcc.DB2Driver");
|
|
||||||
driverConfig.setDownloadJdbcDriverUrls(Lists.newArrayList("https://oss.sqlgpt.cn/lib/db2jcc4_4.26.14.jar"));
|
|
||||||
dbConfig.setDefaultDriverConfig(driverConfig);
|
|
||||||
|
|
||||||
dbConfig.setDriverConfigList(Lists.newArrayList(driverConfig));
|
|
||||||
return dbConfig;
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"dbType": "DB2",
|
||||||
|
"driverConfigList": [
|
||||||
|
{
|
||||||
|
"url": "jdbc:db2://localhost:50000/",
|
||||||
|
"defaultDriver": true,
|
||||||
|
"custom": false,
|
||||||
|
"downloadJdbcDriverUrls": [
|
||||||
|
"https://oss.sqlgpt.cn/lib/db2jcc4_4.26.14.jar"
|
||||||
|
],
|
||||||
|
"jdbcDriver": "db2jcc4_4.26.14.jar",
|
||||||
|
"jdbcDriverClass": "com.ibm.db2.jcc.DB2Driver"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "DB2"
|
||||||
|
}
|
@ -18,5 +18,18 @@
|
|||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<artifactId>chat2db-dm</artifactId>
|
<artifactId>chat2db-dm</artifactId>
|
||||||
|
<build>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/java</directory>
|
||||||
|
<includes>
|
||||||
|
<!--properties的配置文件会和编译后的class文件放在一起-->
|
||||||
|
<include>**/*.json</include>
|
||||||
|
</includes>
|
||||||
|
</resource>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</build>
|
||||||
</project>
|
</project>
|
@ -1,15 +1,16 @@
|
|||||||
package ai.chat2db.plugin.dm;
|
package ai.chat2db.plugin.dm;
|
||||||
|
|
||||||
import ai.chat2db.plugin.dm.builder.DBConfigBuilder;
|
|
||||||
import ai.chat2db.spi.DBManage;
|
import ai.chat2db.spi.DBManage;
|
||||||
import ai.chat2db.spi.MetaData;
|
import ai.chat2db.spi.MetaData;
|
||||||
import ai.chat2db.spi.Plugin;
|
import ai.chat2db.spi.Plugin;
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
import ai.chat2db.spi.config.DBConfig;
|
||||||
|
import ai.chat2db.spi.util.FileUtils;
|
||||||
|
|
||||||
public class DMPlugin implements Plugin {
|
public class DMPlugin implements Plugin {
|
||||||
@Override
|
@Override
|
||||||
public DBConfig getDBConfig() {
|
public DBConfig getDBConfig() {
|
||||||
return DBConfigBuilder.buildDBConfig();
|
return FileUtils.readJsonValue(this.getClass(),"dm.json", DBConfig.class);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
package ai.chat2db.plugin.dm.builder;
|
|
||||||
|
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
|
||||||
import ai.chat2db.spi.config.DriverConfig;
|
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
|
|
||||||
public class DBConfigBuilder {
|
|
||||||
|
|
||||||
public static DBConfig buildDBConfig() {
|
|
||||||
DBConfig dbConfig = new DBConfig();
|
|
||||||
dbConfig.setName("DM");
|
|
||||||
dbConfig.setDbType("DM");
|
|
||||||
|
|
||||||
DriverConfig driverConfig = new DriverConfig();
|
|
||||||
driverConfig.setJdbcDriver("DmJdbcDriver18-8.1.2.141.jar");
|
|
||||||
driverConfig.setJdbcDriverClass("dm.jdbc.driver.DmDriver");
|
|
||||||
driverConfig.setDownloadJdbcDriverUrls(Lists.newArrayList("https://oss.sqlgpt.cn/lib/DmJdbcDriver18-8.1.2.141.jar"));
|
|
||||||
dbConfig.setDefaultDriverConfig(driverConfig);
|
|
||||||
|
|
||||||
dbConfig.setDriverConfigList(Lists.newArrayList(driverConfig));
|
|
||||||
return dbConfig;
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"dbType": "DM",
|
||||||
|
"driverConfigList": [
|
||||||
|
{
|
||||||
|
"url": "jdbc:dm://localhost:5236/",
|
||||||
|
"defaultDriver": true,
|
||||||
|
"custom": false,
|
||||||
|
"downloadJdbcDriverUrls": [
|
||||||
|
"https://oss.sqlgpt.cn/lib/DmJdbcDriver18-8.1.2.141.jar"
|
||||||
|
],
|
||||||
|
"jdbcDriver": "DmJdbcDriver18-8.1.2.141.jar",
|
||||||
|
"jdbcDriverClass": "dm.jdbc.driver.DmDriver"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "DM"
|
||||||
|
}
|
@ -17,5 +17,18 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<artifactId>chat2db-h2</artifactId>
|
<artifactId>chat2db-h2</artifactId>
|
||||||
|
<build>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/java</directory>
|
||||||
|
<includes>
|
||||||
|
<!--properties的配置文件会和编译后的class文件放在一起-->
|
||||||
|
<include>**/*.json</include>
|
||||||
|
</includes>
|
||||||
|
</resource>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</build>
|
||||||
</project>
|
</project>
|
@ -1,16 +1,16 @@
|
|||||||
package ai.chat2db.plugin.h2;
|
package ai.chat2db.plugin.h2;
|
||||||
|
|
||||||
import ai.chat2db.plugin.h2.builder.DBConfigBuilder;
|
|
||||||
import ai.chat2db.spi.DBManage;
|
import ai.chat2db.spi.DBManage;
|
||||||
import ai.chat2db.spi.MetaData;
|
import ai.chat2db.spi.MetaData;
|
||||||
import ai.chat2db.spi.Plugin;
|
import ai.chat2db.spi.Plugin;
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
import ai.chat2db.spi.config.DBConfig;
|
||||||
import ai.chat2db.spi.jdbc.DefaultMetaService;
|
import ai.chat2db.spi.jdbc.DefaultMetaService;
|
||||||
|
import ai.chat2db.spi.util.FileUtils;
|
||||||
|
|
||||||
public class H2Plugin extends DefaultMetaService implements Plugin {
|
public class H2Plugin extends DefaultMetaService implements Plugin {
|
||||||
@Override
|
@Override
|
||||||
public DBConfig getDBConfig() {
|
public DBConfig getDBConfig() {
|
||||||
return DBConfigBuilder.buildDBConfig();
|
return FileUtils.readJsonValue(this.getClass(),"h2.json", DBConfig.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -22,4 +22,5 @@ public class H2Plugin extends DefaultMetaService implements Plugin {
|
|||||||
public DBManage getDBManage() {
|
public DBManage getDBManage() {
|
||||||
return new H2DBManage();
|
return new H2DBManage();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
package ai.chat2db.plugin.h2.builder;
|
|
||||||
|
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
|
||||||
import ai.chat2db.spi.config.DriverConfig;
|
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
|
|
||||||
public class DBConfigBuilder {
|
|
||||||
|
|
||||||
public static DBConfig buildDBConfig() {
|
|
||||||
DBConfig dbConfig = new DBConfig();
|
|
||||||
dbConfig.setName("H2");
|
|
||||||
dbConfig.setDbType("H2");
|
|
||||||
|
|
||||||
DriverConfig driverConfig = new DriverConfig();
|
|
||||||
driverConfig.setJdbcDriver("h2-2.1.214.jar");
|
|
||||||
driverConfig.setJdbcDriverClass("org.h2.Driver");
|
|
||||||
driverConfig.setDownloadJdbcDriverUrls(Lists.newArrayList("https://oss.sqlgpt.cn/lib/h2-2.1.214.jar"));
|
|
||||||
dbConfig.setDefaultDriverConfig(driverConfig);
|
|
||||||
|
|
||||||
dbConfig.setDriverConfigList(Lists.newArrayList(driverConfig));
|
|
||||||
return dbConfig;
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"dbType": "H2",
|
||||||
|
"driverConfigList": [
|
||||||
|
{
|
||||||
|
"url": "jdbc:h2:tcp://localhost:9092/",
|
||||||
|
"defaultDriver": true,
|
||||||
|
"custom": false,
|
||||||
|
"downloadJdbcDriverUrls": [
|
||||||
|
"https://oss.sqlgpt.cn/lib/h2-2.1.214.jar"
|
||||||
|
],
|
||||||
|
"jdbcDriver": "h2-2.1.214.jar",
|
||||||
|
"jdbcDriverClass": "org.h2.Driver"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "H2"
|
||||||
|
}
|
@ -18,6 +18,18 @@
|
|||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<artifactId>chat2db-hive</artifactId>
|
<artifactId>chat2db-hive</artifactId>
|
||||||
|
<build>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/java</directory>
|
||||||
|
<includes>
|
||||||
|
<include>**/*.json</include>
|
||||||
|
</includes>
|
||||||
|
</resource>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</build>
|
||||||
|
|
||||||
</project>
|
</project>
|
@ -1,15 +1,15 @@
|
|||||||
package ai.chat2db.plugin.hive;
|
package ai.chat2db.plugin.hive;
|
||||||
|
|
||||||
import ai.chat2db.plugin.hive.builder.DBConfigBuilder;
|
|
||||||
import ai.chat2db.spi.DBManage;
|
import ai.chat2db.spi.DBManage;
|
||||||
import ai.chat2db.spi.MetaData;
|
import ai.chat2db.spi.MetaData;
|
||||||
import ai.chat2db.spi.Plugin;
|
import ai.chat2db.spi.Plugin;
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
import ai.chat2db.spi.config.DBConfig;
|
||||||
|
import ai.chat2db.spi.util.FileUtils;
|
||||||
|
|
||||||
public class HivePlugin implements Plugin {
|
public class HivePlugin implements Plugin {
|
||||||
@Override
|
@Override
|
||||||
public DBConfig getDBConfig() {
|
public DBConfig getDBConfig() {
|
||||||
return DBConfigBuilder.buildDBConfig();
|
return FileUtils.readJsonValue(this.getClass(),"hive.json", DBConfig.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
package ai.chat2db.plugin.hive.builder;
|
|
||||||
|
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
|
||||||
import ai.chat2db.spi.config.DriverConfig;
|
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
|
|
||||||
public class DBConfigBuilder {
|
|
||||||
public static DBConfig buildDBConfig() {
|
|
||||||
DBConfig dbConfig = new DBConfig();
|
|
||||||
dbConfig.setName("Hive");
|
|
||||||
dbConfig.setDbType("HIVE");
|
|
||||||
DriverConfig driverConfig = new DriverConfig();
|
|
||||||
driverConfig.setJdbcDriver("hive-jdbc-3.1.2-standalone.jar");
|
|
||||||
driverConfig.setJdbcDriverClass("org.apache.hive.jdbc.HiveDriver");
|
|
||||||
driverConfig.setDownloadJdbcDriverUrls(Lists.newArrayList("https://oss.sqlgpt.cn/lib/hive-jdbc-3.1.2-standalone.jar"));
|
|
||||||
dbConfig.setDefaultDriverConfig(driverConfig);
|
|
||||||
dbConfig.setDriverConfigList(Lists.newArrayList(driverConfig));
|
|
||||||
return dbConfig;
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"dbType": "HIVE",
|
||||||
|
"driverConfigList": [
|
||||||
|
{
|
||||||
|
"url": "jdbc:hive2://localhost:10000/",
|
||||||
|
"defaultDriver": true,
|
||||||
|
"custom": false,
|
||||||
|
"downloadJdbcDriverUrls": [
|
||||||
|
"https://oss.sqlgpt.cn/lib/hive-jdbc-3.1.2-standalone.jar"
|
||||||
|
],
|
||||||
|
"jdbcDriver": "hive-jdbc-3.1.2-standalone.jar",
|
||||||
|
"jdbcDriverClass": "org.apache.hive.jdbc.HiveDriver"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "Hive"
|
||||||
|
}
|
@ -18,5 +18,18 @@
|
|||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<artifactId>chat2db-kingbase</artifactId>
|
<artifactId>chat2db-kingbase</artifactId>
|
||||||
|
<build>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/java</directory>
|
||||||
|
<includes>
|
||||||
|
<!--properties的配置文件会和编译后的class文件放在一起-->
|
||||||
|
<include>**/*.json</include>
|
||||||
|
</includes>
|
||||||
|
</resource>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</build>
|
||||||
</project>
|
</project>
|
@ -1,15 +1,15 @@
|
|||||||
package ai.chat2db.plugin.kingbase;
|
package ai.chat2db.plugin.kingbase;
|
||||||
|
|
||||||
import ai.chat2db.plugin.kingbase.builder.DBConfigBuilder;
|
|
||||||
import ai.chat2db.spi.DBManage;
|
import ai.chat2db.spi.DBManage;
|
||||||
import ai.chat2db.spi.MetaData;
|
import ai.chat2db.spi.MetaData;
|
||||||
import ai.chat2db.spi.Plugin;
|
import ai.chat2db.spi.Plugin;
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
import ai.chat2db.spi.config.DBConfig;
|
||||||
|
import ai.chat2db.spi.util.FileUtils;
|
||||||
|
|
||||||
public class KingBasePlugin implements Plugin {
|
public class KingBasePlugin implements Plugin {
|
||||||
@Override
|
@Override
|
||||||
public DBConfig getDBConfig() {
|
public DBConfig getDBConfig() {
|
||||||
return DBConfigBuilder.buildDBConfig();
|
return FileUtils.readJsonValue(this.getClass(),"kingbase.json", DBConfig.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,28 +0,0 @@
|
|||||||
package ai.chat2db.plugin.kingbase.builder;
|
|
||||||
|
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
|
||||||
import ai.chat2db.spi.config.DriverConfig;
|
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
|
|
||||||
public class DBConfigBuilder {
|
|
||||||
public static DBConfig buildDBConfig() {
|
|
||||||
DBConfig dbConfig = new DBConfig();
|
|
||||||
dbConfig.setName("KingBase");
|
|
||||||
dbConfig.setDbType("KINGBASE");
|
|
||||||
|
|
||||||
|
|
||||||
DriverConfig driverConfig = new DriverConfig();
|
|
||||||
driverConfig.setJdbcDriver("kingbase8-8.6.0.jar");
|
|
||||||
driverConfig.setJdbcDriverClass("com.kingbase8.Driver");
|
|
||||||
driverConfig.setDownloadJdbcDriverUrls(Lists.newArrayList("https://oss.sqlgpt.cn/lib/kingbase8-8.6.0.jar"));
|
|
||||||
dbConfig.setDefaultDriverConfig(driverConfig);
|
|
||||||
|
|
||||||
DriverConfig driverConfig1 = new DriverConfig();
|
|
||||||
driverConfig1.setJdbcDriver("kingbase8-8.2.0.jar");
|
|
||||||
driverConfig1.setJdbcDriverClass("com.kingbase8.Driver");
|
|
||||||
driverConfig1.setDownloadJdbcDriverUrls(Lists.newArrayList("https://oss.sqlgpt.cn/lib/kingbase8-8.2.0.jar"));
|
|
||||||
|
|
||||||
dbConfig.setDriverConfigList(Lists.newArrayList(driverConfig,driverConfig1));
|
|
||||||
return dbConfig;
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"dbType": "KINGBASE",
|
||||||
|
"driverConfigList": [
|
||||||
|
{
|
||||||
|
"url": "jdbc:kingbase8://localhost:54321/",
|
||||||
|
"defaultDriver": true,
|
||||||
|
"custom": false,
|
||||||
|
"downloadJdbcDriverUrls": [
|
||||||
|
"https://oss.sqlgpt.cn/lib/kingbase8-8.6.0.jar"
|
||||||
|
],
|
||||||
|
"jdbcDriver": "kingbase8-8.6.0.jar",
|
||||||
|
"jdbcDriverClass": "com.kingbase8.Driver"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "jdbc:kingbase8://localhost:54321/",
|
||||||
|
"custom": false,
|
||||||
|
"defaultDriver": false,
|
||||||
|
"downloadJdbcDriverUrls": [
|
||||||
|
"https://oss.sqlgpt.cn/lib/kingbase8-8.2.0.jar"
|
||||||
|
],
|
||||||
|
"jdbcDriver": "kingbase8-8.2.0.jar",
|
||||||
|
"jdbcDriverClass": "com.kingbase8.Driver"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "KingBase"
|
||||||
|
}
|
@ -23,5 +23,18 @@
|
|||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<artifactId>chat2db-mariadb</artifactId>
|
<artifactId>chat2db-mariadb</artifactId>
|
||||||
|
<build>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/java</directory>
|
||||||
|
<includes>
|
||||||
|
<!--properties的配置文件会和编译后的class文件放在一起-->
|
||||||
|
<include>**/*.json</include>
|
||||||
|
</includes>
|
||||||
|
</resource>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</build>
|
||||||
</project>
|
</project>
|
@ -1,15 +1,15 @@
|
|||||||
package ai.chat2db.plugin.mariadb;
|
package ai.chat2db.plugin.mariadb;
|
||||||
|
|
||||||
import ai.chat2db.plugin.mariadb.builder.DBConfigBuilder;
|
|
||||||
import ai.chat2db.spi.DBManage;
|
import ai.chat2db.spi.DBManage;
|
||||||
import ai.chat2db.spi.MetaData;
|
import ai.chat2db.spi.MetaData;
|
||||||
import ai.chat2db.spi.Plugin;
|
import ai.chat2db.spi.Plugin;
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
import ai.chat2db.spi.config.DBConfig;
|
||||||
|
import ai.chat2db.spi.util.FileUtils;
|
||||||
|
|
||||||
public class MariaDBPlugin implements Plugin {
|
public class MariaDBPlugin implements Plugin {
|
||||||
@Override
|
@Override
|
||||||
public DBConfig getDBConfig() {
|
public DBConfig getDBConfig() {
|
||||||
return DBConfigBuilder.buildDBConfig();
|
return FileUtils.readJsonValue(this.getClass(),"mariadb.json", DBConfig.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
package ai.chat2db.plugin.mariadb.builder;
|
|
||||||
|
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
|
||||||
import ai.chat2db.spi.config.DriverConfig;
|
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
|
|
||||||
public class DBConfigBuilder {
|
|
||||||
public static DBConfig buildDBConfig() {
|
|
||||||
DBConfig dbConfig = new DBConfig();
|
|
||||||
dbConfig.setName("MariaDB");
|
|
||||||
dbConfig.setDbType("MARIADB");
|
|
||||||
DriverConfig driverConfig = new DriverConfig();
|
|
||||||
driverConfig.setJdbcDriver("mariadb-java-client-3.0.8.jar");
|
|
||||||
driverConfig.setJdbcDriverClass("org.mariadb.jdbc.Driver");
|
|
||||||
driverConfig.setDownloadJdbcDriverUrls(Lists.newArrayList("https://oss.sqlgpt.cn/lib/mariadb-java-client-3.0.8.jar"));
|
|
||||||
dbConfig.setDefaultDriverConfig(driverConfig);
|
|
||||||
dbConfig.setDriverConfigList(Lists.newArrayList(driverConfig));
|
|
||||||
return dbConfig;
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"dbType": "MARIADB",
|
||||||
|
"driverConfigList": [
|
||||||
|
{
|
||||||
|
"url": "jdbc:mariadb://localhost:3306/",
|
||||||
|
"defaultDriver": true,
|
||||||
|
"custom": false,
|
||||||
|
"downloadJdbcDriverUrls": [
|
||||||
|
"https://oss.sqlgpt.cn/lib/mariadb-java-client-3.0.8.jar"
|
||||||
|
],
|
||||||
|
"jdbcDriver": "mariadb-java-client-3.0.8.jar",
|
||||||
|
"jdbcDriverClass": "org.mariadb.jdbc.Driver"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "MariaDB"
|
||||||
|
}
|
@ -18,6 +18,19 @@
|
|||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<artifactId>chat2db-mongodb</artifactId>
|
<artifactId>chat2db-mongodb</artifactId>
|
||||||
|
<build>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/java</directory>
|
||||||
|
<includes>
|
||||||
|
<!--properties的配置文件会和编译后的class文件放在一起-->
|
||||||
|
<include>**/*.json</include>
|
||||||
|
</includes>
|
||||||
|
</resource>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</build>
|
||||||
|
|
||||||
</project>
|
</project>
|
@ -1,15 +1,16 @@
|
|||||||
package ai.chat2db.plugin.mongodb;
|
package ai.chat2db.plugin.mongodb;
|
||||||
|
|
||||||
import ai.chat2db.plugin.mongodb.builder.DBConfigBuilder;
|
|
||||||
import ai.chat2db.spi.DBManage;
|
import ai.chat2db.spi.DBManage;
|
||||||
import ai.chat2db.spi.MetaData;
|
import ai.chat2db.spi.MetaData;
|
||||||
import ai.chat2db.spi.Plugin;
|
import ai.chat2db.spi.Plugin;
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
import ai.chat2db.spi.config.DBConfig;
|
||||||
|
import ai.chat2db.spi.util.FileUtils;
|
||||||
|
|
||||||
public class MongodbPlugin implements Plugin {
|
public class MongodbPlugin implements Plugin {
|
||||||
@Override
|
@Override
|
||||||
public DBConfig getDBConfig() {
|
public DBConfig getDBConfig() {
|
||||||
return DBConfigBuilder.buildDBConfig();
|
return FileUtils.readJsonValue(this.getClass(),"mongodb.json", DBConfig.class);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
package ai.chat2db.plugin.mongodb.builder;
|
|
||||||
|
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
|
||||||
import ai.chat2db.spi.config.DriverConfig;
|
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
|
|
||||||
public class DBConfigBuilder {
|
|
||||||
public static DBConfig buildDBConfig() {
|
|
||||||
DBConfig dbConfig = new DBConfig();
|
|
||||||
dbConfig.setName("Mongodb");
|
|
||||||
dbConfig.setDbType("MONGODB");
|
|
||||||
DriverConfig driverConfig = new DriverConfig();
|
|
||||||
driverConfig.setJdbcDriver("mongo-jdbc-standalone-1.18.jar");
|
|
||||||
driverConfig.setJdbcDriverClass("com.dbschema.MongoJdbcDriver");
|
|
||||||
driverConfig.setDownloadJdbcDriverUrls(Lists.newArrayList("https://oss.sqlgpt.cn/lib/mongo-jdbc-standalone-1.18.jar"));
|
|
||||||
dbConfig.setDefaultDriverConfig(driverConfig);
|
|
||||||
dbConfig.setDriverConfigList(Lists.newArrayList(driverConfig));
|
|
||||||
return dbConfig;
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"dbType": "MONGODB",
|
||||||
|
"driverConfigList": [
|
||||||
|
{
|
||||||
|
"url": "jdbc:mongodb://localhost:27017",
|
||||||
|
"defaultDriver":true,
|
||||||
|
"custom": false,
|
||||||
|
"downloadJdbcDriverUrls": [
|
||||||
|
"https://oss.sqlgpt.cn/lib/mongo-jdbc-standalone-1.18.jar"
|
||||||
|
],
|
||||||
|
"jdbcDriver": "mongo-jdbc-standalone-1.18.jar",
|
||||||
|
"jdbcDriverClass": "com.dbschema.MongoJdbcDriver"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "Mongodb"
|
||||||
|
}
|
@ -18,4 +18,18 @@
|
|||||||
<artifactId>chat2db-spi</artifactId>
|
<artifactId>chat2db-spi</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/java</directory>
|
||||||
|
<includes>
|
||||||
|
<!--properties的配置文件会和编译后的class文件放在一起-->
|
||||||
|
<include>**/*.json</include>
|
||||||
|
</includes>
|
||||||
|
</resource>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</build>
|
||||||
</project>
|
</project>
|
@ -1,16 +1,16 @@
|
|||||||
package ai.chat2db.plugin.mysql;
|
package ai.chat2db.plugin.mysql;
|
||||||
|
|
||||||
import ai.chat2db.plugin.mysql.builder.DBConfigBuilder;
|
|
||||||
import ai.chat2db.spi.DBManage;
|
import ai.chat2db.spi.DBManage;
|
||||||
import ai.chat2db.spi.MetaData;
|
import ai.chat2db.spi.MetaData;
|
||||||
import ai.chat2db.spi.Plugin;
|
import ai.chat2db.spi.Plugin;
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
import ai.chat2db.spi.config.DBConfig;
|
||||||
|
import ai.chat2db.spi.util.FileUtils;
|
||||||
|
|
||||||
public class MysqlPlugin implements Plugin {
|
public class MysqlPlugin implements Plugin {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DBConfig getDBConfig() {
|
public DBConfig getDBConfig() {
|
||||||
return DBConfigBuilder.buildDBConfig();
|
return FileUtils.readJsonValue(this.getClass(),"mysql.json", DBConfig.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,29 +0,0 @@
|
|||||||
package ai.chat2db.plugin.mysql.builder;
|
|
||||||
|
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
|
||||||
import ai.chat2db.spi.config.DriverConfig;
|
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
|
|
||||||
public class DBConfigBuilder {
|
|
||||||
|
|
||||||
public static DBConfig buildDBConfig() {
|
|
||||||
DBConfig dbConfig = new DBConfig();
|
|
||||||
dbConfig.setName("Mysql");
|
|
||||||
dbConfig.setDbType("MYSQL");
|
|
||||||
|
|
||||||
DriverConfig driverConfig = new DriverConfig();
|
|
||||||
driverConfig.setJdbcDriver("mysql-connector-java-8.0.30.jar");
|
|
||||||
driverConfig.setJdbcDriverClass("com.mysql.cj.jdbc.Driver");
|
|
||||||
driverConfig.setDownloadJdbcDriverUrls(Lists.newArrayList("https://oss.sqlgpt.cn/lib/mysql-connector-java-8.0.30.jar"));
|
|
||||||
dbConfig.setDefaultDriverConfig(driverConfig);
|
|
||||||
|
|
||||||
|
|
||||||
DriverConfig driverConfig2 = new DriverConfig();
|
|
||||||
driverConfig2.setJdbcDriver("mysql-connector-java-5.1.47.jar");
|
|
||||||
driverConfig2.setJdbcDriverClass("com.mysql.jdbc.Driver");
|
|
||||||
driverConfig2.setDownloadJdbcDriverUrls(Lists.newArrayList("https://oss.sqlgpt.cn/lib/mysql-connector-java-5.1.47.jar"));
|
|
||||||
|
|
||||||
dbConfig.setDriverConfigList(Lists.newArrayList(driverConfig,driverConfig2));
|
|
||||||
return dbConfig;
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"dbType": "MYSQL",
|
||||||
|
"driverConfigList": [
|
||||||
|
{
|
||||||
|
"url": "jdbc:mysql://localhost:3306/",
|
||||||
|
"defaultDriver": true,
|
||||||
|
"custom": false,
|
||||||
|
"downloadJdbcDriverUrls": [
|
||||||
|
"https://oss.sqlgpt.cn/lib/mysql-connector-java-8.0.30.jar"
|
||||||
|
],
|
||||||
|
"jdbcDriver": "mysql-connector-java-8.0.30.jar",
|
||||||
|
"jdbcDriverClass": "com.mysql.cj.jdbc.Driver"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "jdbc:mysql://localhost:3306/",
|
||||||
|
"defaultDriver": false,
|
||||||
|
"custom": false,
|
||||||
|
"downloadJdbcDriverUrls": [
|
||||||
|
"https://oss.sqlgpt.cn/lib/mysql-connector-java-5.1.47.jar"
|
||||||
|
],
|
||||||
|
"jdbcDriver": "mysql-connector-java-5.1.47.jar",
|
||||||
|
"jdbcDriverClass": "com.mysql.jdbc.Driver"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "Mysql"
|
||||||
|
}
|
@ -18,5 +18,18 @@
|
|||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<artifactId>chat2db-oceanbase</artifactId>
|
<artifactId>chat2db-oceanbase</artifactId>
|
||||||
|
<build>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/java</directory>
|
||||||
|
<includes>
|
||||||
|
<!--properties的配置文件会和编译后的class文件放在一起-->
|
||||||
|
<include>**/*.json</include>
|
||||||
|
</includes>
|
||||||
|
</resource>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</build>
|
||||||
</project>
|
</project>
|
@ -1,16 +1,15 @@
|
|||||||
package ai.chat2db.plugin.oceanbase;
|
package ai.chat2db.plugin.oceanbase;
|
||||||
|
|
||||||
import ai.chat2db.plugin.oceanbase.builder.DBConfigBuilder;
|
|
||||||
import ai.chat2db.spi.DBManage;
|
import ai.chat2db.spi.DBManage;
|
||||||
import ai.chat2db.spi.MetaData;
|
import ai.chat2db.spi.MetaData;
|
||||||
import ai.chat2db.spi.Plugin;
|
import ai.chat2db.spi.Plugin;
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
import ai.chat2db.spi.config.DBConfig;
|
||||||
import ai.chat2db.spi.jdbc.DefaultMetaService;
|
import ai.chat2db.spi.util.FileUtils;
|
||||||
|
|
||||||
public class OceanBasePlugin implements Plugin {
|
public class OceanBasePlugin implements Plugin {
|
||||||
@Override
|
@Override
|
||||||
public DBConfig getDBConfig() {
|
public DBConfig getDBConfig() {
|
||||||
return DBConfigBuilder.buildDBConfig();
|
return FileUtils.readJsonValue(this.getClass(),"oceanbase.json", DBConfig.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
package ai.chat2db.plugin.oceanbase.builder;
|
|
||||||
|
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
|
||||||
import ai.chat2db.spi.config.DriverConfig;
|
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
|
|
||||||
public class DBConfigBuilder {
|
|
||||||
public static DBConfig buildDBConfig() {
|
|
||||||
DBConfig dbConfig = new DBConfig();
|
|
||||||
dbConfig.setName("OceanBase");
|
|
||||||
dbConfig.setDbType("OCEANBASE");
|
|
||||||
DriverConfig driverConfig = new DriverConfig();
|
|
||||||
driverConfig.setJdbcDriver("oceanbase-client-2.4.2.jar");
|
|
||||||
driverConfig.setJdbcDriverClass("com.oceanbase.jdbc.Driver");
|
|
||||||
driverConfig.setDownloadJdbcDriverUrls(Lists.newArrayList("https://oss.sqlgpt.cn/lib/oceanbase-client-2.4.2.jar"));
|
|
||||||
dbConfig.setDefaultDriverConfig(driverConfig);
|
|
||||||
dbConfig.setDriverConfigList(Lists.newArrayList(driverConfig));
|
|
||||||
return dbConfig;
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"dbType": "OCEANBASE",
|
||||||
|
"driverConfigList": [
|
||||||
|
{
|
||||||
|
"url": "jdbc:oceanbase://localhost:2883/",
|
||||||
|
"custom": false,
|
||||||
|
"defaultDriver": true,
|
||||||
|
"downloadJdbcDriverUrls": [
|
||||||
|
"https://oss.sqlgpt.cn/lib/oceanbase-client-2.4.2.jar"
|
||||||
|
],
|
||||||
|
"jdbcDriver": "oceanbase-client-2.4.2.jar",
|
||||||
|
"jdbcDriverClass": "com.oceanbase.jdbc.Driver"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "OceanBase"
|
||||||
|
}
|
@ -19,4 +19,18 @@
|
|||||||
<artifactId>chat2db-spi</artifactId>
|
<artifactId>chat2db-spi</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/java</directory>
|
||||||
|
<includes>
|
||||||
|
<!--properties的配置文件会和编译后的class文件放在一起-->
|
||||||
|
<include>**/*.json</include>
|
||||||
|
</includes>
|
||||||
|
</resource>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</build>
|
||||||
</project>
|
</project>
|
@ -1,16 +1,17 @@
|
|||||||
package ai.chat2db.plugin.oracle;
|
package ai.chat2db.plugin.oracle;
|
||||||
|
|
||||||
|
|
||||||
import ai.chat2db.plugin.oracle.builder.DBConfigBuilder;
|
|
||||||
import ai.chat2db.spi.DBManage;
|
import ai.chat2db.spi.DBManage;
|
||||||
import ai.chat2db.spi.MetaData;
|
import ai.chat2db.spi.MetaData;
|
||||||
import ai.chat2db.spi.Plugin;
|
import ai.chat2db.spi.Plugin;
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
import ai.chat2db.spi.config.DBConfig;
|
||||||
|
import ai.chat2db.spi.util.FileUtils;
|
||||||
|
|
||||||
public class OraclePlugin implements Plugin {
|
public class OraclePlugin implements Plugin {
|
||||||
@Override
|
@Override
|
||||||
public DBConfig getDBConfig() {
|
public DBConfig getDBConfig() {
|
||||||
return DBConfigBuilder.buildDBConfig();
|
return FileUtils.readJsonValue(this.getClass(),"oracle.json", DBConfig.class);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
package ai.chat2db.plugin.oracle.builder;
|
|
||||||
|
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
|
||||||
import ai.chat2db.spi.config.DriverConfig;
|
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
|
|
||||||
public class DBConfigBuilder {
|
|
||||||
|
|
||||||
public static DBConfig buildDBConfig() {
|
|
||||||
DBConfig dbConfig = new DBConfig();
|
|
||||||
dbConfig.setName("Oracle");
|
|
||||||
dbConfig.setDbType("ORACLE");
|
|
||||||
|
|
||||||
DriverConfig driverConfig = new DriverConfig();
|
|
||||||
driverConfig.setJdbcDriver("ojdbc8-19.3.0.0.jar,orai18n-19.3.0.0.jar");
|
|
||||||
driverConfig.setJdbcDriverClass("oracle.jdbc.driver.OracleDriver");
|
|
||||||
driverConfig.setDownloadJdbcDriverUrls(Lists.newArrayList("https://oss.sqlgpt.cn/lib/ojdbc8-19.3.0.0.jar", "https://oss.sqlgpt.cn/lib/orai18n-19.3.0.0.jar"));
|
|
||||||
dbConfig.setDefaultDriverConfig(driverConfig);
|
|
||||||
|
|
||||||
dbConfig.setDriverConfigList(Lists.newArrayList(driverConfig));
|
|
||||||
return dbConfig;
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"dbType": "ORACLE",
|
||||||
|
"driverConfigList": [
|
||||||
|
{
|
||||||
|
"url": "jdbc:oracle:thin:@localhost:1521:XE",
|
||||||
|
"custom": false,
|
||||||
|
"defaultDriver": true,
|
||||||
|
"downloadJdbcDriverUrls": [
|
||||||
|
"https://oss.sqlgpt.cn/lib/ojdbc8-19.3.0.0.jar",
|
||||||
|
"https://oss.sqlgpt.cn/lib/orai18n-19.3.0.0.jar"
|
||||||
|
],
|
||||||
|
"jdbcDriver": "ojdbc8-19.3.0.0.jar,orai18n-19.3.0.0.jar",
|
||||||
|
"jdbcDriverClass": "oracle.jdbc.driver.OracleDriver"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "Oracle"
|
||||||
|
}
|
@ -19,5 +19,18 @@
|
|||||||
<artifactId>chat2db-spi</artifactId>
|
<artifactId>chat2db-spi</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/java</directory>
|
||||||
|
<includes>
|
||||||
|
<!--properties的配置文件会和编译后的class文件放在一起-->
|
||||||
|
<include>**/*.json</include>
|
||||||
|
</includes>
|
||||||
|
</resource>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</build>
|
||||||
</project>
|
</project>
|
@ -1,15 +1,15 @@
|
|||||||
package ai.chat2db.plugin.postgresql;
|
package ai.chat2db.plugin.postgresql;
|
||||||
|
|
||||||
import ai.chat2db.plugin.postgresql.builder.DBConfigBuilder;
|
|
||||||
import ai.chat2db.spi.DBManage;
|
import ai.chat2db.spi.DBManage;
|
||||||
import ai.chat2db.spi.MetaData;
|
import ai.chat2db.spi.MetaData;
|
||||||
import ai.chat2db.spi.Plugin;
|
import ai.chat2db.spi.Plugin;
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
import ai.chat2db.spi.config.DBConfig;
|
||||||
|
import ai.chat2db.spi.util.FileUtils;
|
||||||
|
|
||||||
public class PostgreSQLPlugin implements Plugin {
|
public class PostgreSQLPlugin implements Plugin {
|
||||||
@Override
|
@Override
|
||||||
public DBConfig getDBConfig() {
|
public DBConfig getDBConfig() {
|
||||||
return DBConfigBuilder.buildDBConfig();
|
return FileUtils.readJsonValue(this.getClass(),"pg.json", DBConfig.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
package ai.chat2db.plugin.postgresql.builder;
|
|
||||||
|
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
|
||||||
import ai.chat2db.spi.config.DriverConfig;
|
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
|
|
||||||
public class DBConfigBuilder {
|
|
||||||
|
|
||||||
public static DBConfig buildDBConfig() {
|
|
||||||
DBConfig dbConfig = new DBConfig();
|
|
||||||
dbConfig.setName("PostgreSQL");
|
|
||||||
dbConfig.setDbType("POSTGRESQL");
|
|
||||||
DriverConfig driverConfig = new DriverConfig();
|
|
||||||
driverConfig.setJdbcDriver("postgresql-42.5.1.jar");
|
|
||||||
driverConfig.setJdbcDriverClass("org.postgresql.Driver");
|
|
||||||
driverConfig.setDownloadJdbcDriverUrls(Lists.newArrayList("https://oss.sqlgpt.cn/lib/postgresql-42.5.1.jar"));
|
|
||||||
dbConfig.setDefaultDriverConfig(driverConfig);
|
|
||||||
dbConfig.setDriverConfigList(Lists.newArrayList(driverConfig));
|
|
||||||
return dbConfig;
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"dbType": "POSTGRESQL",
|
||||||
|
"driverConfigList": [
|
||||||
|
{
|
||||||
|
"url": "jdbc:postgresql://localhost:5432/postgres",
|
||||||
|
"custom": false,
|
||||||
|
"defaultDriver": true,
|
||||||
|
"downloadJdbcDriverUrls": [
|
||||||
|
"https://oss.sqlgpt.cn/lib/postgresql-42.5.1.jar"
|
||||||
|
],
|
||||||
|
"jdbcDriver": "postgresql-42.5.1.jar",
|
||||||
|
"jdbcDriverClass": "org.postgresql.Driver"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "PostgreSQL"
|
||||||
|
}
|
@ -17,5 +17,18 @@
|
|||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<artifactId>chat2db-presto</artifactId>
|
<artifactId>chat2db-presto</artifactId>
|
||||||
|
<build>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/java</directory>
|
||||||
|
<includes>
|
||||||
|
<!--properties的配置文件会和编译后的class文件放在一起-->
|
||||||
|
<include>**/*.json</include>
|
||||||
|
</includes>
|
||||||
|
</resource>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</build>
|
||||||
</project>
|
</project>
|
@ -1,16 +1,16 @@
|
|||||||
package ai.chat2db.plugin.presto;
|
package ai.chat2db.plugin.presto;
|
||||||
|
|
||||||
|
|
||||||
import ai.chat2db.plugin.presto.builder.DBConfigBuilder;
|
|
||||||
import ai.chat2db.spi.DBManage;
|
import ai.chat2db.spi.DBManage;
|
||||||
import ai.chat2db.spi.MetaData;
|
import ai.chat2db.spi.MetaData;
|
||||||
import ai.chat2db.spi.Plugin;
|
import ai.chat2db.spi.Plugin;
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
import ai.chat2db.spi.config.DBConfig;
|
||||||
|
import ai.chat2db.spi.util.FileUtils;
|
||||||
|
|
||||||
public class PrestoPlugin implements Plugin {
|
public class PrestoPlugin implements Plugin {
|
||||||
@Override
|
@Override
|
||||||
public DBConfig getDBConfig() {
|
public DBConfig getDBConfig() {
|
||||||
return DBConfigBuilder.buildDBConfig();
|
return FileUtils.readJsonValue(this.getClass(),"presto.json", DBConfig.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
package ai.chat2db.plugin.presto.builder;
|
|
||||||
|
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
|
||||||
import ai.chat2db.spi.config.DriverConfig;
|
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
|
|
||||||
public class DBConfigBuilder {
|
|
||||||
public static DBConfig buildDBConfig() {
|
|
||||||
DBConfig dbConfig = new DBConfig();
|
|
||||||
dbConfig.setName("Presto");
|
|
||||||
dbConfig.setDbType("PRESTO");
|
|
||||||
DriverConfig driverConfig = new DriverConfig();
|
|
||||||
driverConfig.setJdbcDriver("presto-jdbc-0.245.1.jar");
|
|
||||||
driverConfig.setJdbcDriverClass("com.facebook.presto.jdbc.PrestoDriver");
|
|
||||||
driverConfig.setDownloadJdbcDriverUrls(Lists.newArrayList("https://oss.sqlgpt.cn/lib/presto-jdbc-0.245.1.jar"));
|
|
||||||
dbConfig.setDefaultDriverConfig(driverConfig);
|
|
||||||
dbConfig.setDriverConfigList(Lists.newArrayList(driverConfig));
|
|
||||||
return dbConfig;
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"dbType": "PRESTO",
|
||||||
|
"driverConfigList": [
|
||||||
|
{
|
||||||
|
"url": "jdbc:presto://localhost:8080/",
|
||||||
|
"custom": false,
|
||||||
|
"defaultDriver": true,
|
||||||
|
"downloadJdbcDriverUrls": [
|
||||||
|
"https://oss.sqlgpt.cn/lib/presto-jdbc-0.245.1.jar"
|
||||||
|
],
|
||||||
|
"jdbcDriver": "presto-jdbc-0.245.1.jar",
|
||||||
|
"jdbcDriverClass": "com.facebook.presto.jdbc.PrestoDriver"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "Presto"
|
||||||
|
}
|
@ -17,5 +17,18 @@
|
|||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<artifactId>chat2db-redis</artifactId>
|
<artifactId>chat2db-redis</artifactId>
|
||||||
|
<build>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/java</directory>
|
||||||
|
<includes>
|
||||||
|
<!--properties的配置文件会和编译后的class文件放在一起-->
|
||||||
|
<include>**/*.json</include>
|
||||||
|
</includes>
|
||||||
|
</resource>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</build>
|
||||||
</project>
|
</project>
|
@ -1,17 +1,18 @@
|
|||||||
package ai.chat2db.plugin.redis;
|
package ai.chat2db.plugin.redis;
|
||||||
|
|
||||||
|
|
||||||
import ai.chat2db.plugin.redis.builder.DBConfigBuilder;
|
|
||||||
import ai.chat2db.spi.DBManage;
|
import ai.chat2db.spi.DBManage;
|
||||||
import ai.chat2db.spi.MetaData;
|
import ai.chat2db.spi.MetaData;
|
||||||
import ai.chat2db.spi.Plugin;
|
import ai.chat2db.spi.Plugin;
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
import ai.chat2db.spi.config.DBConfig;
|
||||||
|
import ai.chat2db.spi.util.FileUtils;
|
||||||
|
|
||||||
public class RedisPlugin implements Plugin {
|
public class RedisPlugin implements Plugin {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DBConfig getDBConfig() {
|
public DBConfig getDBConfig() {
|
||||||
return DBConfigBuilder.buildDBConfig();
|
return FileUtils.readJsonValue(this.getClass(),"redis.json", DBConfig.class);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
package ai.chat2db.plugin.redis.builder;
|
|
||||||
|
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
|
||||||
import ai.chat2db.spi.config.DriverConfig;
|
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
|
|
||||||
public class DBConfigBuilder {
|
|
||||||
public static DBConfig buildDBConfig() {
|
|
||||||
DBConfig dbConfig = new DBConfig();
|
|
||||||
dbConfig.setName("Redis");
|
|
||||||
dbConfig.setDbType("REDIS");
|
|
||||||
DriverConfig driverConfig = new DriverConfig();
|
|
||||||
driverConfig.setJdbcDriver("redis-jdbc-driver-1.3.jar");
|
|
||||||
driverConfig.setJdbcDriverClass("jdbc.RedisDriver");
|
|
||||||
driverConfig.setDownloadJdbcDriverUrls(Lists.newArrayList("https://oss.sqlgpt.cn/lib/redis-jdbc-driver-1.3.jar"));
|
|
||||||
dbConfig.setDefaultDriverConfig(driverConfig);
|
|
||||||
dbConfig.setDriverConfigList(Lists.newArrayList(driverConfig));
|
|
||||||
return dbConfig;
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"dbType": "REDIS",
|
||||||
|
"driverConfigList": [
|
||||||
|
{
|
||||||
|
"url": "jdbc:redis://127.0.0.1:6379/0",
|
||||||
|
"custom": false,
|
||||||
|
"defaultDriver": true,
|
||||||
|
"downloadJdbcDriverUrls": [
|
||||||
|
"https://oss.sqlgpt.cn/lib/redis-jdbc-driver-1.3.jar"
|
||||||
|
],
|
||||||
|
"jdbcDriver": "redis-jdbc-driver-1.3.jar",
|
||||||
|
"jdbcDriverClass": "jdbc.RedisDriver"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "Redis"
|
||||||
|
}
|
@ -16,4 +16,18 @@
|
|||||||
<artifactId>chat2db-spi</artifactId>
|
<artifactId>chat2db-spi</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/java</directory>
|
||||||
|
<includes>
|
||||||
|
<!--properties的配置文件会和编译后的class文件放在一起-->
|
||||||
|
<include>**/*.json</include>
|
||||||
|
</includes>
|
||||||
|
</resource>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</build>
|
||||||
</project>
|
</project>
|
@ -1,15 +1,15 @@
|
|||||||
package ai.chat2db.plugin.sqlite;
|
package ai.chat2db.plugin.sqlite;
|
||||||
|
|
||||||
import ai.chat2db.plugin.sqlite.builder.DBConfigBuilder;
|
|
||||||
import ai.chat2db.spi.DBManage;
|
import ai.chat2db.spi.DBManage;
|
||||||
import ai.chat2db.spi.MetaData;
|
import ai.chat2db.spi.MetaData;
|
||||||
import ai.chat2db.spi.Plugin;
|
import ai.chat2db.spi.Plugin;
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
import ai.chat2db.spi.config.DBConfig;
|
||||||
|
import ai.chat2db.spi.util.FileUtils;
|
||||||
|
|
||||||
public class SqlitePlugin implements Plugin {
|
public class SqlitePlugin implements Plugin {
|
||||||
@Override
|
@Override
|
||||||
public DBConfig getDBConfig() {
|
public DBConfig getDBConfig() {
|
||||||
return DBConfigBuilder.buildDBConfig();
|
return FileUtils.readJsonValue(this.getClass(),"sqlite.json", DBConfig.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
package ai.chat2db.plugin.sqlite.builder;
|
|
||||||
|
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
|
||||||
import ai.chat2db.spi.config.DriverConfig;
|
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
|
|
||||||
public class DBConfigBuilder {
|
|
||||||
|
|
||||||
public static DBConfig buildDBConfig() {
|
|
||||||
DBConfig dbConfig = new DBConfig();
|
|
||||||
dbConfig.setName("SQLite");
|
|
||||||
dbConfig.setDbType("SQLITE");
|
|
||||||
DriverConfig driverConfig = new DriverConfig();
|
|
||||||
driverConfig.setJdbcDriver("sqlite-jdbc-3.39.3.0.jar");
|
|
||||||
driverConfig.setJdbcDriverClass("org.sqlite.JDBC");
|
|
||||||
driverConfig.setDownloadJdbcDriverUrls(Lists.newArrayList("https://oss.sqlgpt.cn/lib/sqlite-jdbc-3.39.3.0.jar"));
|
|
||||||
dbConfig.setDefaultDriverConfig(driverConfig);
|
|
||||||
dbConfig.setDriverConfigList(Lists.newArrayList(driverConfig));
|
|
||||||
return dbConfig;
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"dbType": "SQLITE",
|
||||||
|
"driverConfigList": [
|
||||||
|
{
|
||||||
|
"url": "jdbc:sqlite:identifier.sqlite",
|
||||||
|
"custom": false,
|
||||||
|
"defaultDriver": true,
|
||||||
|
"downloadJdbcDriverUrls": [
|
||||||
|
"https://oss.sqlgpt.cn/lib/sqlite-jdbc-3.39.3.0.jar"
|
||||||
|
],
|
||||||
|
"jdbcDriver": "sqlite-jdbc-3.39.3.0.jar",
|
||||||
|
"jdbcDriverClass": "org.sqlite.JDBC"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "SQLite"
|
||||||
|
}
|
@ -24,5 +24,18 @@
|
|||||||
<!-- <scope>test</scope>-->
|
<!-- <scope>test</scope>-->
|
||||||
<!-- </dependency>-->
|
<!-- </dependency>-->
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/java</directory>
|
||||||
|
<includes>
|
||||||
|
<!--properties的配置文件会和编译后的class文件放在一起-->
|
||||||
|
<include>**/*.json</include>
|
||||||
|
</includes>
|
||||||
|
</resource>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</build>
|
||||||
</project>
|
</project>
|
@ -1,16 +1,16 @@
|
|||||||
package ai.chat2db.plugin.sqlserver;
|
package ai.chat2db.plugin.sqlserver;
|
||||||
|
|
||||||
|
|
||||||
import ai.chat2db.plugin.sqlserver.builder.SqlServerDBConfigBuilder;
|
|
||||||
import ai.chat2db.spi.DBManage;
|
import ai.chat2db.spi.DBManage;
|
||||||
import ai.chat2db.spi.MetaData;
|
import ai.chat2db.spi.MetaData;
|
||||||
import ai.chat2db.spi.Plugin;
|
import ai.chat2db.spi.Plugin;
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
import ai.chat2db.spi.config.DBConfig;
|
||||||
|
import ai.chat2db.spi.util.FileUtils;
|
||||||
|
|
||||||
public class SqlServerPlugin implements Plugin {
|
public class SqlServerPlugin implements Plugin {
|
||||||
@Override
|
@Override
|
||||||
public DBConfig getDBConfig() {
|
public DBConfig getDBConfig() {
|
||||||
return SqlServerDBConfigBuilder.buildDBConfig();
|
return FileUtils.readJsonValue(this.getClass(),"sqlserver.json", DBConfig.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
package ai.chat2db.plugin.sqlserver.builder;
|
|
||||||
|
|
||||||
import ai.chat2db.spi.config.DBConfig;
|
|
||||||
import ai.chat2db.spi.config.DriverConfig;
|
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
|
|
||||||
public class SqlServerDBConfigBuilder {
|
|
||||||
|
|
||||||
public static DBConfig buildDBConfig() {
|
|
||||||
DBConfig dbConfig = new DBConfig();
|
|
||||||
dbConfig.setName("SQLServer");
|
|
||||||
dbConfig.setDbType("SQLSERVER");
|
|
||||||
DriverConfig driverConfig = new DriverConfig();
|
|
||||||
driverConfig.setJdbcDriver("mssql-jdbc-11.2.1.jre17.jar");
|
|
||||||
driverConfig.setJdbcDriverClass("com.microsoft.sqlserver.jdbc.SQLServerDriver");
|
|
||||||
driverConfig.setDownloadJdbcDriverUrls(Lists.newArrayList("https://oss.sqlgpt.cn/lib/mssql-jdbc-11.2.1.jre17.jar"));
|
|
||||||
dbConfig.setDefaultDriverConfig(driverConfig);
|
|
||||||
dbConfig.setDriverConfigList(Lists.newArrayList(driverConfig));
|
|
||||||
return dbConfig;
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"dbType": "SQLSERVER",
|
||||||
|
"driverConfigList": [
|
||||||
|
{
|
||||||
|
"url": "jdbc:sqlserver://localhost:1433;database=master",
|
||||||
|
"custom": false,
|
||||||
|
"defaultDriver": true,
|
||||||
|
"downloadJdbcDriverUrls": [
|
||||||
|
"https://oss.sqlgpt.cn/lib/mssql-jdbc-11.2.1.jre17.jar"
|
||||||
|
],
|
||||||
|
"jdbcDriver": "mssql-jdbc-11.2.1.jre17.jar",
|
||||||
|
"jdbcDriverClass": "com.microsoft.sqlserver.jdbc.SQLServerDriver"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "SQLServer"
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
package ai.chat2db.server.domain.core.converter;
|
||||||
|
|
||||||
|
import ai.chat2db.server.domain.repository.entity.JdbcDriverDO;
|
||||||
|
import ai.chat2db.spi.config.DriverConfig;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
@Mapper(componentModel = "spring")
|
||||||
|
public abstract class DriverConfigConverter {
|
||||||
|
public abstract DriverConfig do2Config(JdbcDriverDO driverDO);
|
||||||
|
|
||||||
|
}
|
@ -89,10 +89,13 @@ public class DataSourceServiceImpl implements DataSourceService {
|
|||||||
if (dataSourceKind == DataSourceKindEnum.SHARED && !ContextUtils.getLoginUser().getAdmin()) {
|
if (dataSourceKind == DataSourceKindEnum.SHARED && !ContextUtils.getLoginUser().getAdmin()) {
|
||||||
throw new PermissionDeniedBusinessException();
|
throw new PermissionDeniedBusinessException();
|
||||||
}
|
}
|
||||||
|
JdbcUtils.removePropertySameAsDefault(param.getDriverConfig());
|
||||||
DataSourceDO dataSourceDO = dataSourceConverter.param2do(param);
|
DataSourceDO dataSourceDO = dataSourceConverter.param2do(param);
|
||||||
dataSourceDO.setGmtCreate(DateUtil.date());
|
dataSourceDO.setGmtCreate(DateUtil.date());
|
||||||
dataSourceDO.setGmtModified(DateUtil.date());
|
dataSourceDO.setGmtModified(DateUtil.date());
|
||||||
dataSourceDO.setUserId(ContextUtils.getUserId());
|
dataSourceDO.setUserId(ContextUtils.getUserId());
|
||||||
|
dataSourceDO.setExtendInfo(null);
|
||||||
|
|
||||||
dataSourceMapper.insert(dataSourceDO);
|
dataSourceMapper.insert(dataSourceDO);
|
||||||
preWarmingData(dataSourceDO.getId());
|
preWarmingData(dataSourceDO.getId());
|
||||||
return DataResult.of(dataSourceDO.getId());
|
return DataResult.of(dataSourceDO.getId());
|
||||||
@ -125,6 +128,7 @@ public class DataSourceServiceImpl implements DataSourceService {
|
|||||||
DataSource dataSource = queryExistent(param.getId(), null).getData();
|
DataSource dataSource = queryExistent(param.getId(), null).getData();
|
||||||
PermissionUtils.checkOperationPermission(dataSource.getUserId());
|
PermissionUtils.checkOperationPermission(dataSource.getUserId());
|
||||||
|
|
||||||
|
JdbcUtils.removePropertySameAsDefault(param.getDriverConfig());
|
||||||
DataSourceDO dataSourceDO = dataSourceConverter.param2do(param);
|
DataSourceDO dataSourceDO = dataSourceConverter.param2do(param);
|
||||||
dataSourceDO.setGmtModified(DateUtil.date());
|
dataSourceDO.setGmtModified(DateUtil.date());
|
||||||
dataSourceMapper.updateById(dataSourceDO);
|
dataSourceMapper.updateById(dataSourceDO);
|
||||||
|
@ -1,12 +1,7 @@
|
|||||||
package ai.chat2db.server.domain.core.impl;
|
package ai.chat2db.server.domain.core.impl;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.LinkedHashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import ai.chat2db.server.domain.api.service.JdbcDriverService;
|
import ai.chat2db.server.domain.api.service.JdbcDriverService;
|
||||||
|
import ai.chat2db.server.domain.core.converter.DriverConfigConverter;
|
||||||
import ai.chat2db.server.domain.repository.entity.JdbcDriverDO;
|
import ai.chat2db.server.domain.repository.entity.JdbcDriverDO;
|
||||||
import ai.chat2db.server.domain.repository.mapper.JdbcDriverMapper;
|
import ai.chat2db.server.domain.repository.mapper.JdbcDriverMapper;
|
||||||
import ai.chat2db.server.tools.base.wrapper.result.ActionResult;
|
import ai.chat2db.server.tools.base.wrapper.result.ActionResult;
|
||||||
@ -22,6 +17,16 @@ import org.apache.commons.collections4.CollectionUtils;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import static ai.chat2db.spi.util.JdbcUtils.setDriverDefaultProperty;
|
||||||
|
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
public class JdbcDriverServiceImpl implements JdbcDriverService {
|
public class JdbcDriverServiceImpl implements JdbcDriverService {
|
||||||
@ -29,50 +34,31 @@ public class JdbcDriverServiceImpl implements JdbcDriverService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private JdbcDriverMapper jdbcDriverMapper;
|
private JdbcDriverMapper jdbcDriverMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private DriverConfigConverter driverConfigConverter;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DataResult<DBConfig> getDrivers(String dbType) {
|
public DataResult<DBConfig> getDrivers(String dbType) {
|
||||||
Map<String, DriverConfig> driverConfigMap = new LinkedHashMap<>();
|
Map<String, DriverConfig> driverConfigMap = new LinkedHashMap<>();
|
||||||
LambdaQueryWrapper<JdbcDriverDO> query = new LambdaQueryWrapper<JdbcDriverDO>();
|
LambdaQueryWrapper<JdbcDriverDO> query = new LambdaQueryWrapper<JdbcDriverDO>();
|
||||||
query.eq(JdbcDriverDO::getDbType, dbType);
|
query.eq(JdbcDriverDO::getDbType, dbType);
|
||||||
List<JdbcDriverDO> driverDOS = jdbcDriverMapper.selectList(query);
|
List<JdbcDriverDO> driverDOS = jdbcDriverMapper.selectList(query);
|
||||||
|
List<DriverConfig> driverConfigs = Lists.newArrayList();
|
||||||
if (!CollectionUtils.isEmpty(driverDOS)) {
|
if (!CollectionUtils.isEmpty(driverDOS)) {
|
||||||
for (JdbcDriverDO driverConfig : driverDOS) {
|
driverConfigs = driverDOS.stream().map(driverConfigConverter::do2Config).collect(Collectors.toList());
|
||||||
String[] jarPaths = driverConfig.getJdbcDriver().split(",");
|
|
||||||
boolean flag = true;
|
|
||||||
for (String jarPath : jarPaths) {
|
|
||||||
File file = new File(JdbcJarUtils.PATH + jarPath);
|
|
||||||
if (!file.exists()) {
|
|
||||||
flag = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (flag && driverConfigMap.get(driverConfig.getJdbcDriver()) == null) {
|
|
||||||
DriverConfig dc = new DriverConfig();
|
|
||||||
dc.setCustom(true);
|
|
||||||
dc.setDbType(driverConfig.getDbType());
|
|
||||||
dc.setJdbcDriver(driverConfig.getJdbcDriver());
|
|
||||||
dc.setJdbcDriverClass(driverConfig.getJdbcDriverClass());
|
|
||||||
driverConfigMap.put(driverConfig.getJdbcDriver(), dc);
|
|
||||||
} else {
|
|
||||||
log.warn("Driver file not found: {}", driverConfig.getJdbcDriver());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DBConfig dbConfig = Chat2DBContext.PLUGIN_MAP.get(dbType).getDBConfig();
|
DBConfig dbConfig = Chat2DBContext.PLUGIN_MAP.get(dbType).getDBConfig();
|
||||||
List<DriverConfig> driverConfigList = dbConfig.getDriverConfigList();
|
List<DriverConfig> driverConfigList = dbConfig.getDriverConfigList();
|
||||||
for (DriverConfig driverConfig : driverConfigList) {
|
if (CollectionUtils.isNotEmpty(driverConfigList)) {
|
||||||
String[] jarPaths = driverConfig.getJdbcDriver().split(",");
|
driverConfigs.addAll(driverConfigList);
|
||||||
boolean flag = true;
|
}
|
||||||
for (String jarPath : jarPaths) {
|
|
||||||
File file = new File(JdbcJarUtils.PATH + jarPath);
|
for (DriverConfig driverConfig : driverConfigs) {
|
||||||
if (!file.exists()) {
|
boolean flag = driverExists(driverConfig);
|
||||||
flag = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (flag && driverConfigMap.get(driverConfig.getJdbcDriver()) == null) {
|
if (flag && driverConfigMap.get(driverConfig.getJdbcDriver()) == null) {
|
||||||
driverConfigMap.put(driverConfig.getJdbcDriver(), driverConfig);
|
driverConfigMap.put(driverConfig.getJdbcDriver(), driverConfig);
|
||||||
|
setDriverDefaultProperty(driverConfig);
|
||||||
} else {
|
} else {
|
||||||
log.warn("Driver file not found: {}", driverConfig.getJdbcDriver());
|
log.warn("Driver file not found: {}", driverConfig.getJdbcDriver());
|
||||||
}
|
}
|
||||||
@ -81,6 +67,20 @@ public class JdbcDriverServiceImpl implements JdbcDriverService {
|
|||||||
return DataResult.of(dbConfig);
|
return DataResult.of(dbConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private boolean driverExists(DriverConfig driverConfig) {
|
||||||
|
boolean flag = true;
|
||||||
|
String[] jarPaths = driverConfig.getJdbcDriver().split(",");
|
||||||
|
for (String jarPath : jarPaths) {
|
||||||
|
File file = new File(JdbcJarUtils.PATH + jarPath);
|
||||||
|
if (!file.exists()) {
|
||||||
|
flag = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return flag;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionResult upload(String dbType, String jdbcDriverClass, String localPath) {
|
public ActionResult upload(String dbType, String jdbcDriverClass, String localPath) {
|
||||||
JdbcDriverDO driverDO = new JdbcDriverDO();
|
JdbcDriverDO driverDO = new JdbcDriverDO();
|
||||||
|
@ -0,0 +1,15 @@
|
|||||||
|
package ai.chat2db.server.test.temp;
|
||||||
|
|
||||||
|
import java.sql.Driver;
|
||||||
|
import java.sql.DriverPropertyInfo;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
|
public class DriverTest {
|
||||||
|
|
||||||
|
public static void main(String[] args) throws SQLException {
|
||||||
|
|
||||||
|
Driver driver = new org.mariadb.jdbc.Driver();
|
||||||
|
DriverPropertyInfo[] driverPropertyInfos = driver.getPropertyInfo("jdbc:mariadb://localhost:3306", null);
|
||||||
|
System.out.println(driverPropertyInfos.length);
|
||||||
|
}
|
||||||
|
}
|
@ -77,7 +77,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.locationtech.jts</groupId>
|
<groupId>org.locationtech.jts</groupId>
|
||||||
<artifactId>jts-core</artifactId>
|
<artifactId>jts-core</artifactId>
|
||||||
<version>1.18.1</version> <!-- 确保使用最新的版本 -->
|
<version>1.19.0</version> <!-- 确保使用最新的版本 -->
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
package ai.chat2db.spi.config;
|
package ai.chat2db.spi.config;
|
||||||
|
|
||||||
import lombok.Data;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -9,7 +9,6 @@ import java.util.List;
|
|||||||
* @author jipengfei
|
* @author jipengfei
|
||||||
* @version : DBConfig.java
|
* @version : DBConfig.java
|
||||||
*/
|
*/
|
||||||
@Data
|
|
||||||
public class DBConfig {
|
public class DBConfig {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -32,7 +31,6 @@ public class DBConfig {
|
|||||||
*/
|
*/
|
||||||
private List<DriverConfig> driverConfigList;
|
private List<DriverConfig> driverConfigList;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 建表语句
|
* 建表语句
|
||||||
*/
|
*/
|
||||||
@ -42,4 +40,73 @@ public class DBConfig {
|
|||||||
* 修改表结构
|
* 修改表结构
|
||||||
*/
|
*/
|
||||||
private String simpleAlterTable;
|
private String simpleAlterTable;
|
||||||
|
|
||||||
|
|
||||||
|
public String getDbType() {
|
||||||
|
return dbType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDbType(String dbType) {
|
||||||
|
this.dbType = dbType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DriverConfig getDefaultDriverConfig() {
|
||||||
|
if (this.defaultDriverConfig != null) {
|
||||||
|
return this.defaultDriverConfig;
|
||||||
|
} else {
|
||||||
|
if (!CollectionUtils.isEmpty(driverConfigList)) {
|
||||||
|
for (DriverConfig driverConfig : driverConfigList) {
|
||||||
|
if (driverConfig.isDefaultDriver()) {
|
||||||
|
return driverConfig;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return driverConfigList.get(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDefaultDriverConfig(DriverConfig defaultDriverConfig) {
|
||||||
|
this.defaultDriverConfig = defaultDriverConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<DriverConfig> getDriverConfigList() {
|
||||||
|
return driverConfigList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDriverConfigList(List<DriverConfig> driverConfigList) {
|
||||||
|
this.driverConfigList = driverConfigList;
|
||||||
|
if (!CollectionUtils.isEmpty(driverConfigList)) {
|
||||||
|
for (DriverConfig driverConfig : driverConfigList) {
|
||||||
|
if (driverConfig.isDefaultDriver()) {
|
||||||
|
this.defaultDriverConfig = driverConfig;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSimpleCreateTable() {
|
||||||
|
return simpleCreateTable;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSimpleCreateTable(String simpleCreateTable) {
|
||||||
|
this.simpleCreateTable = simpleCreateTable;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSimpleAlterTable() {
|
||||||
|
return simpleAlterTable;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSimpleAlterTable(String simpleAlterTable) {
|
||||||
|
this.simpleAlterTable = simpleAlterTable;
|
||||||
|
}
|
||||||
}
|
}
|
@ -3,6 +3,7 @@ package ai.chat2db.spi.config;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import ai.chat2db.spi.model.KeyValue;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
@ -12,6 +13,11 @@ import org.apache.commons.lang3.StringUtils;
|
|||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class DriverConfig {
|
public class DriverConfig {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* url
|
||||||
|
*/
|
||||||
|
private String url;
|
||||||
/**
|
/**
|
||||||
* jdbcDriver
|
* jdbcDriver
|
||||||
*/
|
*/
|
||||||
@ -22,17 +28,14 @@ public class DriverConfig {
|
|||||||
*/
|
*/
|
||||||
private String jdbcDriverClass;
|
private String jdbcDriverClass;
|
||||||
|
|
||||||
///**
|
|
||||||
// * name
|
|
||||||
// */
|
|
||||||
//private String name;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* downloadJdbcDriverUrls
|
* downloadJdbcDriverUrls
|
||||||
*/
|
*/
|
||||||
private List<String> downloadJdbcDriverUrls;
|
private List<String> downloadJdbcDriverUrls;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* dbType
|
||||||
|
*/
|
||||||
private String dbType;
|
private String dbType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -40,6 +43,13 @@ public class DriverConfig {
|
|||||||
*/
|
*/
|
||||||
private boolean custom;
|
private boolean custom;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* properties
|
||||||
|
*/
|
||||||
|
private List<KeyValue> extendInfo;
|
||||||
|
|
||||||
|
|
||||||
|
private boolean defaultDriver;
|
||||||
|
|
||||||
public boolean notEmpty() {
|
public boolean notEmpty() {
|
||||||
return StringUtils.isNotBlank(getJdbcDriver()) && StringUtils.isNotBlank(
|
return StringUtils.isNotBlank(getJdbcDriver()) && StringUtils.isNotBlank(
|
||||||
|
@ -23,7 +23,17 @@ public class KeyValue implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 属性值
|
* 属性值
|
||||||
*/
|
*/
|
||||||
private Object value;
|
private String value;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否必填
|
||||||
|
*/
|
||||||
|
private boolean required;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 选项
|
||||||
|
*/
|
||||||
|
private List<String> choices;
|
||||||
|
|
||||||
public static Map<String, Object> toMap(List<KeyValue> keyValues) {
|
public static Map<String, Object> toMap(List<KeyValue> keyValues) {
|
||||||
if (CollectionUtils.isEmpty(keyValues)) {
|
if (CollectionUtils.isEmpty(keyValues)) {
|
||||||
|
@ -7,6 +7,7 @@ import java.net.URL;
|
|||||||
import java.net.URLClassLoader;
|
import java.net.URLClassLoader;
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.Driver;
|
import java.sql.Driver;
|
||||||
|
import java.sql.DriverPropertyInfo;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
@ -39,7 +40,7 @@ public class IDriverManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static Connection getConnection(String url, String user, String password, DriverConfig driver)
|
public static Connection getConnection(String url, String user, String password, DriverConfig driver)
|
||||||
throws SQLException {
|
throws SQLException {
|
||||||
Properties info = new Properties();
|
Properties info = new Properties();
|
||||||
if (user != null) {
|
if (user != null) {
|
||||||
info.put("user", user);
|
info.put("user", user);
|
||||||
@ -53,8 +54,8 @@ public class IDriverManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static Connection getConnection(String url, String user, String password, DriverConfig driver,
|
public static Connection getConnection(String url, String user, String password, DriverConfig driver,
|
||||||
Map<String, Object> properties)
|
Map<String, Object> properties)
|
||||||
throws SQLException {
|
throws SQLException {
|
||||||
Properties info = new Properties();
|
Properties info = new Properties();
|
||||||
if (StringUtils.isNotEmpty(user)) {
|
if (StringUtils.isNotEmpty(user)) {
|
||||||
info.put("user", user);
|
info.put("user", user);
|
||||||
@ -74,7 +75,7 @@ public class IDriverManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static Connection getConnection(String url, Properties info, DriverConfig driver)
|
public static Connection getConnection(String url, Properties info, DriverConfig driver)
|
||||||
throws SQLException {
|
throws SQLException {
|
||||||
if (url == null) {
|
if (url == null) {
|
||||||
throw new SQLException("The url cannot be null", "08001");
|
throw new SQLException("The url cannot be null", "08001");
|
||||||
}
|
}
|
||||||
@ -84,8 +85,8 @@ public class IDriverManager {
|
|||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
Connection connection = driverEntry.getDriver().connect(url, info);
|
Connection connection = driverEntry.getDriver().connect(url, info);
|
||||||
if(connection == null){
|
if (connection == null) {
|
||||||
throw new SQLException("driver.connect return null , No suitable driver found for url " +url ,"08001");
|
throw new SQLException("driver.connect return null , No suitable driver found for url " + url, "08001");
|
||||||
}
|
}
|
||||||
return connection;
|
return connection;
|
||||||
} catch (SQLException var7) {
|
} catch (SQLException var7) {
|
||||||
@ -94,13 +95,31 @@ public class IDriverManager {
|
|||||||
return con;
|
return con;
|
||||||
} else {
|
} else {
|
||||||
throw new SQLException("Cannot create connection (" + var7.getMessage() + ")", "08001",
|
throw new SQLException("Cannot create connection (" + var7.getMessage() + ")", "08001",
|
||||||
var7);
|
var7);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static DriverPropertyInfo[] getProperty(DriverConfig driver)
|
||||||
|
throws SQLException {
|
||||||
|
if (driver == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
DriverEntry driverEntry = DRIVER_ENTRY_MAP.get(driver.getJdbcDriver());
|
||||||
|
if (driverEntry == null) {
|
||||||
|
driverEntry = getJDBCDriver(driver);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
String url = driver.getUrl() == null ? "" : driver.getUrl();
|
||||||
|
return driverEntry.getDriver().getPropertyInfo(url, null);
|
||||||
|
} catch (Exception var7) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private static Connection tryConnectionAgain(DriverEntry driverEntry, String url,
|
private static Connection tryConnectionAgain(DriverEntry driverEntry, String url,
|
||||||
Properties info) throws SQLException {
|
Properties info) throws SQLException {
|
||||||
if (url.contains("mysql")) {
|
if (url.contains("mysql")) {
|
||||||
if (!info.containsKey("useSSL")) {
|
if (!info.containsKey("useSSL")) {
|
||||||
info.put("useSSL", "false");
|
info.put("useSSL", "false");
|
||||||
@ -111,14 +130,14 @@ public class IDriverManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static DriverEntry getJDBCDriver(DriverConfig driver)
|
private static DriverEntry getJDBCDriver(DriverConfig driver)
|
||||||
throws SQLException {
|
throws SQLException {
|
||||||
synchronized (driver) {
|
synchronized (driver) {
|
||||||
try {
|
try {
|
||||||
if (DRIVER_ENTRY_MAP.containsKey(driver.getJdbcDriver())) {
|
if (DRIVER_ENTRY_MAP.containsKey(driver.getJdbcDriver())) {
|
||||||
return DRIVER_ENTRY_MAP.get(driver.getJdbcDriver());
|
return DRIVER_ENTRY_MAP.get(driver.getJdbcDriver());
|
||||||
}
|
}
|
||||||
ClassLoader cl = getClassLoader(driver);
|
ClassLoader cl = getClassLoader(driver);
|
||||||
Driver d = (Driver)cl.loadClass(driver.getJdbcDriverClass()).newInstance();
|
Driver d = (Driver) cl.loadClass(driver.getJdbcDriverClass()).newInstance();
|
||||||
DriverEntry driverEntry = DriverEntry.builder().driverConfig(driver).driver(d).build();
|
DriverEntry driverEntry = DriverEntry.builder().driverConfig(driver).driver(d).build();
|
||||||
DRIVER_ENTRY_MAP.put(driver.getJdbcDriver(), driverEntry);
|
DRIVER_ENTRY_MAP.put(driver.getJdbcDriver(), driverEntry);
|
||||||
return driverEntry;
|
return driverEntry;
|
||||||
|
@ -0,0 +1,21 @@
|
|||||||
|
package ai.chat2db.spi.util;
|
||||||
|
|
||||||
|
import ai.chat2db.spi.config.DBConfig;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
public class FileUtils {
|
||||||
|
|
||||||
|
public static <T> T readJsonValue(Class<?> loaderClass, String path, Class<T> clazz) {
|
||||||
|
ObjectMapper mapper = new ObjectMapper();
|
||||||
|
T value = null;
|
||||||
|
try {
|
||||||
|
value = mapper.readValue(loaderClass.getResourceAsStream(path), clazz);
|
||||||
|
// 使用obj中的数据
|
||||||
|
} catch (IOException e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
@ -1,11 +1,10 @@
|
|||||||
package ai.chat2db.spi.util;
|
package ai.chat2db.spi.util;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.*;
|
||||||
import java.sql.ResultSet;
|
import java.text.Collator;
|
||||||
import java.sql.SQLException;
|
import java.util.*;
|
||||||
import java.sql.Types;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
|
import ai.chat2db.spi.model.KeyValue;
|
||||||
import com.alibaba.druid.DbType;
|
import com.alibaba.druid.DbType;
|
||||||
|
|
||||||
import ai.chat2db.spi.config.DriverConfig;
|
import ai.chat2db.spi.config.DriverConfig;
|
||||||
@ -14,8 +13,11 @@ import ai.chat2db.spi.model.DataSourceConnect;
|
|||||||
import ai.chat2db.spi.model.SSHInfo;
|
import ai.chat2db.spi.model.SSHInfo;
|
||||||
import ai.chat2db.spi.sql.IDriverManager;
|
import ai.chat2db.spi.sql.IDriverManager;
|
||||||
import ai.chat2db.spi.ssh.SSHManager;
|
import ai.chat2db.spi.ssh.SSHManager;
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
import com.jcraft.jsch.Session;
|
import com.jcraft.jsch.Session;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.lang.Nullable;
|
import org.springframework.lang.Nullable;
|
||||||
|
|
||||||
@ -138,11 +140,11 @@ public class JdbcUtils {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static DataSourceConnect testConnect(String url, String host, String port,
|
public static DataSourceConnect testConnect(String url, String host, String port,
|
||||||
String userName, String password, String dbType,
|
String userName, String password, String dbType,
|
||||||
DriverConfig driverConfig, SSHInfo ssh, Map<String, Object> properties) {
|
DriverConfig driverConfig, SSHInfo ssh, Map<String, Object> properties) {
|
||||||
DataSourceConnect dataSourceConnect = DataSourceConnect.builder()
|
DataSourceConnect dataSourceConnect = DataSourceConnect.builder()
|
||||||
.success(Boolean.TRUE)
|
.success(Boolean.TRUE)
|
||||||
.build();
|
.build();
|
||||||
Session session = null;
|
Session session = null;
|
||||||
Connection connection = null;
|
Connection connection = null;
|
||||||
// 加载驱动
|
// 加载驱动
|
||||||
@ -155,7 +157,7 @@ public class JdbcUtils {
|
|||||||
}
|
}
|
||||||
// 创建连接
|
// 创建连接
|
||||||
connection = IDriverManager.getConnection(url, userName, password,
|
connection = IDriverManager.getConnection(url, userName, password,
|
||||||
driverConfig, properties);
|
driverConfig, properties);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("connection fail:", e);
|
log.error("connection fail:", e);
|
||||||
dataSourceConnect.setSuccess(Boolean.FALSE);
|
dataSourceConnect.setSuccess(Boolean.FALSE);
|
||||||
@ -203,4 +205,96 @@ public class JdbcUtils {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void setDriverDefaultProperty(DriverConfig driverConfig) {
|
||||||
|
if(driverConfig == null){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<KeyValue> defaultKeyValues = driverConfig.getExtendInfo();
|
||||||
|
Map<String, KeyValue> valueMap = Maps.newHashMap();
|
||||||
|
if (!CollectionUtils.isEmpty(defaultKeyValues)) {
|
||||||
|
for (KeyValue keyValue : defaultKeyValues) {
|
||||||
|
if (keyValue == null || StringUtils.isBlank(keyValue.getKey())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
valueMap.put(keyValue.getKey(), keyValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
DriverPropertyInfo[] propertyInfos = IDriverManager.getProperty(driverConfig);
|
||||||
|
if (propertyInfos == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (int i = 0; i < propertyInfos.length; i++) {
|
||||||
|
DriverPropertyInfo propertyInfo = propertyInfos[i];
|
||||||
|
if (propertyInfo == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
KeyValue keyValue = valueMap.get(propertyInfo.name);
|
||||||
|
if (keyValue != null) {
|
||||||
|
String[] choices = propertyInfo.choices;
|
||||||
|
if (CollectionUtils.isEmpty(keyValue.getChoices()) && choices != null && choices.length > 0) {
|
||||||
|
keyValue.setChoices(Lists.newArrayList(choices));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
keyValue = new KeyValue();
|
||||||
|
keyValue.setKey(propertyInfo.name);
|
||||||
|
keyValue.setValue(propertyInfo.value);
|
||||||
|
keyValue.setRequired(propertyInfo.required);
|
||||||
|
String[] choices = propertyInfo.choices;
|
||||||
|
if (choices != null && choices.length > 0) {
|
||||||
|
keyValue.setChoices(Lists.newArrayList(choices));
|
||||||
|
}
|
||||||
|
valueMap.put(keyValue.getKey(), keyValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!valueMap.isEmpty()) {
|
||||||
|
Comparator comparator = Collator.getInstance(Locale.ENGLISH);
|
||||||
|
List<KeyValue> result = new ArrayList<>(valueMap.values());
|
||||||
|
Collections.sort(result, (o1, o2) -> comparator.compare(o1.getKey(), o2.getKey()));
|
||||||
|
driverConfig.setExtendInfo(result);
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
log.error("get property error:", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void removePropertySameAsDefault(DriverConfig driverConfig) {
|
||||||
|
if(driverConfig == null){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<KeyValue> customValue = driverConfig.getExtendInfo();
|
||||||
|
if (CollectionUtils.isEmpty(customValue)) {
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
Map<String, String> map = Maps.newHashMap();
|
||||||
|
List<KeyValue> result = new ArrayList<>();
|
||||||
|
try {
|
||||||
|
DriverPropertyInfo[] propertyInfos = IDriverManager.getProperty(driverConfig);
|
||||||
|
if (propertyInfos == null) {
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
for (int i = 0; i < propertyInfos.length; i++) {
|
||||||
|
DriverPropertyInfo propertyInfo = propertyInfos[i];
|
||||||
|
if (propertyInfo == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
map.put(propertyInfo.name, propertyInfo.value);
|
||||||
|
}
|
||||||
|
for (KeyValue keyValue : customValue) {
|
||||||
|
if (keyValue == null || StringUtils.isBlank(keyValue.getKey())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String value = map.get(keyValue.getKey());
|
||||||
|
if (!StringUtils.equals(value, keyValue.getValue())) {
|
||||||
|
result.add(keyValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Comparator comparator = Collator.getInstance(Locale.ENGLISH);
|
||||||
|
Collections.sort(result, (o1, o2) -> comparator.compare(o1.getKey(), o2.getKey()));
|
||||||
|
driverConfig.setExtendInfo(result);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user