forked from github/dataease
fix: 优化驱动管理
This commit is contained in:
parent
e0b380f1ca
commit
626f97935e
@ -45,7 +45,7 @@ public class DriverMgmController {
|
||||
value = "id"
|
||||
)
|
||||
public void delete(@RequestBody DeDriver deDriver) throws Exception{
|
||||
driverService.delete(deDriver.getId());
|
||||
driverService.delete(deDriver);
|
||||
}
|
||||
|
||||
@RequiresPermissions("datasource:read")
|
||||
|
@ -449,6 +449,9 @@ public class JdbcProvider extends DefaultJdbcProvider {
|
||||
driverClassName = defaultDriver;
|
||||
jdbcClassLoader = extendedJdbcClassLoader;
|
||||
} else {
|
||||
if(deDriver == null){
|
||||
deDriver = deDriverMapper.selectByPrimaryKey(customDriver);
|
||||
}
|
||||
driverClassName = deDriver.getDriverClass();
|
||||
jdbcClassLoader = getCustomJdbcClassLoader(deDriver);
|
||||
}
|
||||
|
@ -406,6 +406,12 @@ public class DatasourceService {
|
||||
return ApiProvider.checkApiDefinition(apiDefinition, response);
|
||||
}
|
||||
|
||||
public List<Datasource> listByType(String type){
|
||||
DatasourceExample example = new DatasourceExample();
|
||||
example.createCriteria().andTypeEqualTo(type);
|
||||
return datasourceMapper.selectByExampleWithBLOBs(example);
|
||||
}
|
||||
|
||||
private void checkAndUpdateDatasourceStatus(Datasource datasource){
|
||||
try {
|
||||
Provider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
|
||||
|
@ -1,14 +1,20 @@
|
||||
package io.dataease.service.datasource;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import io.dataease.commons.utils.BeanUtils;
|
||||
import io.dataease.commons.utils.DeFileUtils;
|
||||
import io.dataease.dto.DriverDTO;
|
||||
import io.dataease.dto.datasource.SqlServerConfiguration;
|
||||
import io.dataease.i18n.Translator;
|
||||
import io.dataease.plugins.common.base.domain.Datasource;
|
||||
import io.dataease.plugins.common.base.domain.DeDriver;
|
||||
import io.dataease.plugins.common.base.domain.DeDriverDetails;
|
||||
import io.dataease.plugins.common.base.domain.DeDriverDetailsExample;
|
||||
import io.dataease.plugins.common.base.mapper.DeDriverDetailsMapper;
|
||||
import io.dataease.plugins.common.base.mapper.DeDriverMapper;
|
||||
import io.dataease.plugins.datasource.entity.JdbcConfiguration;
|
||||
import io.dataease.plugins.datasource.provider.ExtendedJdbcClassLoader;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
@ -55,13 +61,18 @@ public class DriverService {
|
||||
return driverDTOS;
|
||||
}
|
||||
|
||||
public void delete(String driverId) {
|
||||
deDriverMapper.deleteByPrimaryKey(driverId);
|
||||
|
||||
public void delete(DeDriver deDriver) {
|
||||
for (Datasource datasource : datasourceService.listByType(deDriver.getType())) {
|
||||
JdbcConfiguration configuration = new Gson().fromJson(datasource.getConfiguration(), JdbcConfiguration.class);
|
||||
if(StringUtils.isNotEmpty(configuration.getCustomDriver()) && configuration.getCustomDriver().equalsIgnoreCase(deDriver.getId())){
|
||||
throw new RuntimeException(Translator.get("I18N_DRIVER_NOT_DELETE"));
|
||||
}
|
||||
}
|
||||
deDriverMapper.deleteByPrimaryKey(deDriver.getId());
|
||||
DeDriverDetailsExample example = new DeDriverDetailsExample();
|
||||
example.createCriteria().andDeDriverIdEqualTo(driverId);
|
||||
example.createCriteria().andDeDriverIdEqualTo(deDriver.getId());
|
||||
deDriverDetailsMapper.deleteByExample(example);
|
||||
DeFileUtils.deleteFile(DRIVER_PATH + driverId + "/");
|
||||
DeFileUtils.deleteFile(DRIVER_PATH + deDriver.getId() + "/");
|
||||
}
|
||||
|
||||
public DeDriver save(DeDriver deDriver) {
|
||||
|
@ -149,3 +149,5 @@ SOURCE_TYPE_VIEW=VIEW
|
||||
SOURCE_TYPE_USER=USER
|
||||
SOURCE_TYPE_DEPT=ORG
|
||||
SOURCE_TYPE_ROLE=ROLE
|
||||
|
||||
I18N_DRIVER_NOT_DELETE=Drivers in use cannot be deleted
|
@ -152,3 +152,5 @@ I18N_OPERATE_TYPE=操作类型
|
||||
I18N_DETAIL=操作详情
|
||||
I18N_USER=操作人
|
||||
I18N_TIME=操作时间
|
||||
|
||||
I18N_DRIVER_NOT_DELETE=使用中的驱动不允许删除
|
||||
|
@ -148,3 +148,5 @@ SOURCE_TYPE_VIEW=視圖
|
||||
SOURCE_TYPE_USER=用戶
|
||||
SOURCE_TYPE_DEPT=組織
|
||||
SOURCE_TYPE_ROLE=角色
|
||||
|
||||
I18N_DRIVER_NOT_DELETE=使用中的驅動不允許删除
|
@ -1337,7 +1337,8 @@ export default {
|
||||
modify: 'Modify',
|
||||
show_info: 'Driver info',
|
||||
file_name: 'File name',
|
||||
version: 'version'
|
||||
version: 'version',
|
||||
please_set_driverClass: 'Please specify driver class'
|
||||
},
|
||||
datasource: {
|
||||
auth_method: 'Auth method',
|
||||
|
@ -1337,7 +1337,8 @@ export default {
|
||||
modify: '修改',
|
||||
show_info: '驅動信息',
|
||||
file_name: '文件名',
|
||||
version: '版本'
|
||||
version: '版本',
|
||||
please_set_driverClass: '請指定驅動類'
|
||||
},
|
||||
datasource: {
|
||||
auth_method: '認證方式',
|
||||
|
@ -1339,7 +1339,8 @@ export default {
|
||||
modify: '修改',
|
||||
show_info: '驱动信息',
|
||||
file_name: '文件名',
|
||||
version: '版本'
|
||||
version: '版本',
|
||||
please_set_driverClass: '请指定驱动类',
|
||||
},
|
||||
datasource: {
|
||||
auth_method: '认证方式',
|
||||
|
@ -26,7 +26,7 @@
|
||||
<el-form-item :label="$t('commons.name')" prop="name">
|
||||
<el-input v-model="driverForm.name" autocomplete="off"/>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('commons.description')" prop="desc">
|
||||
<el-form-item :label="$t('commons.description')">
|
||||
<el-input v-model="driverForm.desc" autocomplete="off"/>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('datasource.type')" prop="type">
|
||||
@ -62,7 +62,7 @@
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
|
||||
<el-form-item :label="$t('driver.driver')" >
|
||||
<el-form-item :label="$t('driver.driver')" prop="driverClass">
|
||||
<el-input v-model="driverForm.driverClass" autocomplete="off"/>
|
||||
</el-form-item>
|
||||
|
||||
@ -90,7 +90,7 @@
|
||||
</el-upload>
|
||||
<fu-table :data="driverFiles">
|
||||
<el-table-column prop="fileName" :label="$t('driver.file_name')"/>
|
||||
<el-table-column prop="version" :label="$t('driver.version')"/>
|
||||
<!-- <el-table-column prop="version" :label="$t('driver.version')"/>-->
|
||||
<fu-table-operations :buttons="buttons" :label="$t('commons.operating')" fix/>
|
||||
</fu-table>
|
||||
|
||||
@ -151,7 +151,8 @@ export default {
|
||||
{min: 2, max: 50, message: i18n.t('datasource.input_limit_2_25', [2, 25]), trigger: 'blur'}],
|
||||
desc: [{required: true, message: i18n.t('datasource.input_name'), trigger: 'blur'},
|
||||
{min: 2, max: 200, message: i18n.t('datasource.input_limit_2_25', [2, 25]), trigger: 'blur'}],
|
||||
type: [{required: true, message: i18n.t('datasource.please_choose_type'), trigger: 'blur'}]
|
||||
type: [{required: true, message: i18n.t('datasource.please_choose_type'), trigger: 'blur'}],
|
||||
driverClass: [{required: true, message: i18n.t('driver.please_set_driverClass'), trigger: 'blur'}]
|
||||
},
|
||||
canEdit: false,
|
||||
driverFiles: [],
|
||||
@ -231,9 +232,14 @@ export default {
|
||||
this.disabled = this.params && this.params.id && this.params.showModel && this.params.showModel === 'show' && !this.canEdit
|
||||
},
|
||||
save(){
|
||||
updateDriver(this.driverForm).then(res => {
|
||||
this.$success(i18n.t('commons.success'))
|
||||
this.canEdit = false
|
||||
this.$refs.driverForm.validate(valid => {
|
||||
if (!valid) {
|
||||
return false
|
||||
}
|
||||
updateDriver(this.driverForm).then(res => {
|
||||
this.$success(i18n.t('commons.success'))
|
||||
this.canEdit = false
|
||||
})
|
||||
})
|
||||
},
|
||||
reset() {
|
||||
|
@ -137,7 +137,7 @@ export default {
|
||||
acquireIncrement: 5,
|
||||
idleConnectionTestPeriod: 5,
|
||||
connectTimeout: 5,
|
||||
customDriver: ''
|
||||
customDriver: 'default'
|
||||
},
|
||||
apiConfiguration: []
|
||||
},
|
||||
@ -286,7 +286,7 @@ export default {
|
||||
acquireIncrement: 5,
|
||||
idleConnectionTestPeriod: 5,
|
||||
connectTimeout: 5,
|
||||
customDriver: ''
|
||||
customDriver: 'default'
|
||||
}
|
||||
|
||||
},
|
||||
@ -525,7 +525,7 @@ export default {
|
||||
if (this.dsTypes[i].type === this.form.type) {
|
||||
if(this.form.type !== 'api' && !init){
|
||||
this.form.configuration.extraParams = this.dsTypes[i].extraParams
|
||||
this.form.configuration.customDriver = ''
|
||||
this.form.configuration.customDriver = 'default'
|
||||
}
|
||||
this.datasourceType = this.dsTypes[i]
|
||||
if(this.datasourceType.isJdbc){
|
||||
|
@ -111,7 +111,7 @@
|
||||
<el-form-item :label="$t('commons.name')" prop="name">
|
||||
<el-input v-model="driverForm.name"/>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('commons.description')" prop="desc">
|
||||
<el-form-item :label="$t('commons.description')">
|
||||
<el-input v-model="driverForm.desc"/>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('datasource.type')" prop="type">
|
||||
@ -123,7 +123,7 @@
|
||||
filterable
|
||||
>
|
||||
<el-option
|
||||
v-for="item in dsTypes"
|
||||
v-for="item in dsTypesForDriver"
|
||||
:key="item.type"
|
||||
:label="item.name"
|
||||
:value="item.type"
|
||||
@ -156,6 +156,7 @@ import {
|
||||
delDriver,
|
||||
listDriverByType
|
||||
} from '@/api/system/datasource'
|
||||
import {ApplicationContext} from "@/utils/ApplicationContext";
|
||||
|
||||
export default {
|
||||
name: 'DsTree',
|
||||
@ -170,6 +171,7 @@ export default {
|
||||
expandedArray: [],
|
||||
tData: [],
|
||||
dsTypes: [],
|
||||
dsTypesForDriver: [],
|
||||
showSearchInput: false,
|
||||
key: '',
|
||||
showView: 'Datasource',
|
||||
@ -242,6 +244,11 @@ export default {
|
||||
datasourceTypes() {
|
||||
listDatasourceType().then(res => {
|
||||
this.dsTypes = res.data
|
||||
this.dsTypes.forEach(item => {
|
||||
if(item.isJdbc){
|
||||
this.dsTypesForDriver.push(item)
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
refreshType(datasource) {
|
||||
|
Loading…
Reference in New Issue
Block a user