mirror of
https://github.com/dataease/dataease.git
synced 2026-06-13 09:04:38 +08:00
@@ -11,11 +11,11 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.google.common.reflect.TypeToken;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonObject;
|
||||
import io.dataease.controller.sys.response.BasicInfo;
|
||||
import io.dataease.dto.dataset.DatasetTableFieldDTO;
|
||||
import io.dataease.plugins.common.dto.datasource.TableDesc;
|
||||
import io.dataease.plugins.common.dto.datasource.TableField;
|
||||
import io.dataease.plugins.common.request.datasource.DatasourceRequest;
|
||||
import io.dataease.plugins.datasource.entity.Status;
|
||||
import io.dataease.plugins.datasource.provider.Provider;
|
||||
import com.jayway.jsonpath.JsonPath;
|
||||
import io.dataease.commons.utils.HttpClientConfig;
|
||||
@@ -23,14 +23,9 @@ import io.dataease.commons.utils.HttpClientUtil;
|
||||
import io.dataease.controller.request.datasource.ApiDefinition;
|
||||
import io.dataease.controller.request.datasource.ApiDefinitionRequest;
|
||||
|
||||
import io.dataease.service.system.SystemParameterService;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -106,6 +101,13 @@ public class ApiProvider extends Provider {
|
||||
return tableFields;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Status checkDsStatus(DatasourceRequest datasourceRequest) throws Exception {
|
||||
Status status = new Status();
|
||||
status.setStatus(checkStatus(datasourceRequest));
|
||||
return status;
|
||||
}
|
||||
|
||||
public String checkStatus(DatasourceRequest datasourceRequest) throws Exception {
|
||||
Gson gson = new Gson();
|
||||
List<ApiDefinition> apiDefinitionList = gson.fromJson(datasourceRequest.getDatasource().getConfiguration(), new TypeToken<List<ApiDefinition>>() {
|
||||
|
||||
@@ -14,6 +14,7 @@ import io.dataease.plugins.common.dto.datasource.TableDesc;
|
||||
import io.dataease.plugins.common.dto.datasource.TableField;
|
||||
import io.dataease.plugins.common.exception.DataEaseException;
|
||||
import io.dataease.plugins.common.request.datasource.DatasourceRequest;
|
||||
import io.dataease.plugins.datasource.entity.Status;
|
||||
import io.dataease.plugins.datasource.provider.Provider;
|
||||
import io.dataease.provider.query.es.EsQueryProvider;
|
||||
import org.apache.commons.codec.binary.Base64;
|
||||
@@ -181,7 +182,7 @@ public class EsProvider extends Provider {
|
||||
}
|
||||
|
||||
for (String[] row : esResponse.getRows()) {
|
||||
if(!row[1].equalsIgnoreCase("STRUCT") && !row[2].equalsIgnoreCase("unsupported")){
|
||||
if (!row[1].equalsIgnoreCase("STRUCT") && !row[2].equalsIgnoreCase("unsupported")) {
|
||||
TableField field = new TableField();
|
||||
field.setFieldName(row[0]);
|
||||
field.setRemarks(row[0]);
|
||||
@@ -251,6 +252,13 @@ public class EsProvider extends Provider {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Status checkDsStatus(DatasourceRequest datasourceRequest) throws Exception {
|
||||
Status status = new Status();
|
||||
status.setStatus(checkStatus(datasourceRequest));
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String checkStatus(DatasourceRequest datasourceRequest) throws Exception {
|
||||
|
||||
@@ -18,6 +18,7 @@ import io.dataease.plugins.common.exception.DataEaseException;
|
||||
import io.dataease.plugins.common.request.datasource.DatasourceRequest;
|
||||
import io.dataease.plugins.common.util.SpringContextUtil;
|
||||
import io.dataease.plugins.datasource.entity.JdbcConfiguration;
|
||||
import io.dataease.plugins.datasource.entity.Status;
|
||||
import io.dataease.plugins.datasource.provider.DefaultJdbcProvider;
|
||||
import io.dataease.plugins.datasource.provider.ExtendedJdbcClassLoader;
|
||||
import io.dataease.plugins.datasource.query.QueryProvider;
|
||||
@@ -369,6 +370,22 @@ public class JdbcProvider extends DefaultJdbcProvider {
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Status checkDsStatus(DatasourceRequest datasourceRequest) throws Exception {
|
||||
Status status = new Status();
|
||||
String queryStr = getTablesSql(datasourceRequest);
|
||||
JdbcConfiguration jdbcConfiguration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), JdbcConfiguration.class);
|
||||
int queryTimeout = jdbcConfiguration.getQueryTimeout() > 0 ? jdbcConfiguration.getQueryTimeout() : 0;
|
||||
try (Connection con = getConnection(datasourceRequest); Statement statement = getStatement(con, queryTimeout); ResultSet resultSet = statement.executeQuery(queryStr)) {
|
||||
status.setVersion(String.valueOf(con.getMetaData().getDatabaseMajorVersion()));
|
||||
} catch (Exception e) {
|
||||
LogUtil.error("Datasource is invalid: " + datasourceRequest.getDatasource().getName(), e);
|
||||
DataEaseException.throwException(e.getMessage());
|
||||
}
|
||||
status.setStatus("Success");
|
||||
return status;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String checkStatus(DatasourceRequest datasourceRequest) throws Exception {
|
||||
String queryStr = getTablesSql(datasourceRequest);
|
||||
@@ -377,7 +394,7 @@ public class JdbcProvider extends DefaultJdbcProvider {
|
||||
try (Connection con = getConnection(datasourceRequest); Statement statement = getStatement(con, queryTimeout); ResultSet resultSet = statement.executeQuery(queryStr)) {
|
||||
} catch (Exception e) {
|
||||
LogUtil.error("Datasource is invalid: " + datasourceRequest.getDatasource().getName(), e);
|
||||
io.dataease.plugins.common.exception.DataEaseException.throwException(e.getMessage());
|
||||
DataEaseException.throwException(e.getMessage());
|
||||
}
|
||||
return "Success";
|
||||
}
|
||||
|
||||
@@ -1340,7 +1340,7 @@ public class DorisQueryProvider extends QueryProvider {
|
||||
|
||||
if (field.getDeType() == 1) {
|
||||
String format = transDateFormat(request.getDateStyle(), request.getDatePattern());
|
||||
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5 || field.getDeExtractType() == 1) {
|
||||
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) {
|
||||
String date = String.format(MySQLConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : MysqlConstants.DEFAULT_DATE_FORMAT);
|
||||
if (field.getType().equalsIgnoreCase("YEAR") || StringUtils.equalsIgnoreCase(field.getDateFormat(), "%Y")) {
|
||||
date = String.format(MySQLConstants.DATE_FORMAT, "CONCAT(" + date + ",'-01-01')", "%Y-01-01");
|
||||
@@ -1351,6 +1351,16 @@ public class DorisQueryProvider extends QueryProvider {
|
||||
whereName = String.format(MySQLConstants.DATE_FORMAT, date, format);
|
||||
}
|
||||
}
|
||||
if (field.getDeExtractType() == 1) {
|
||||
String date = String.format(MySQLConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : MysqlConstants.DEFAULT_DATE_FORMAT);
|
||||
if (field.getType().equalsIgnoreCase("YEAR") || StringUtils.equalsIgnoreCase(field.getDateFormat(), "%Y")) {
|
||||
date = String.format(MySQLConstants.DATE_FORMAT, "CONCAT(" + date + ",'-01-01')", "%Y-01-01");
|
||||
whereName = String.format(MySQLConstants.DATE_FORMAT, date, format);
|
||||
}else {
|
||||
whereName = originName;
|
||||
}
|
||||
|
||||
}
|
||||
if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) {
|
||||
if (request.getOperator().equals("between")) {
|
||||
whereName = originName;
|
||||
|
||||
@@ -1300,7 +1300,7 @@ public class MysqlQueryProvider extends QueryProvider {
|
||||
|
||||
if (field.getDeType() == 1) {
|
||||
String format = transDateFormat(request.getDateStyle(), request.getDatePattern());
|
||||
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5 || field.getDeExtractType() == 1) {
|
||||
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) {
|
||||
String date = String.format(MySQLConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : MysqlConstants.DEFAULT_DATE_FORMAT);
|
||||
if (request.getOperator().equals("between")) {
|
||||
whereName = date;
|
||||
@@ -1308,6 +1308,9 @@ public class MysqlQueryProvider extends QueryProvider {
|
||||
whereName = String.format(MySQLConstants.DATE_FORMAT, date, format);
|
||||
}
|
||||
}
|
||||
if (field.getDeExtractType() == 1) {
|
||||
whereName = originName;
|
||||
}
|
||||
if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) {
|
||||
if (request.getOperator().equals("between")) {
|
||||
whereName = originName;
|
||||
|
||||
@@ -1342,7 +1342,7 @@ public class EsQueryProvider extends QueryProvider {
|
||||
whereName = String.format(EsSqlLConstants.DATETIME_FORMAT, cast, format);
|
||||
}
|
||||
if (field.getDeExtractType() == 1) {
|
||||
whereName = String.format(EsSqlLConstants.DATETIME_FORMAT, originName, format);
|
||||
whereName = originName;
|
||||
}
|
||||
} else if (field.getDeType() == 2 || field.getDeType() == 3) {
|
||||
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) {
|
||||
|
||||
@@ -1299,12 +1299,7 @@ public class HiveQueryProvider extends QueryProvider {
|
||||
whereName = String.format(HiveConstants.FROM_UNIXTIME, cast, format);
|
||||
}
|
||||
if (field.getDeExtractType() == DeTypeConstants.DE_TIME) {
|
||||
if (request.getOperator().equals("between")) {
|
||||
whereName = originName;
|
||||
} else {
|
||||
whereName = String.format(HiveConstants.DATE_FORMAT, originName, format);
|
||||
}
|
||||
|
||||
whereName = originName;
|
||||
}
|
||||
} else if (field.getDeType() == 2 || field.getDeType() == 3) {
|
||||
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) {
|
||||
|
||||
@@ -1314,11 +1314,7 @@ public class ImpalaQueryProvider extends QueryProvider {
|
||||
}
|
||||
}
|
||||
if (field.getDeExtractType() == DeTypeConstants.DE_TIME) {
|
||||
if (request.getOperator().equals("between")) {
|
||||
whereName = originName;
|
||||
} else {
|
||||
whereName = String.format(ImpalaConstants.DATE_FORMAT, originName, format);
|
||||
}
|
||||
whereName = originName;
|
||||
}
|
||||
} else if (field.getDeType() == 2 || field.getDeType() == 3) {
|
||||
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) {
|
||||
|
||||
@@ -1330,7 +1330,7 @@ public class MysqlQueryProvider extends QueryProvider {
|
||||
|
||||
if (field.getDeType() == 1) {
|
||||
String format = transDateFormat(request.getDateStyle(), request.getDatePattern());
|
||||
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5 || field.getDeExtractType() == 1) {
|
||||
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) {
|
||||
String date;
|
||||
if (field.getType().equalsIgnoreCase("YEAR") || StringUtils.equalsIgnoreCase(field.getDateFormat(), "%Y")) {
|
||||
date = String.format(MySQLConstants.DATE_FORMAT, "CONCAT(" + originName + ",'-01-01')", StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : MySQLConstants.DEFAULT_DATE_FORMAT);
|
||||
@@ -1350,6 +1350,21 @@ public class MysqlQueryProvider extends QueryProvider {
|
||||
}
|
||||
|
||||
}
|
||||
if (field.getDeExtractType() == 1) {
|
||||
String date;
|
||||
if (field.getType().equalsIgnoreCase("YEAR") || StringUtils.equalsIgnoreCase(field.getDateFormat(), "%Y")) {
|
||||
date = String.format(MySQLConstants.DATE_FORMAT, "CONCAT(" + originName + ",'-01-01')", StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : MySQLConstants.DEFAULT_DATE_FORMAT);
|
||||
} else {
|
||||
date = originName;
|
||||
}
|
||||
if (StringUtils.equalsIgnoreCase(request.getDateStyle(), "y_Q")) {
|
||||
whereName = String.format(format,
|
||||
String.format(MySQLConstants.DATE_FORMAT, originName, "%Y"),
|
||||
String.format(MySQLConstants.QUARTER, String.format(MySQLConstants.DATE_FORMAT, originName, MySQLConstants.DEFAULT_DATE_FORMAT)));
|
||||
} else {
|
||||
whereName = date;
|
||||
}
|
||||
}
|
||||
if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) {
|
||||
if (request.getOperator().equals("between")) {
|
||||
whereName = originName;
|
||||
|
||||
@@ -1487,11 +1487,7 @@ public class OracleQueryProvider extends QueryProvider {
|
||||
}
|
||||
}
|
||||
if (field.getDeExtractType() == 1) {
|
||||
if (!request.getOperator().equals("between")) {
|
||||
whereName = String.format(OracleConstants.TO_CHAR, originName, format);
|
||||
} else {
|
||||
whereName = originName;
|
||||
}
|
||||
whereName = originName;
|
||||
}
|
||||
|
||||
} else if (field.getDeType() == 2 || field.getDeType() == 3) {
|
||||
|
||||
@@ -1339,12 +1339,7 @@ public class PgQueryProvider extends QueryProvider {
|
||||
}
|
||||
}
|
||||
if (field.getDeExtractType() == 1) {
|
||||
if (request.getOperator().equals("between")) {
|
||||
whereName = originName;
|
||||
} else {
|
||||
whereName = String.format(PgConstants.DATE_FORMAT, originName, format);
|
||||
}
|
||||
|
||||
whereName = originName;
|
||||
}
|
||||
} else if (field.getDeType() == 2 || field.getDeType() == 3) {
|
||||
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) {
|
||||
|
||||
@@ -1325,11 +1325,7 @@ public class RedshiftQueryProvider extends QueryProvider {
|
||||
}
|
||||
}
|
||||
if (field.getDeExtractType() == 1) {
|
||||
if (request.getOperator().equals("between")) {
|
||||
whereName = originName;
|
||||
} else {
|
||||
whereName = String.format(PgConstants.DATE_FORMAT, originName, format);
|
||||
}
|
||||
whereName = originName;
|
||||
}
|
||||
} else if (field.getDeType() == 2 || field.getDeType() == 3) {
|
||||
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) {
|
||||
|
||||
@@ -529,14 +529,21 @@ public class SqlserverQueryProvider extends QueryProvider {
|
||||
return originTableInfo("(" + sqlFix(sql) + ")", xAxis, fieldCustomFilter, rowPermissionsTree, extFilterRequestList, null, view, needOrder, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSQLWithPage(boolean isTable, String sql, List<ChartViewFieldDTO> xAxis, FilterTreeObj fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<ChartExtFilterRequest> extFilterRequestList, Datasource ds, ChartViewWithBLOBs view, PageInfo pageInfo) {
|
||||
boolean isPage = (pageInfo.getGoPage() != null && pageInfo.getPageSize() != null);
|
||||
String limit = (isPage ? " OFFSET " + (pageInfo.getGoPage() - 1) * pageInfo.getPageSize() + " ROW FETCH NEXT " + pageInfo.getPageSize() + " ROW ONLY " : "");
|
||||
if (isTable) {
|
||||
return originTableInfo(sql, xAxis, fieldCustomFilter, rowPermissionsTree, extFilterRequestList, ds, view, true, !isPage) + limit;
|
||||
if (Integer.valueOf(ds.getVersion()) < 11) {
|
||||
if (isTable) {
|
||||
return getSQLTableInfo(sql, xAxis, fieldCustomFilter, rowPermissionsTree, extFilterRequestList, ds, view);
|
||||
} else {
|
||||
return getSQLAsTmpTableInfo(sql, xAxis, fieldCustomFilter, rowPermissionsTree, extFilterRequestList, ds, view);
|
||||
}
|
||||
} else {
|
||||
return originTableInfo("(" + sqlFix(sql) + ")", xAxis, fieldCustomFilter, rowPermissionsTree, extFilterRequestList, ds, view, true, !isPage) + limit;
|
||||
boolean isPage = (pageInfo.getGoPage() != null && pageInfo.getPageSize() != null);
|
||||
String limit = (isPage ? " OFFSET " + (pageInfo.getGoPage() - 1) * pageInfo.getPageSize() + " ROW FETCH NEXT " + pageInfo.getPageSize() + " ROW ONLY " : "");
|
||||
if (isTable) {
|
||||
return originTableInfo(sql, xAxis, fieldCustomFilter, rowPermissionsTree, extFilterRequestList, ds, view, true, !isPage) + limit;
|
||||
} else {
|
||||
return originTableInfo("(" + sqlFix(sql) + ")", xAxis, fieldCustomFilter, rowPermissionsTree, extFilterRequestList, ds, view, true, !isPage) + limit;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -639,8 +639,6 @@ public class ChartViewService {
|
||||
}
|
||||
Type tokenType = new TypeToken<List<ChartViewFieldDTO>>() {
|
||||
}.getType();
|
||||
// Type filterTokenType = new TypeToken<List<ChartFieldCustomFilterDTO>>() {
|
||||
// }.getType();
|
||||
|
||||
List<ChartViewFieldDTO> viewFields = gson.fromJson(view.getViewFields(), tokenType);
|
||||
final Map<String, List<ChartViewFieldDTO>> extFieldsMap = new LinkedHashMap<>();
|
||||
@@ -709,7 +707,6 @@ public class ChartViewService {
|
||||
//将没有权限的列删掉
|
||||
List<String> dataeaseNames = columnPermissionFields.stream().map(DatasetTableField::getDataeaseName).collect(Collectors.toList());
|
||||
dataeaseNames.add("*");
|
||||
// fieldCustomFilter = fieldCustomFilter.stream().filter(item -> chartViewFieldNameList.contains(item.getDataeaseName()) || (!desensitizationList.keySet().contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName()))).collect(Collectors.toList());
|
||||
extStack = extStack.stream().filter(item -> chartViewFieldNameList.contains(item.getDataeaseName()) || (!desensitizationList.keySet().contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName()))).collect(Collectors.toList());
|
||||
extBubble = extBubble.stream().filter(item -> chartViewFieldNameList.contains(item.getDataeaseName()) || (!desensitizationList.keySet().contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName()))).collect(Collectors.toList());
|
||||
drill = drill.stream().filter(item -> chartViewFieldNameList.contains(item.getDataeaseName()) || (!desensitizationList.keySet().contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName()))).collect(Collectors.toList());
|
||||
@@ -717,9 +714,6 @@ public class ChartViewService {
|
||||
//行权限
|
||||
List<DataSetRowPermissionsTreeDTO> rowPermissionsTree = permissionsTreeService.getRowPermissionsTree(fields, table, chartExtRequest.getUser());
|
||||
|
||||
/*for (ChartFieldCustomFilterDTO ele : fieldCustomFilter) {
|
||||
ele.setField(dataSetTableFieldsService.get(ele.getId()));
|
||||
}*/
|
||||
chartFilterTreeService.searchFieldAndSet(fieldCustomFilter);
|
||||
|
||||
if (CollectionUtils.isEmpty(xAxis) && CollectionUtils.isEmpty(yAxis)) {
|
||||
@@ -1043,17 +1037,6 @@ public class ChartViewService {
|
||||
assistFields = getAssistFields(dynamicAssistFields, yAxis, xAxis);
|
||||
}
|
||||
|
||||
// 处理过滤条件中的单引号
|
||||
/*fieldCustomFilter = fieldCustomFilter.stream().peek(ele -> {
|
||||
if (CollectionUtils.isNotEmpty(ele.getEnumCheckField())) {
|
||||
List<String> collect = ele.getEnumCheckField().stream().map(SQLUtils::transKeyword).collect(Collectors.toList());
|
||||
ele.setEnumCheckField(collect);
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(ele.getFilter())) {
|
||||
List<ChartCustomFilterItemDTO> collect = ele.getFilter().stream().peek(f -> f.setValue(SQLUtils.transKeyword(f.getValue()))).collect(Collectors.toList());
|
||||
ele.setFilter(collect);
|
||||
}
|
||||
}).collect(Collectors.toList());*/
|
||||
fieldCustomFilter = chartFilterTreeService.charReplace(fieldCustomFilter);
|
||||
|
||||
extFilterList = extFilterList.stream().peek(ele -> {
|
||||
|
||||
@@ -42,6 +42,7 @@ import io.dataease.plugins.common.exception.DataEaseException;
|
||||
import io.dataease.plugins.common.request.datasource.DatasourceRequest;
|
||||
import io.dataease.plugins.common.util.SpringContextUtil;
|
||||
import io.dataease.plugins.datasource.entity.JdbcConfiguration;
|
||||
import io.dataease.plugins.datasource.entity.Status;
|
||||
import io.dataease.plugins.datasource.provider.Provider;
|
||||
import io.dataease.provider.ProviderFactory;
|
||||
import io.dataease.provider.datasource.ApiProvider;
|
||||
@@ -52,6 +53,8 @@ import io.dataease.service.sys.SysAuthService;
|
||||
import io.dataease.service.system.SystemParameterService;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.zookeeper.data.Stat;
|
||||
import org.mozilla.javascript.EcmaError;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
@@ -115,7 +118,9 @@ public class DatasourceService {
|
||||
datasource.setUpdateTime(currentTimeMillis);
|
||||
datasource.setCreateTime(currentTimeMillis);
|
||||
datasource.setCreateBy(String.valueOf(AuthUtils.getUser().getUsername()));
|
||||
checkAndUpdateDatasourceStatus(datasource);
|
||||
Status status = checkDatasourceStatus(datasource);
|
||||
datasource.setStatus(status.getStatus());
|
||||
datasource.setVersion(status.getVersion());
|
||||
datasourceMapper.insertSelective(datasource);
|
||||
handleConnectionPool(datasource, "add");
|
||||
sysAuthService.copyAuth(datasource.getId(), SysAuthConstants.AUTH_SOURCE_TYPE_DATASOURCE);
|
||||
@@ -277,7 +282,9 @@ public class DatasourceService {
|
||||
public void updateDatasource(String id, Datasource datasource) {
|
||||
DatasourceExample example = new DatasourceExample();
|
||||
example.createCriteria().andIdEqualTo(id);
|
||||
checkAndUpdateDatasourceStatus(datasource);
|
||||
Status status = checkDatasourceStatus(datasource);
|
||||
datasource.setStatus(status.getStatus());
|
||||
datasource.setVersion(status.getVersion());
|
||||
datasourceMapper.updateByExampleSelective(datasource, example);
|
||||
handleConnectionPool(id);
|
||||
|
||||
@@ -327,15 +334,15 @@ public class DatasourceService {
|
||||
datasourceProvider.checkConfiguration(datasource);
|
||||
DatasourceRequest datasourceRequest = new DatasourceRequest();
|
||||
datasourceRequest.setDatasource(datasource);
|
||||
String datasourceStatus = datasourceProvider.checkStatus(datasourceRequest);
|
||||
Status datasourceStatus = datasourceProvider.checkDsStatus(datasourceRequest);
|
||||
if (datasource.getType().equalsIgnoreCase("api")) {
|
||||
int success = 0;
|
||||
List<ApiDefinition> apiDefinitionList = new Gson().fromJson(datasource.getConfiguration(), new TypeToken<List<ApiDefinition>>() {
|
||||
}.getType());
|
||||
List<ApiDefinition> apiDefinitionListWithStatus = new ArrayList<>();
|
||||
|
||||
if (StringUtils.isNotEmpty(datasourceStatus)) {
|
||||
JsonObject apiItemStatuses = JsonParser.parseString(datasourceStatus).getAsJsonObject();
|
||||
if (StringUtils.isNotEmpty(datasourceStatus.getStatus())) {
|
||||
JsonObject apiItemStatuses = JsonParser.parseString(datasourceStatus.getStatus()).getAsJsonObject();
|
||||
for (ApiDefinition apiDefinition : apiDefinitionList) {
|
||||
String status = apiItemStatuses.get(apiDefinition.getName()).getAsString();
|
||||
apiDefinition.setStatus(status);
|
||||
@@ -348,7 +355,7 @@ public class DatasourceService {
|
||||
|
||||
datasourceDTO.setApiConfiguration(apiDefinitionListWithStatus);
|
||||
if (success == apiDefinitionList.size()) {
|
||||
datasource.setStatus(datasourceStatus);
|
||||
datasource.setStatus(datasourceStatus.getStatus());
|
||||
return ResultHolder.success(datasourceDTO);
|
||||
}
|
||||
if (success > 0 && success < apiDefinitionList.size()) {
|
||||
@@ -367,16 +374,16 @@ public class DatasourceService {
|
||||
if (datasource == null) {
|
||||
return ResultHolder.error("Can not find datasource: " + datasourceId);
|
||||
}
|
||||
String datasourceStatus = null;
|
||||
Status datasourceStatus = new Status();
|
||||
try {
|
||||
Provider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
|
||||
DatasourceRequest datasourceRequest = new DatasourceRequest();
|
||||
datasourceRequest.setDatasource(datasource);
|
||||
datasourceStatus = datasourceProvider.checkStatus(datasourceRequest);
|
||||
datasourceStatus = datasourceProvider.checkDsStatus(datasourceRequest);
|
||||
if (datasource.getType().equalsIgnoreCase("api")) {
|
||||
List<ApiDefinition> apiDefinitionList = new Gson().fromJson(datasource.getConfiguration(), new TypeToken<List<ApiDefinition>>() {
|
||||
}.getType());
|
||||
JsonObject apiItemStatuses = JsonParser.parseString(datasourceStatus).getAsJsonObject();
|
||||
JsonObject apiItemStatuses = JsonParser.parseString(datasourceStatus.getStatus()).getAsJsonObject();
|
||||
int success = 0;
|
||||
for (ApiDefinition apiDefinition : apiDefinitionList) {
|
||||
String status = apiItemStatuses.get(apiDefinition.getName()).getAsString();
|
||||
@@ -386,7 +393,7 @@ public class DatasourceService {
|
||||
}
|
||||
}
|
||||
if (success == apiDefinitionList.size()) {
|
||||
datasource.setStatus(datasourceStatus);
|
||||
datasource.setStatus(datasourceStatus.getStatus());
|
||||
return ResultHolder.success(datasource);
|
||||
}
|
||||
if (success > 0 && success < apiDefinitionList.size()) {
|
||||
@@ -398,14 +405,14 @@ public class DatasourceService {
|
||||
return ResultHolder.success("Success");
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
datasourceStatus = "Error";
|
||||
datasourceStatus.setStatus("Error");
|
||||
return ResultHolder.error(Translator.get("I18N_DS_INVALID") + ": " + e.getMessage());
|
||||
} finally {
|
||||
Datasource record = new Datasource();
|
||||
record.setStatus(datasourceStatus);
|
||||
record.setStatus(datasourceStatus.getStatus());
|
||||
record.setVersion(datasourceStatus.getVersion());
|
||||
DatasourceExample example = new DatasourceExample();
|
||||
example.createCriteria().andIdEqualTo(datasource.getId());
|
||||
System.out.println(new Gson().toJson(record));
|
||||
datasourceMapper.updateByExampleSelective(record, example);
|
||||
}
|
||||
}
|
||||
@@ -426,7 +433,7 @@ public class DatasourceService {
|
||||
DatasourceRequest datasourceRequest = new DatasourceRequest();
|
||||
datasourceRequest.setDatasource(ds);
|
||||
if (!ds.getType().equalsIgnoreCase(DatasetType.API.name())) {
|
||||
datasourceProvider.checkStatus(datasourceRequest);
|
||||
datasourceProvider.checkDsStatus(datasourceRequest);
|
||||
}
|
||||
|
||||
List<TableDesc> tables = datasourceProvider.getTables(datasourceRequest);
|
||||
@@ -458,6 +465,15 @@ public class DatasourceService {
|
||||
List<Datasource> datasources = datasourceMapper.selectByExampleWithBLOBs(new DatasourceExample());
|
||||
datasources.forEach(datasource -> {
|
||||
commonThreadPool.addTask(() -> {
|
||||
try {
|
||||
DatasourceExample example = new DatasourceExample();
|
||||
example.createCriteria().andIdEqualTo(datasource.getId());
|
||||
Status status = checkDatasourceStatus(datasource);
|
||||
Datasource record = new Datasource();
|
||||
record.setVersion(status.getVersion());
|
||||
record.setStatus(status.getStatus());
|
||||
datasourceMapper.updateByExampleSelective(record, example);
|
||||
}catch (Exception ignore){}
|
||||
try {
|
||||
handleConnectionPool(datasource, "add");
|
||||
} catch (Exception e) {
|
||||
@@ -515,16 +531,17 @@ public class DatasourceService {
|
||||
return datasourceMapper.selectByExampleWithBLOBs(example);
|
||||
}
|
||||
|
||||
public void checkAndUpdateDatasourceStatus(Datasource datasource) {
|
||||
public Status checkDatasourceStatus(Datasource datasource) {
|
||||
Status status = new Status();
|
||||
try {
|
||||
Provider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
|
||||
DatasourceRequest datasourceRequest = new DatasourceRequest();
|
||||
datasourceRequest.setDatasource(datasource);
|
||||
String status = datasourceProvider.checkStatus(datasourceRequest);
|
||||
datasource.setStatus(status);
|
||||
status = datasourceProvider.checkDsStatus(datasourceRequest);
|
||||
} catch (Exception e) {
|
||||
datasource.setStatus("Error");
|
||||
status.setStatus("Error");
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
private void checkAndUpdateDatasourceStatus(Datasource datasource, Boolean withMsg) {
|
||||
@@ -535,8 +552,9 @@ public class DatasourceService {
|
||||
Provider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
|
||||
DatasourceRequest datasourceRequest = new DatasourceRequest();
|
||||
datasourceRequest.setDatasource(datasource);
|
||||
String status = datasourceProvider.checkStatus(datasourceRequest);
|
||||
record.setStatus(status);
|
||||
Status status = datasourceProvider.checkDsStatus(datasourceRequest);
|
||||
datasource.setStatus(status.getStatus());
|
||||
datasource.setVersion(status.getVersion());
|
||||
datasourceMapper.updateByExampleSelective(record, example);
|
||||
} catch (Exception e) {
|
||||
Datasource temp = datasourceMapper.selectByPrimaryKey(datasource.getId());
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
ALTER TABLE `datasource`
|
||||
ADD COLUMN `version` varchar(255) NULL COMMENT '版本' AFTER `status`;
|
||||
|
||||
@@ -368,7 +368,7 @@ export default {
|
||||
this.showParams = true
|
||||
this.isRangeParamWidget = this.widget.isRangeParamWidget && this.widget.isRangeParamWidget()
|
||||
}
|
||||
if ('textInputWidget,timeYearWidget,timeMonthWidget,timeDateWidget,textSelectWidget,numberSelectWidget'.indexOf(this.widget.name) !== -1) {
|
||||
if ('textInputWidget,timeYearWidget,timeMonthWidget,timeDateWidget,textSelectWidget,numberSelectWidget,numberSelectGridWidget,textSelectGridWidget'.indexOf(this.widget.name) !== -1) {
|
||||
this.showParams = true
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user