forked from github/dataease
fix: 自定义驱动
This commit is contained in:
parent
f365527520
commit
d49f617c91
@ -79,7 +79,18 @@ public class JdbcProvider extends DefaultJdbcProvider {
|
||||
List<TableField> list = new LinkedList<>();
|
||||
try (Connection connection = getConnectionFromPool(datasourceRequest)) {
|
||||
if (datasourceRequest.getDatasource().getType().equalsIgnoreCase("oracle")) {
|
||||
Method setRemarksReporting = extendedJdbcClassLoader.loadClass("oracle.jdbc.driver.OracleConnection").getMethod("setRemarksReporting", boolean.class);
|
||||
ExtendedJdbcClassLoader classLoader;
|
||||
String driverClass;
|
||||
OracleConfiguration oracleConfiguration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), OracleConfiguration.class);
|
||||
if (isDefaultClassLoader(oracleConfiguration.getCustomDriver())) {
|
||||
classLoader = extendedJdbcClassLoader;
|
||||
driverClass = oracleConfiguration.getDriver();
|
||||
} else {
|
||||
DeDriver deDriver = deDriverMapper.selectByPrimaryKey(oracleConfiguration.getCustomDriver());
|
||||
classLoader = getCustomJdbcClassLoader(deDriver);
|
||||
driverClass = deDriver.getDriverClass();
|
||||
}
|
||||
Method setRemarksReporting = classLoader.loadClass(driverClass).getMethod("setRemarksReporting", boolean.class);
|
||||
setRemarksReporting.invoke(((DruidPooledConnection) connection).getConnection(), true);
|
||||
}
|
||||
DatabaseMetaData databaseMetaData = connection.getMetaData();
|
||||
|
@ -1,5 +1,6 @@
|
||||
package io.dataease.service.datasource;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.google.gson.Gson;
|
||||
import io.dataease.commons.constants.SysLogConstants;
|
||||
import io.dataease.commons.utils.BeanUtils;
|
||||
@ -8,14 +9,13 @@ import io.dataease.commons.utils.DeLogUtils;
|
||||
import io.dataease.dto.DriverDTO;
|
||||
import io.dataease.dto.SysLogDTO;
|
||||
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.domain.*;
|
||||
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.DefaultJdbcProvider;
|
||||
import io.dataease.plugins.datasource.provider.ExtendedJdbcClassLoader;
|
||||
import io.dataease.provider.ProviderFactory;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@ -27,10 +27,7 @@ import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Enumeration;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.*;
|
||||
import java.util.jar.JarEntry;
|
||||
import java.util.jar.JarFile;
|
||||
|
||||
@ -78,6 +75,15 @@ public class DriverService {
|
||||
}
|
||||
|
||||
public DeDriver save(DeDriver deDriver) {
|
||||
if(StringUtils.isEmpty(deDriver.getName()) || StringUtils.isEmpty(deDriver.getType())){
|
||||
throw new RuntimeException("Name or Type cannot be empty.");
|
||||
}
|
||||
DeDriverExample example = new DeDriverExample();
|
||||
example.createCriteria().andNameEqualTo(deDriver.getName());
|
||||
if(CollectionUtil.isNotEmpty(deDriverMapper.selectByExample(example))){
|
||||
throw new RuntimeException(Translator.get("I18N_DRIVER_REPEAT_NAME"));
|
||||
}
|
||||
|
||||
deDriver.setCreateTime(System.currentTimeMillis());
|
||||
deDriver.setId(UUID.randomUUID().toString());
|
||||
deDriverMapper.insert(deDriver);
|
||||
@ -96,12 +102,15 @@ public class DriverService {
|
||||
return deDriverDetailsMapper.selectByExampleWithBLOBs(example);
|
||||
}
|
||||
|
||||
public void deleteDriverFile(String driverFileId) {
|
||||
public void deleteDriverFile(String driverFileId) throws Exception{
|
||||
DeDriverDetails deDriverDetails = deDriverDetailsMapper.selectByPrimaryKey(driverFileId);
|
||||
DeDriver deDriver = deDriverMapper.selectByPrimaryKey(deDriverDetails.getDeDriverId());
|
||||
DeFileUtils.deleteFile(DRIVER_PATH + deDriverDetails.getDeDriverId() + "/" + deDriverDetails.getFileName());
|
||||
SysLogDTO sysLogDTO = DeLogUtils.buildLog(SysLogConstants.OPERATE_TYPE.DELETE, SysLogConstants.SOURCE_TYPE.DRIVER_FILE, deDriverDetails.getId(), deDriverDetails.getDeDriverId(), null, null);
|
||||
DeLogUtils.save(sysLogDTO);
|
||||
deDriverDetailsMapper.deleteByPrimaryKey(driverFileId);
|
||||
DefaultJdbcProvider defaultJdbcProvider = (DefaultJdbcProvider)ProviderFactory.getProvider(deDriver.getType());
|
||||
defaultJdbcProvider.reloadCustomJdbcClassLoader(deDriver);
|
||||
}
|
||||
|
||||
public DeDriverDetails saveJar(MultipartFile file, String driverId) throws Exception {
|
||||
@ -129,6 +138,9 @@ public class DriverService {
|
||||
deDriverDetailsMapper.insert(deDriverDetails);
|
||||
SysLogDTO sysLogDTO = DeLogUtils.buildLog(SysLogConstants.OPERATE_TYPE.UPLOADFILE, SysLogConstants.SOURCE_TYPE.DRIVER_FILE, deDriverDetails.getId(), driverId, null, null);
|
||||
DeLogUtils.save(sysLogDTO);
|
||||
DeDriver deDriver = deDriverMapper.selectByPrimaryKey(driverId);
|
||||
DefaultJdbcProvider defaultJdbcProvider = (DefaultJdbcProvider)ProviderFactory.getProvider(deDriver.getType());
|
||||
defaultJdbcProvider.reloadCustomJdbcClassLoader(deDriver);
|
||||
return deDriverDetails;
|
||||
}
|
||||
|
||||
|
@ -154,4 +154,5 @@ SOURCE_TYPE_DRIVER=DRIVER
|
||||
SOURCE_TYPE_DRIVER_FILE=DRIVER FILE
|
||||
SOURCE_TYPE_MENU=MENU
|
||||
|
||||
I18N_DRIVER_NOT_DELETE=Drivers in use cannot be deleted
|
||||
I18N_DRIVER_NOT_DELETE=Drivers in use cannot be deleted
|
||||
I18N_DRIVER_REPEAT_NAME=Driver name cannot be same.
|
@ -158,3 +158,4 @@ I18N_USER=操作人
|
||||
I18N_TIME=操作时间
|
||||
|
||||
I18N_DRIVER_NOT_DELETE=使用中的驱动不允许删除
|
||||
I18N_DRIVER_REPEAT_NAME=名称重复
|
||||
|
@ -153,4 +153,5 @@ SOURCE_TYPE_DRIVER=驅動
|
||||
SOURCE_TYPE_DRIVER_FILE=驅動文件
|
||||
SOURCE_TYPE_MENU=菜單
|
||||
|
||||
I18N_DRIVER_NOT_DELETE=使用中的驅動不允許删除
|
||||
I18N_DRIVER_NOT_DELETE=使用中的驅動不允許删除
|
||||
I18N_DRIVER_REPEAT_NAME=名稱重複
|
Loading…
Reference in New Issue
Block a user