fix: 数据源复制
This commit is contained in:
parent
35812f30ca
commit
561bf05883
@ -7,6 +7,7 @@ import io.dataease.auth.annotation.DeLog;
|
|||||||
import io.dataease.auth.annotation.DePermission;
|
import io.dataease.auth.annotation.DePermission;
|
||||||
import io.dataease.commons.constants.DePermissionType;
|
import io.dataease.commons.constants.DePermissionType;
|
||||||
import io.dataease.commons.constants.ResourceAuthLevel;
|
import io.dataease.commons.constants.ResourceAuthLevel;
|
||||||
|
import io.dataease.commons.constants.SysAuthConstants;
|
||||||
import io.dataease.commons.constants.SysLogConstants;
|
import io.dataease.commons.constants.SysLogConstants;
|
||||||
import io.dataease.commons.utils.AuthUtils;
|
import io.dataease.commons.utils.AuthUtils;
|
||||||
import io.dataease.commons.utils.DeLogUtils;
|
import io.dataease.commons.utils.DeLogUtils;
|
||||||
@ -18,10 +19,15 @@ import io.dataease.dto.DatasourceDTO;
|
|||||||
import io.dataease.dto.SysLogDTO;
|
import io.dataease.dto.SysLogDTO;
|
||||||
import io.dataease.dto.datasource.DBTableDTO;
|
import io.dataease.dto.datasource.DBTableDTO;
|
||||||
import io.dataease.plugins.common.base.domain.Datasource;
|
import io.dataease.plugins.common.base.domain.Datasource;
|
||||||
|
import io.dataease.plugins.common.base.domain.DatasourceExample;
|
||||||
|
import io.dataease.plugins.common.dto.datasource.DataSourceType;
|
||||||
|
import io.dataease.plugins.datasource.provider.Provider;
|
||||||
|
import io.dataease.provider.ProviderFactory;
|
||||||
import io.dataease.service.datasource.DatasourceService;
|
import io.dataease.service.datasource.DatasourceService;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.apache.commons.lang3.ObjectUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import springfox.documentation.annotations.ApiIgnore;
|
import springfox.documentation.annotations.ApiIgnore;
|
||||||
@ -30,6 +36,7 @@ import javax.annotation.Resource;
|
|||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.UUID;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Api(tags = "数据源:数据源管理")
|
@Api(tags = "数据源:数据源管理")
|
||||||
@ -65,8 +72,21 @@ public class DatasourceController {
|
|||||||
positionIndex = 0, positionKey = "type",
|
positionIndex = 0, positionKey = "type",
|
||||||
value = "id"
|
value = "id"
|
||||||
)
|
)
|
||||||
public void updateDatasource(@RequestBody UpdataDsRequest dsRequest) throws Exception {
|
public void updateDatasource(@RequestBody UpdataDsRequest updataDsRequest) throws Exception {
|
||||||
datasourceService.updateDatasource(dsRequest);
|
DatasourceDTO datasource = new DatasourceDTO();
|
||||||
|
datasource.setConfigurationEncryption(updataDsRequest.isConfigurationEncryption());
|
||||||
|
datasource.setName(updataDsRequest.getName());
|
||||||
|
datasource.setDesc(updataDsRequest.getDesc());
|
||||||
|
datasource.setConfiguration(updataDsRequest.getConfiguration());
|
||||||
|
datasource.setCreateTime(null);
|
||||||
|
datasource.setType(updataDsRequest.getType());
|
||||||
|
datasource.setUpdateTime(System.currentTimeMillis());
|
||||||
|
datasourceService.preCheckDs(datasource);
|
||||||
|
if (StringUtils.isNotEmpty(updataDsRequest.getId())) {
|
||||||
|
datasourceService.updateDatasource(updataDsRequest.getId(), datasource);
|
||||||
|
} else {
|
||||||
|
datasourceService.insert(datasource);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequiresPermissions("datasource:read")
|
@RequiresPermissions("datasource:read")
|
||||||
|
|||||||
@ -105,16 +105,12 @@ public class DatasourceService {
|
|||||||
@DeCleaner(DePermissionType.DATASOURCE)
|
@DeCleaner(DePermissionType.DATASOURCE)
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Datasource addDatasource(DatasourceDTO datasource) throws Exception {
|
public Datasource addDatasource(DatasourceDTO datasource) throws Exception {
|
||||||
if (!types().stream().map(DataSourceType::getType).collect(Collectors.toList()).contains(datasource.getType())) {
|
preCheckDs(datasource);
|
||||||
throw new Exception("Datasource type not supported.");
|
return insert(datasource);
|
||||||
}
|
}
|
||||||
if(datasource.isConfigurationEncryption()){
|
|
||||||
datasource.setConfiguration(new String(java.util.Base64.getDecoder().decode(datasource.getConfiguration())));
|
|
||||||
}
|
|
||||||
Provider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
|
|
||||||
datasourceProvider.checkConfiguration(datasource);
|
|
||||||
|
|
||||||
checkName(datasource.getName(), datasource.getType(), datasource.getId());
|
@DeCleaner(DePermissionType.DATASOURCE)
|
||||||
|
public DatasourceDTO insert(DatasourceDTO datasource) {
|
||||||
long currentTimeMillis = System.currentTimeMillis();
|
long currentTimeMillis = System.currentTimeMillis();
|
||||||
datasource.setId(UUID.randomUUID().toString());
|
datasource.setId(UUID.randomUUID().toString());
|
||||||
datasource.setUpdateTime(currentTimeMillis);
|
datasource.setUpdateTime(currentTimeMillis);
|
||||||
@ -127,6 +123,17 @@ public class DatasourceService {
|
|||||||
return datasource;
|
return datasource;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void preCheckDs(DatasourceDTO datasource) throws Exception {
|
||||||
|
if (!types().stream().map(DataSourceType::getType).collect(Collectors.toList()).contains(datasource.getType())) {
|
||||||
|
throw new Exception("Datasource type not supported.");
|
||||||
|
}
|
||||||
|
if (datasource.isConfigurationEncryption()) {
|
||||||
|
datasource.setConfiguration(new String(java.util.Base64.getDecoder().decode(datasource.getConfiguration())));
|
||||||
|
}
|
||||||
|
Provider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
|
||||||
|
datasourceProvider.checkConfiguration(datasource);
|
||||||
|
checkName(datasource.getName(), datasource.getType(), datasource.getId());
|
||||||
|
}
|
||||||
|
|
||||||
public void handleConnectionPool(String datasourceId, String type) {
|
public void handleConnectionPool(String datasourceId, String type) {
|
||||||
Datasource datasource = datasourceMapper.selectByPrimaryKey(datasourceId);
|
Datasource datasource = datasourceMapper.selectByPrimaryKey(datasourceId);
|
||||||
@ -159,7 +166,7 @@ public class DatasourceService {
|
|||||||
return datasourceDTOS;
|
return datasourceDTOS;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void datasourceTrans(DatasourceDTO datasourceDTO){
|
private void datasourceTrans(DatasourceDTO datasourceDTO) {
|
||||||
types().forEach(dataSourceType -> {
|
types().forEach(dataSourceType -> {
|
||||||
if (dataSourceType.getType().equalsIgnoreCase(datasourceDTO.getType())) {
|
if (dataSourceType.getType().equalsIgnoreCase(datasourceDTO.getType())) {
|
||||||
datasourceDTO.setTypeDesc(dataSourceType.getName());
|
datasourceDTO.setTypeDesc(dataSourceType.getName());
|
||||||
@ -214,23 +221,24 @@ public class DatasourceService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(StringUtils.isNotEmpty(datasourceDTO.getConfiguration())){
|
if (StringUtils.isNotEmpty(datasourceDTO.getConfiguration())) {
|
||||||
datasourceDTO.setConfiguration(new String(java.util.Base64.getEncoder().encode(datasourceDTO.getConfiguration().getBytes())));
|
datasourceDTO.setConfiguration(new String(java.util.Base64.getEncoder().encode(datasourceDTO.getConfiguration().getBytes())));
|
||||||
}
|
}
|
||||||
if(CollectionUtils.isNotEmpty(datasourceDTO.getApiConfiguration())){
|
if (CollectionUtils.isNotEmpty(datasourceDTO.getApiConfiguration())) {
|
||||||
String config = new Gson().toJson(datasourceDTO.getApiConfiguration());
|
String config = new Gson().toJson(datasourceDTO.getApiConfiguration());
|
||||||
datasourceDTO.setApiConfigurationStr(new String(java.util.Base64.getEncoder().encode(config.getBytes())));
|
datasourceDTO.setApiConfigurationStr(new String(java.util.Base64.getEncoder().encode(config.getBytes())));
|
||||||
datasourceDTO.setApiConfiguration(null);
|
datasourceDTO.setApiConfiguration(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public DatasourceDTO getDataSourceDetails(String datasourceId){
|
public DatasourceDTO getDataSourceDetails(String datasourceId) {
|
||||||
DatasourceDTO result = extDataSourceMapper.queryDetails(datasourceId,String.valueOf(AuthUtils.getUser().getUserId()));
|
DatasourceDTO result = extDataSourceMapper.queryDetails(datasourceId, String.valueOf(AuthUtils.getUser().getUserId()));
|
||||||
if(result != null){
|
if (result != null) {
|
||||||
this.datasourceTrans(result);
|
this.datasourceTrans(result);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<DatasourceDTO> gridQuery(BaseGridRequest request) {
|
public List<DatasourceDTO> gridQuery(BaseGridRequest request) {
|
||||||
//如果没有查询条件增加一个默认的条件
|
//如果没有查询条件增加一个默认的条件
|
||||||
if (CollectionUtils.isEmpty(request.getConditions())) {
|
if (CollectionUtils.isEmpty(request.getConditions())) {
|
||||||
@ -260,12 +268,6 @@ public class DatasourceService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void updateDatasource(UpdataDsRequest updataDsRequest) throws Exception {
|
public void updateDatasource(UpdataDsRequest updataDsRequest) throws Exception {
|
||||||
if (!types().stream().map(DataSourceType::getType).collect(Collectors.toList()).contains(updataDsRequest.getType())) {
|
|
||||||
throw new Exception("Datasource type not supported.");
|
|
||||||
}
|
|
||||||
if(updataDsRequest.isConfigurationEncryption()){
|
|
||||||
updataDsRequest.setConfiguration(new String(java.util.Base64.getDecoder().decode(updataDsRequest.getConfiguration())));
|
|
||||||
}
|
|
||||||
checkName(updataDsRequest.getName(), updataDsRequest.getType(), updataDsRequest.getId());
|
checkName(updataDsRequest.getName(), updataDsRequest.getType(), updataDsRequest.getId());
|
||||||
Datasource datasource = new Datasource();
|
Datasource datasource = new Datasource();
|
||||||
datasource.setName(updataDsRequest.getName());
|
datasource.setName(updataDsRequest.getName());
|
||||||
@ -277,19 +279,15 @@ public class DatasourceService {
|
|||||||
Provider datasourceProvider = ProviderFactory.getProvider(updataDsRequest.getType());
|
Provider datasourceProvider = ProviderFactory.getProvider(updataDsRequest.getType());
|
||||||
datasourceProvider.checkConfiguration(datasource);
|
datasourceProvider.checkConfiguration(datasource);
|
||||||
checkAndUpdateDatasourceStatus(datasource);
|
checkAndUpdateDatasourceStatus(datasource);
|
||||||
if(StringUtils.isNotEmpty(updataDsRequest.getId())){
|
updateDatasource(updataDsRequest.getId(), datasource);
|
||||||
DatasourceExample example = new DatasourceExample();
|
}
|
||||||
example.createCriteria().andIdEqualTo(updataDsRequest.getId());
|
|
||||||
datasourceMapper.updateByExampleSelective(datasource, example);
|
|
||||||
handleConnectionPool(updataDsRequest.getId());
|
|
||||||
}else {
|
|
||||||
datasource.setId(UUID.randomUUID().toString());
|
|
||||||
datasource.setCreateTime(System.currentTimeMillis());
|
|
||||||
datasourceMapper.insert(datasource);
|
|
||||||
handleConnectionPool(datasource, "add");
|
|
||||||
sysAuthService.copyAuth(datasource.getId(), SysAuthConstants.AUTH_SOURCE_TYPE_DATASOURCE);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
public void updateDatasource(String id, Datasource datasource) {
|
||||||
|
DatasourceExample example = new DatasourceExample();
|
||||||
|
example.createCriteria().andIdEqualTo(id);
|
||||||
|
datasourceMapper.updateByExampleSelective(datasource, example);
|
||||||
|
handleConnectionPool(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleConnectionPool(String datasourceId) {
|
private void handleConnectionPool(String datasourceId) {
|
||||||
@ -304,7 +302,7 @@ public class DatasourceService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public ResultHolder validate(DatasourceDTO datasource) throws Exception {
|
public ResultHolder validate(DatasourceDTO datasource) throws Exception {
|
||||||
if(datasource.isConfigurationEncryption()){
|
if (datasource.isConfigurationEncryption()) {
|
||||||
datasource.setConfiguration(new String(java.util.Base64.getDecoder().decode(datasource.getConfiguration())));
|
datasource.setConfiguration(new String(java.util.Base64.getDecoder().decode(datasource.getConfiguration())));
|
||||||
}
|
}
|
||||||
DatasourceDTO datasourceDTO = new DatasourceDTO();
|
DatasourceDTO datasourceDTO = new DatasourceDTO();
|
||||||
@ -395,7 +393,7 @@ public class DatasourceService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getSchema(DatasourceDTO datasource) throws Exception {
|
public List<String> getSchema(DatasourceDTO datasource) throws Exception {
|
||||||
if(datasource.isConfigurationEncryption()){
|
if (datasource.isConfigurationEncryption()) {
|
||||||
datasource.setConfiguration(new String(java.util.Base64.getDecoder().decode(datasource.getConfiguration())));
|
datasource.setConfiguration(new String(java.util.Base64.getDecoder().decode(datasource.getConfiguration())));
|
||||||
}
|
}
|
||||||
Provider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
|
Provider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
|
||||||
@ -519,7 +517,7 @@ public class DatasourceService {
|
|||||||
return datasourceMapper.selectByExampleWithBLOBs(example);
|
return datasourceMapper.selectByExampleWithBLOBs(example);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkAndUpdateDatasourceStatus(Datasource datasource) {
|
public void checkAndUpdateDatasourceStatus(Datasource datasource) {
|
||||||
try {
|
try {
|
||||||
Provider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
|
Provider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
|
||||||
DatasourceRequest datasourceRequest = new DatasourceRequest();
|
DatasourceRequest datasourceRequest = new DatasourceRequest();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user