feat: 驱动管理可以支持配置内置驱动的版本范围
This commit is contained in:
parent
4135072068
commit
1ab4d41d25
@ -63,16 +63,6 @@ public class DriverMgmController {
|
||||
@GetMapping("/list/{type}")
|
||||
public List<DriverDTO> listDeDriver(@PathVariable String type) throws Exception {
|
||||
List<DriverDTO> driverDTOS = listDeDriver().stream().filter(driverDTO -> driverDTO.getType().equalsIgnoreCase(type)).collect(Collectors.toList());
|
||||
DriverDTO driverDTO = new DriverDTO();
|
||||
driverDTO.setId("default");
|
||||
driverDTO.setName("default");
|
||||
driverDTO.setDriverClass("default");
|
||||
datasourceService.types().forEach(dataSourceType -> {
|
||||
if (dataSourceType.getType().equalsIgnoreCase(type)) {
|
||||
driverDTO.setSurpportVersions(dataSourceType.getSurpportVersions());
|
||||
}
|
||||
});
|
||||
driverDTOS.add(driverDTO);
|
||||
driverDTOS.forEach(driverDTO1 -> {
|
||||
if (StringUtils.isEmpty(driverDTO1.getSurpportVersions())) {
|
||||
driverDTO1.setNameAlias(driverDTO1.getName());
|
||||
|
||||
@ -581,10 +581,16 @@ public class JdbcProvider extends DefaultJdbcProvider {
|
||||
if (isDefaultClassLoader(customDriver)) {
|
||||
driverClassName = defaultDriver;
|
||||
jdbcClassLoader = extendedJdbcClassLoader;
|
||||
for (DataSourceType value : SpringContextUtil.getApplicationContext().getBeansOfType(DataSourceType.class).values()) {
|
||||
if (value.getType().equalsIgnoreCase(datasourceRequest.getDatasource().getType())) {
|
||||
surpportVersions = value.getSurpportVersions();
|
||||
|
||||
DeDriver driver = deDriverMapper.selectByPrimaryKey("default-" + datasourceRequest.getDatasource().getType());
|
||||
if(driver == null){
|
||||
for (DataSourceType value : SpringContextUtil.getApplicationContext().getBeansOfType(DataSourceType.class).values()) {
|
||||
if (value.getType().equalsIgnoreCase(datasourceRequest.getDatasource().getType())) {
|
||||
surpportVersions = value.getSurpportVersions();
|
||||
}
|
||||
}
|
||||
}else {
|
||||
surpportVersions = driver.getSurpportVersions();
|
||||
}
|
||||
} else {
|
||||
if (deDriver == null) {
|
||||
|
||||
@ -12,6 +12,7 @@ import io.dataease.i18n.Translator;
|
||||
import io.dataease.plugins.common.base.domain.*;
|
||||
import io.dataease.plugins.common.base.mapper.DeDriverDetailsMapper;
|
||||
import io.dataease.plugins.common.base.mapper.DeDriverMapper;
|
||||
import io.dataease.plugins.common.dto.datasource.DataSourceType;
|
||||
import io.dataease.plugins.datasource.entity.JdbcConfiguration;
|
||||
import io.dataease.plugins.datasource.provider.DefaultJdbcProvider;
|
||||
import io.dataease.plugins.datasource.provider.ExtendedJdbcClassLoader;
|
||||
@ -30,6 +31,7 @@ import java.lang.reflect.Modifier;
|
||||
import java.util.*;
|
||||
import java.util.jar.JarEntry;
|
||||
import java.util.jar.JarFile;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Service
|
||||
@ -46,20 +48,54 @@ public class DriverService {
|
||||
|
||||
public List<DriverDTO> list() throws Exception {
|
||||
List<DriverDTO> driverDTOS = new ArrayList<>();
|
||||
deDriverMapper.selectByExampleWithBLOBs(null).forEach(deDriver -> {
|
||||
Collection<DataSourceType> dataSourceTypes = datasourceService.types();
|
||||
List<String> dsTypes = datasourceService.types().stream().map(DataSourceType::getType).collect(Collectors.toList());
|
||||
List<DeDriver> deDrivers = deDriverMapper.selectByExampleWithBLOBs(null);
|
||||
List<String> driverTypes = deDrivers.stream().filter(deDriver -> deDriver.getId().contains("default")).map(DeDriver::getType).collect(Collectors.toList());
|
||||
deDrivers.forEach(deDriver -> {
|
||||
DriverDTO driverDTO = new DriverDTO();
|
||||
BeanUtils.copyBean(driverDTO, deDriver);
|
||||
datasourceService.types().forEach(dataSourceType -> {
|
||||
dataSourceTypes.forEach(dataSourceType -> {
|
||||
if (dataSourceType.getType().equalsIgnoreCase(deDriver.getType())) {
|
||||
driverDTO.setTypeDesc(dataSourceType.getName());
|
||||
}
|
||||
|
||||
});
|
||||
driverDTOS.add(driverDTO);
|
||||
});
|
||||
for (String dsType : dsTypes) {
|
||||
if(!driverTypes.contains(dsType)){
|
||||
DriverDTO driverDTO = new DriverDTO();
|
||||
driverDTO.setId("default-" + dsType);
|
||||
driverDTO.setName("default");
|
||||
driverDTO.setType(dsType);
|
||||
dataSourceTypes.forEach(dataSourceType -> {
|
||||
if (dataSourceType.getType().equalsIgnoreCase(dsType)) {
|
||||
driverDTO.setTypeDesc(dataSourceType.getName());
|
||||
driverDTO.setSurpportVersions(dataSourceType.getSurpportVersions());
|
||||
}
|
||||
});
|
||||
driverDTOS.add(driverDTO);
|
||||
}
|
||||
}
|
||||
return driverDTOS;
|
||||
}
|
||||
|
||||
public DeDriver getDefaultDeDriver(String type){
|
||||
DeDriver deDriver = deDriverMapper.selectByPrimaryKey("default-" + type);
|
||||
if(deDriver == null){
|
||||
deDriver = new DeDriver();
|
||||
deDriver.setId("default-" + type);
|
||||
deDriver.setName("default");
|
||||
deDriver.setType(type);
|
||||
for (DataSourceType dataSourceType : datasourceService.types()) {
|
||||
if (dataSourceType.getType().equalsIgnoreCase(type)) {
|
||||
deDriver.setSurpportVersions(dataSourceType.getSurpportVersions());
|
||||
}
|
||||
}
|
||||
}
|
||||
return deDriver;
|
||||
}
|
||||
|
||||
public void delete(DeDriver deDriver) {
|
||||
for (Datasource datasource : datasourceService.listByType(deDriver.getType())) {
|
||||
JdbcConfiguration configuration = new Gson().fromJson(datasource.getConfiguration(), JdbcConfiguration.class);
|
||||
@ -90,7 +126,17 @@ public class DriverService {
|
||||
}
|
||||
|
||||
public DeDriver update(DeDriver deDriver) {
|
||||
deDriverMapper.updateByPrimaryKeyWithBLOBs(deDriver);
|
||||
if(StringUtils.isNotEmpty(deDriver.getId()) && deDriver.getId().contains("default")){
|
||||
if(deDriverMapper.selectByPrimaryKey(deDriver.getId()) != null){
|
||||
deDriverMapper.updateByPrimaryKeyWithBLOBs(deDriver);
|
||||
}else {
|
||||
deDriver.setCreateTime(System.currentTimeMillis());
|
||||
deDriverMapper.insert(deDriver);
|
||||
}
|
||||
}else {
|
||||
deDriverMapper.updateByPrimaryKeyWithBLOBs(deDriver);
|
||||
}
|
||||
|
||||
return deDriver;
|
||||
}
|
||||
|
||||
|
||||
@ -19,7 +19,7 @@
|
||||
label-width="180px"
|
||||
label-position="right"
|
||||
>
|
||||
<el-form-item
|
||||
<el-form-item v-if="showItem(driverForm.id)"
|
||||
:label="$t('driver.driver')"
|
||||
prop="driverClass"
|
||||
>
|
||||
@ -41,6 +41,7 @@
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-upload
|
||||
v-show="showItem(driverForm.id)"
|
||||
:action="baseUrl + 'driver/file/upload'"
|
||||
:multiple="true"
|
||||
:show-file-list="false"
|
||||
@ -62,7 +63,7 @@
|
||||
{{ uploading ? $t('dataset.uploading') : $t('dataset.upload_file') }}
|
||||
</deBtn>
|
||||
</el-upload>
|
||||
<p class="tips">
|
||||
<p class="tips" v-show="showItem(driverForm.id)">
|
||||
{{ $t('datasource.can_be_uploaded') }}
|
||||
</p>
|
||||
<div class="jar-cont">
|
||||
@ -303,7 +304,14 @@ export default {
|
||||
},
|
||||
refreshType(form) {
|
||||
this.$emit('refresh-type', form)
|
||||
}
|
||||
},
|
||||
showItem(id){
|
||||
if (id !== '' && id.indexOf("default") !== -1) {
|
||||
return false
|
||||
} else {
|
||||
return true
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@ -216,7 +216,7 @@
|
||||
:label="$t('datasource.driver_name')"
|
||||
prop="name"
|
||||
>
|
||||
<el-input
|
||||
<el-input :disabled="disabledEdit(driverForm.id)"
|
||||
v-model="driverForm.name"
|
||||
:placeholder="$t('fu.search_bar.please_input')"
|
||||
/>
|
||||
@ -379,6 +379,7 @@ export default {
|
||||
dialogTitle: '',
|
||||
editDriver: false,
|
||||
driverForm: {
|
||||
id: '',
|
||||
name: '',
|
||||
desc: '',
|
||||
type: ''
|
||||
@ -457,6 +458,13 @@ export default {
|
||||
handleClick() {
|
||||
document.querySelector(`.${this.tabActive}`).scrollIntoView()
|
||||
},
|
||||
disabledEdit(id){
|
||||
if (id !== '' && id.indexOf("default") !== -1) {
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
},
|
||||
createDriveOrDs() {
|
||||
if (this.showView === 'Driver') {
|
||||
this.addDriver()
|
||||
@ -830,6 +838,7 @@ export default {
|
||||
this.$refs['driverForm'].resetFields()
|
||||
this.editDriver = false
|
||||
this.driverForm = {
|
||||
id: '',
|
||||
name: '',
|
||||
desc: '',
|
||||
type: ''
|
||||
|
||||
@ -82,10 +82,15 @@ public class DmDsProvider extends DefaultJdbcProvider {
|
||||
if (isDefaultClassLoader(customDriver)) {
|
||||
driverClassName = defaultDriver;
|
||||
jdbcClassLoader = extendedJdbcClassLoader;
|
||||
for (DataSourceType value : SpringContextUtil.getApplicationContext().getBeansOfType(DataSourceType.class).values()) {
|
||||
if(value.getType().equalsIgnoreCase(datasourceRequest.getDatasource().getType())){
|
||||
surpportVersions = value.getSurpportVersions();
|
||||
DeDriver driver = deDriverMapper.selectByPrimaryKey("default-" + datasourceRequest.getDatasource().getType());
|
||||
if (driver == null) {
|
||||
for (DataSourceType value : SpringContextUtil.getApplicationContext().getBeansOfType(DataSourceType.class).values()) {
|
||||
if (value.getType().equalsIgnoreCase(datasourceRequest.getDatasource().getType())) {
|
||||
surpportVersions = value.getSurpportVersions();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
surpportVersions = driver.getSurpportVersions();
|
||||
}
|
||||
} else {
|
||||
if (deDriver == null) {
|
||||
@ -107,10 +112,10 @@ public class DmDsProvider extends DefaultJdbcProvider {
|
||||
} finally {
|
||||
Thread.currentThread().setContextClassLoader(classLoader);
|
||||
}
|
||||
if(StringUtils.isNotEmpty(surpportVersions) && surpportVersions.split(",").length > 0){
|
||||
if(! Arrays.asList(surpportVersions.split(",")).contains(String.valueOf(conn.getMetaData().getDatabaseMajorVersion()))){
|
||||
if (StringUtils.isNotEmpty(surpportVersions) && surpportVersions.split(",").length > 0) {
|
||||
if (!Arrays.asList(surpportVersions.split(",")).contains(String.valueOf(conn.getMetaData().getDatabaseMajorVersion()))) {
|
||||
DataEaseException.throwException("当前驱动不支持此版本!");
|
||||
};
|
||||
}
|
||||
}
|
||||
return conn;
|
||||
}
|
||||
|
||||
@ -64,10 +64,15 @@ public class KingbaseDsProvider extends DefaultJdbcProvider {
|
||||
if (isDefaultClassLoader(customDriver)) {
|
||||
driverClassName = defaultDriver;
|
||||
jdbcClassLoader = extendedJdbcClassLoader;
|
||||
for (DataSourceType value : SpringContextUtil.getApplicationContext().getBeansOfType(DataSourceType.class).values()) {
|
||||
if(value.getType().equalsIgnoreCase(datasourceRequest.getDatasource().getType())){
|
||||
surpportVersions = value.getSurpportVersions();
|
||||
DeDriver driver = deDriverMapper.selectByPrimaryKey("default-" + datasourceRequest.getDatasource().getType());
|
||||
if (driver == null) {
|
||||
for (DataSourceType value : SpringContextUtil.getApplicationContext().getBeansOfType(DataSourceType.class).values()) {
|
||||
if (value.getType().equalsIgnoreCase(datasourceRequest.getDatasource().getType())) {
|
||||
surpportVersions = value.getSurpportVersions();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
surpportVersions = driver.getSurpportVersions();
|
||||
}
|
||||
} else {
|
||||
if (deDriver == null) {
|
||||
|
||||
@ -58,10 +58,15 @@ public class KylinDsProvider extends DefaultJdbcProvider {
|
||||
if(isDefaultClassLoader(customDriver)){
|
||||
driverClassName = defaultDriver;
|
||||
jdbcClassLoader = extendedJdbcClassLoader;
|
||||
for (DataSourceType value : SpringContextUtil.getApplicationContext().getBeansOfType(DataSourceType.class).values()) {
|
||||
if(value.getType().equalsIgnoreCase(datasourceRequest.getDatasource().getType())){
|
||||
surpportVersions = value.getSurpportVersions();
|
||||
DeDriver driver = deDriverMapper.selectByPrimaryKey("default-" + datasourceRequest.getDatasource().getType());
|
||||
if (driver == null) {
|
||||
for (DataSourceType value : SpringContextUtil.getApplicationContext().getBeansOfType(DataSourceType.class).values()) {
|
||||
if (value.getType().equalsIgnoreCase(datasourceRequest.getDatasource().getType())) {
|
||||
surpportVersions = value.getSurpportVersions();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
surpportVersions = driver.getSurpportVersions();
|
||||
}
|
||||
}else {
|
||||
if(deDriver == null){
|
||||
|
||||
@ -62,10 +62,15 @@ public class MongobiDsProvider extends DefaultJdbcProvider {
|
||||
if(isDefaultClassLoader(customDriver)){
|
||||
driverClassName = defaultDriver;
|
||||
jdbcClassLoader = extendedJdbcClassLoader;
|
||||
for (DataSourceType value : SpringContextUtil.getApplicationContext().getBeansOfType(DataSourceType.class).values()) {
|
||||
if(value.getType().equalsIgnoreCase(datasourceRequest.getDatasource().getType())){
|
||||
surpportVersions = value.getSurpportVersions();
|
||||
DeDriver driver = deDriverMapper.selectByPrimaryKey("default-" + datasourceRequest.getDatasource().getType());
|
||||
if (driver == null) {
|
||||
for (DataSourceType value : SpringContextUtil.getApplicationContext().getBeansOfType(DataSourceType.class).values()) {
|
||||
if (value.getType().equalsIgnoreCase(datasourceRequest.getDatasource().getType())) {
|
||||
surpportVersions = value.getSurpportVersions();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
surpportVersions = driver.getSurpportVersions();
|
||||
}
|
||||
}else {
|
||||
if(deDriver == null){
|
||||
|
||||
@ -54,10 +54,15 @@ public class PrestoDsProvider extends DefaultJdbcProvider {
|
||||
ExtendedJdbcClassLoader classLoader;
|
||||
if(isDefaultClassLoader(customDriver)){
|
||||
classLoader = extendedJdbcClassLoader;
|
||||
for (DataSourceType value : SpringContextUtil.getApplicationContext().getBeansOfType(DataSourceType.class).values()) {
|
||||
if(value.getType().equalsIgnoreCase(datasourceRequest.getDatasource().getType())){
|
||||
surpportVersions = value.getSurpportVersions();
|
||||
DeDriver driver = deDriverMapper.selectByPrimaryKey("default-" + datasourceRequest.getDatasource().getType());
|
||||
if (driver == null) {
|
||||
for (DataSourceType value : SpringContextUtil.getApplicationContext().getBeansOfType(DataSourceType.class).values()) {
|
||||
if (value.getType().equalsIgnoreCase(datasourceRequest.getDatasource().getType())) {
|
||||
surpportVersions = value.getSurpportVersions();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
surpportVersions = driver.getSurpportVersions();
|
||||
}
|
||||
}else {
|
||||
deDriver = deDriverMapper.selectByPrimaryKey(customDriver);
|
||||
|
||||
@ -20,6 +20,7 @@ public abstract class ViewPluginService extends PluginComponentService {
|
||||
|
||||
private PluginViewRSHandler<Map> rsHandler;
|
||||
|
||||
|
||||
public abstract PluginViewType viewType();
|
||||
|
||||
public abstract Object format(Object param);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user