diff --git a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetSQLManage.java b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetSQLManage.java index b2af1a1974..873f2000c7 100644 --- a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetSQLManage.java +++ b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetSQLManage.java @@ -14,13 +14,14 @@ import io.dataease.datasource.manage.EngineManage; import io.dataease.engine.constant.ExtFieldConstant; import io.dataease.engine.constant.SQLConstants; import io.dataease.exception.DEException; +import io.dataease.extensions.datasource.api.PluginManageApi; import io.dataease.extensions.datasource.dto.DatasetTableDTO; import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO; import io.dataease.extensions.datasource.dto.DsTypeDTO; import io.dataease.extensions.datasource.model.SQLObj; import io.dataease.extensions.datasource.vo.DatasourceConfiguration; -import io.dataease.extensions.datasource.vo.PluginDatasourceType; +import io.dataease.extensions.datasource.vo.XpackPluginsDatasourceVO; import io.dataease.extensions.view.dto.ChartExtFilterDTO; import io.dataease.extensions.view.dto.ChartExtRequest; import io.dataease.extensions.view.dto.SqlVariableDetails; @@ -33,6 +34,7 @@ import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; @@ -54,6 +56,9 @@ public class DatasetSQLManage { @Resource private CorePermissionManage corePermissionManage; + @Autowired(required = false) + private PluginManageApi pluginManage; + private static Logger logger = LoggerFactory.getLogger(DatasetSQLManage.class); private List filterParameters(ChartExtRequest chartExtRequest, Long datasetTableId) { @@ -362,16 +367,30 @@ public class DatasetSQLManage { } else { type = datasourceSchemaDTO.getType(); } + if (Arrays.stream(DatasourceConfiguration.DatasourceType.values()).map(DatasourceConfiguration.DatasourceType::getType).toList().contains(type)) { DatasourceConfiguration.DatasourceType datasourceType = DatasourceConfiguration.DatasourceType.valueOf(type); DsTypeDTO dto = new DsTypeDTO(); BeanUtils.copyBean(dto, datasourceType); return dto; } else { - PluginDatasourceType.DatasourceType datasourceType = PluginDatasourceType.DatasourceType.valueOf(type); - DsTypeDTO dto = new DsTypeDTO(); - BeanUtils.copyBean(dto, datasourceType); - return dto; + if (pluginManage != null) { + List xpackPluginsDatasourceVOS = pluginManage.queryPluginDs(); + List list = xpackPluginsDatasourceVOS.stream().filter(ele -> StringUtils.equals(ele.getType(), type)).toList(); + if (ObjectUtils.isNotEmpty(list)) { + XpackPluginsDatasourceVO first = list.getFirst(); + DsTypeDTO dto = new DsTypeDTO(); + dto.setName(first.getName()); + dto.setCatalog(first.getCategory()); + dto.setType(first.getType()); + dto.setPrefix(first.getPrefix()); + dto.setSuffix(first.getSuffix()); + return dto; + } else { + DEException.throwException("当前数据源插件不存在"); + } + } + return null; } } diff --git a/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java b/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java index 4b857802e2..11b1ee47b8 100644 --- a/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java +++ b/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java @@ -32,11 +32,12 @@ import io.dataease.datasource.provider.CalciteProvider; import io.dataease.datasource.provider.ExcelUtils; import io.dataease.engine.constant.SQLConstants; import io.dataease.exception.DEException; +import io.dataease.extensions.datasource.api.PluginManageApi; import io.dataease.extensions.datasource.dto.*; import io.dataease.extensions.datasource.factory.ProviderFactory; import io.dataease.extensions.datasource.provider.Provider; import io.dataease.extensions.datasource.vo.DatasourceConfiguration; -import io.dataease.extensions.datasource.vo.PluginDatasourceType; +import io.dataease.extensions.datasource.vo.XpackPluginsDatasourceVO; import io.dataease.i18n.Translator; import io.dataease.job.schedule.CheckDsStatusJob; import io.dataease.job.schedule.ScheduleManager; @@ -55,6 +56,7 @@ import org.apache.commons.lang3.StringUtils; import org.quartz.JobDataMap; import org.quartz.JobKey; import org.quartz.TriggerKey; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -102,6 +104,9 @@ public class DatasourceServer implements DatasourceApi { @Resource private CoreUserManage coreUserManage; + @Autowired(required = false) + private PluginManageApi pluginManage; + @Override public List query(String keyWord) { return null; @@ -853,8 +858,13 @@ public class DatasourceServer implements DatasourceApi { } private void preCheckDs(DatasourceDTO datasource) throws DEException { - if (!datasourceTypes().stream().map(DatasourceConfiguration.DatasourceType::getType).toList().contains(datasource.getType()) - && !Arrays.stream(PluginDatasourceType.DatasourceType.values()).map(PluginDatasourceType.DatasourceType::getType).toList().contains(datasource.getType())) { + List list = datasourceTypes().stream().map(DatasourceConfiguration.DatasourceType::getType).collect(Collectors.toList()); + if (pluginManage != null) { + List xpackPluginsDatasourceVOS = pluginManage.queryPluginDs(); + xpackPluginsDatasourceVOS.forEach(ele -> list.add(ele.getType())); + } + + if (!list.contains(datasource.getType())) { DEException.throwException("Datasource type not supported."); } } diff --git a/core/core-frontend/src/components/icon-custom/src/Icon.vue b/core/core-frontend/src/components/icon-custom/src/Icon.vue index f90291b8e4..d5da0ecc9c 100644 --- a/core/core-frontend/src/components/icon-custom/src/Icon.vue +++ b/core/core-frontend/src/components/icon-custom/src/Icon.vue @@ -1358,6 +1358,8 @@ const svgClass = computed(() => { overflow: hidden; vertical-align: -0.1em; fill: currentcolor; + width: 100%; + height: 100%; } } diff --git a/sdk/extensions/extensions-datasource/src/main/java/io/dataease/extensions/datasource/api/PluginManageApi.java b/sdk/extensions/extensions-datasource/src/main/java/io/dataease/extensions/datasource/api/PluginManageApi.java new file mode 100644 index 0000000000..341dcffe90 --- /dev/null +++ b/sdk/extensions/extensions-datasource/src/main/java/io/dataease/extensions/datasource/api/PluginManageApi.java @@ -0,0 +1,12 @@ +package io.dataease.extensions.datasource.api; + +import io.dataease.extensions.datasource.vo.XpackPluginsDatasourceVO; + +import java.util.List; + +/** + * @Author Junjun + */ +public interface PluginManageApi { + List queryPluginDs(); +} diff --git a/sdk/extensions/extensions-datasource/src/main/java/io/dataease/extensions/datasource/vo/PluginDatasourceType.java b/sdk/extensions/extensions-datasource/src/main/java/io/dataease/extensions/datasource/vo/PluginDatasourceType.java deleted file mode 100644 index 8d851d7cb6..0000000000 --- a/sdk/extensions/extensions-datasource/src/main/java/io/dataease/extensions/datasource/vo/PluginDatasourceType.java +++ /dev/null @@ -1,54 +0,0 @@ -package io.dataease.extensions.datasource.vo; - -import lombok.Data; - -import java.util.List; - -/** - * @Author Junjun - */ -@Data -public class PluginDatasourceType extends Configuration { - private List illegalParameters; - private List showTableSqls; - - - static public enum DatasourceType { - hive("hive", "Apache Hive", "DL", "`", "`"); - - private String type; - private String name; - - private String catalog; - private String prefix; - private String suffix; - - DatasourceType(String type, String name, String catalog, String prefix, String suffix) { - this.type = type; - this.name = name; - this.catalog = catalog; - this.prefix = prefix; - this.suffix = suffix; - } - - public String getType() { - return type; - } - - public String getName() { - return name; - } - - public String getCatalog() { - return catalog; - } - - public String getPrefix() { - return prefix; - } - - public String getSuffix() { - return suffix; - } - } -} diff --git a/sdk/extensions/extensions-datasource/src/main/java/io/dataease/extensions/datasource/vo/XpackPluginsDatasourceVO.java b/sdk/extensions/extensions-datasource/src/main/java/io/dataease/extensions/datasource/vo/XpackPluginsDatasourceVO.java index 9c113aab6c..32eb694285 100644 --- a/sdk/extensions/extensions-datasource/src/main/java/io/dataease/extensions/datasource/vo/XpackPluginsDatasourceVO.java +++ b/sdk/extensions/extensions-datasource/src/main/java/io/dataease/extensions/datasource/vo/XpackPluginsDatasourceVO.java @@ -23,6 +23,10 @@ public class XpackPluginsDatasourceVO implements Serializable { private String extraParams; + private String prefix; + + private String suffix; + private Map staticMap; }