From c1dd2ca334f5c223aa5419ae7a89798c31343569 Mon Sep 17 00:00:00 2001 From: taojinlong Date: Tue, 14 Apr 2026 13:01:52 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=20kingbase?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/dataease/datasource/type/Kingbase.java | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 core/core-backend/src/main/java/io/dataease/datasource/type/Kingbase.java diff --git a/core/core-backend/src/main/java/io/dataease/datasource/type/Kingbase.java b/core/core-backend/src/main/java/io/dataease/datasource/type/Kingbase.java new file mode 100644 index 0000000000..7e7e92aec8 --- /dev/null +++ b/core/core-backend/src/main/java/io/dataease/datasource/type/Kingbase.java @@ -0,0 +1,60 @@ +package io.dataease.datasource.type; + +import io.dataease.exception.DEException; +import lombok.Data; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; + +import java.net.URLDecoder; +import java.util.Arrays; +import java.util.List; + +@Data +@Component("kingbase") +public class Kingbase extends Pg { + private String driver = "com.kingbase8.Driver"; + private String extraParams = ""; + private List illegalParameters = Arrays.asList("socketFactory", "socketFactoryArg", "sslfactory", "sslhostnameverifier", "sslpasswordcallback", "authenticationPluginClassName"); + + @Override + public String getJdbc() { + if (StringUtils.isNoneEmpty(getUrlType()) && !getUrlType().equalsIgnoreCase("hostName")) { + for (String illegalParameter : illegalParameters) { + if (URLDecoder.decode(getJdbcUrl()).contains(illegalParameter)) { + DEException.throwException("Illegal parameter: " + illegalParameter); + } + } + if (!getJdbcUrl().startsWith("jdbc:kingbase8") && !getJdbcUrl().startsWith("jdbc:kingbase")) { + DEException.throwException("Illegal jdbcUrl: " + getJdbcUrl()); + } + return getJdbcUrl(); + } + String jdbcUrl = ""; + if (StringUtils.isEmpty(extraParams.trim())) { + if (StringUtils.isEmpty(getSchema())) { + jdbcUrl = "jdbc:kingbase8://HOSTNAME:PORT/DATABASE" + .replace("HOSTNAME", getLHost().trim()) + .replace("PORT", getLPort().toString().trim()) + .replace("DATABASE", getDataBase().trim()); + } else { + jdbcUrl = "jdbc:kingbase8://HOSTNAME:PORT/DATABASE?currentSchema=\"SCHEMA\"" + .replace("HOSTNAME", getLHost().trim()) + .replace("PORT", getLPort().toString().trim()) + .replace("DATABASE", getDataBase().trim()) + .replace("SCHEMA", getSchema().trim()); + } + } else { + jdbcUrl = "jdbc:kingbase8://HOSTNAME:PORT/DATABASE?EXTRA_PARAMS" + .replace("HOSTNAME", getLHost().trim()) + .replace("PORT", getLPort().toString().trim()) + .replace("DATABASE", getDataBase().trim()) + .replace("EXTRA_PARAMS", getExtraParams().trim()); + } + for (String illegalParameter : illegalParameters) { + if (URLDecoder.decode(jdbcUrl).toLowerCase().contains(illegalParameter.toLowerCase()) || URLDecoder.decode(jdbcUrl).contains(illegalParameter.toLowerCase())) { + DEException.throwException("Illegal parameter: " + illegalParameter); + } + } + return jdbcUrl; + } +}