diff --git a/core/backend/pom.xml b/core/backend/pom.xml
index 0c95790bef..ec135f10b9 100644
--- a/core/backend/pom.xml
+++ b/core/backend/pom.xml
@@ -109,7 +109,7 @@
com.github.jsqlparser
jsqlparser
- 4.6
+ 4.8
org.apache.shiro
diff --git a/core/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java b/core/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java
index 28847c937f..2a04280eb9 100644
--- a/core/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java
+++ b/core/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java
@@ -69,6 +69,7 @@ import net.sf.jsqlparser.parser.CCJSqlParserUtil;
import net.sf.jsqlparser.statement.Statement;
import net.sf.jsqlparser.statement.select.*;
import net.sf.jsqlparser.util.deparser.ExpressionDeParser;
+import net.sf.jsqlparser.util.deparser.SelectDeParser;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
@@ -179,8 +180,7 @@ public class DataSetTableService {
}
private void extractData(DataSetTableRequest datasetTable) throws Exception {
- if (datasetTable.getMode() == 1 && StringUtils.isNotEmpty(datasetTable.getSyncType())
- && datasetTable.getSyncType().equalsIgnoreCase("sync_now")) {
+ if (datasetTable.getMode() == 1 && StringUtils.isNotEmpty(datasetTable.getSyncType()) && datasetTable.getSyncType().equalsIgnoreCase("sync_now")) {
DataSetTaskRequest dataSetTaskRequest = new DataSetTaskRequest();
DatasetTableTask datasetTableTask = new DatasetTableTask();
datasetTableTask.setTableId(datasetTable.getId());
@@ -203,8 +203,7 @@ public class DataSetTableService {
if (StringUtils.isEmpty(datasetTable.getId())) {
List list = new ArrayList<>();
if (datasetTable.isMergeSheet()) {
- Map> map = datasetTable.getSheets().stream()
- .collect(Collectors.groupingBy(ExcelSheetData::getFieldsMd5));
+ Map> map = datasetTable.getSheets().stream().collect(Collectors.groupingBy(ExcelSheetData::getFieldsMd5));
for (String s : map.keySet()) {
DataSetTableRequest sheetTable = new DataSetTableRequest();
BeanUtils.copyBean(sheetTable, datasetTable);
@@ -215,8 +214,7 @@ public class DataSetTableService {
sheetTable.setName(excelSheetDataList.get(0).getDatasetName());
checkName(sheetTable);
excelSheetDataList.forEach(excelSheetData -> {
- String[] fieldArray = excelSheetData.getFields().stream().map(TableField::getFieldName)
- .toArray(String[]::new);
+ String[] fieldArray = excelSheetData.getFields().stream().map(TableField::getFieldName).toArray(String[]::new);
checkIsRepeat(fieldArray);
excelSheetData.setData(null);
excelSheetData.setJsonArray(null);
@@ -244,13 +242,10 @@ public class DataSetTableService {
list.add(sheetTable);
DeLogUtils.save(SysLogConstants.OPERATE_TYPE.CREATE, SysLogConstants.SOURCE_TYPE.DATASET, datasetTable.getId(), datasetTable.getSceneId(), null, null);
}
- datasetIdList.forEach(datasetId -> commonThreadPool.addTask(() ->
- extractDataService.extractExcelData(datasetId, "all_scope", "初始导入",
- null, datasetIdList)));
+ datasetIdList.forEach(datasetId -> commonThreadPool.addTask(() -> extractDataService.extractExcelData(datasetId, "all_scope", "初始导入", null, datasetIdList)));
} else {
for (ExcelSheetData sheet : datasetTable.getSheets()) {
- String[] fieldArray = sheet.getFields().stream().map(TableField::getFieldName)
- .toArray(String[]::new);
+ String[] fieldArray = sheet.getFields().stream().map(TableField::getFieldName).toArray(String[]::new);
checkIsRepeat(fieldArray);
}
@@ -276,22 +271,18 @@ public class DataSetTableService {
list.add(sheetTable);
DeLogUtils.save(SysLogConstants.OPERATE_TYPE.MODIFY, SysLogConstants.SOURCE_TYPE.DATASET, datasetTable.getId(), datasetTable.getSceneId(), null, null);
}
- datasetIdList.forEach(datasetId -> commonThreadPool.addTask(() ->
- extractDataService.extractExcelData(datasetId, "all_scope", "初始导入",
- null, datasetIdList)));
+ datasetIdList.forEach(datasetId -> commonThreadPool.addTask(() -> extractDataService.extractExcelData(datasetId, "all_scope", "初始导入", null, datasetIdList)));
}
return list;
}
List excelSheetDataList = new ArrayList<>();
- List oldFields = datasetTable.getSheets().get(0).getFields().stream().map(TableField::getRemarks)
- .collect(Collectors.toList());
+ List oldFields = datasetTable.getSheets().get(0).getFields().stream().map(TableField::getRemarks).collect(Collectors.toList());
for (ExcelSheetData sheet : datasetTable.getSheets()) {
// 替换时,
if (datasetTable.getEditType() == 0) {
- List newFields = sheet.getFields().stream().map(TableField::getRemarks)
- .collect(Collectors.toList());
+ List newFields = sheet.getFields().stream().map(TableField::getRemarks).collect(Collectors.toList());
if (!oldFields.equals(newFields)) {
DataEaseException.throwException(Translator.get("i18n_excel_column_inconsistent"));
}
@@ -310,12 +301,9 @@ public class DataSetTableService {
datasetTableMapper.updateByPrimaryKeySelective(datasetTable);
// 替換時,先不刪除旧字段;同步成功后再删除
if (datasetTable.getEditType() == 0) {
- commonThreadPool.addTask(() -> extractDataService.extractExcelData(datasetTable.getId(), "all_scope", "替换",
- saveExcelTableField(datasetTable.getId(), datasetTable.getSheets().get(0).getFields(), false),
- Collections.singletonList(datasetTable.getId())));
+ commonThreadPool.addTask(() -> extractDataService.extractExcelData(datasetTable.getId(), "all_scope", "替换", saveExcelTableField(datasetTable.getId(), datasetTable.getSheets().get(0).getFields(), false), Collections.singletonList(datasetTable.getId())));
} else if (datasetTable.getEditType() == 1) {
- commonThreadPool.addTask(() -> extractDataService.extractExcelData(datasetTable.getId(), "add_scope", "追加",
- null, Collections.singletonList(datasetTable.getId())));
+ commonThreadPool.addTask(() -> extractDataService.extractExcelData(datasetTable.getId(), "add_scope", "追加", null, Collections.singletonList(datasetTable.getId())));
}
DeLogUtils.save(SysLogConstants.OPERATE_TYPE.MODIFY, SysLogConstants.SOURCE_TYPE.DATASET, datasetTable.getId(), datasetTable.getSceneId(), null, null);
return Collections.singletonList(datasetTable);
@@ -353,9 +341,7 @@ public class DataSetTableService {
if (datasetTable.getIsRename() == null || !datasetTable.getIsRename()) {
// 更新数据和字段
if (update == 1) {
- if (StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.SQL.name())
- || StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.CUSTOM.name())
- || StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.UNION.name())) {
+ if (StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.SQL.name()) || StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.CUSTOM.name()) || StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.UNION.name())) {
saveTableField(datasetTable);
}
extractData(datasetTable);
@@ -398,8 +384,7 @@ public class DataSetTableService {
DatasourceRequest datasourceRequest = new DatasourceRequest();
datasourceRequest.setDatasource(dorisDatasource);
DDLProvider ddlProvider = ProviderFactory.getDDLProvider(dorisDatasource.getType());
- if (StringUtils.equalsIgnoreCase(DatasetType.CUSTOM.name(), table.getType())
- || StringUtils.equalsIgnoreCase(DatasetType.UNION.name(), table.getType())) {
+ if (StringUtils.equalsIgnoreCase(DatasetType.CUSTOM.name(), table.getType()) || StringUtils.equalsIgnoreCase(DatasetType.UNION.name(), table.getType())) {
datasourceRequest.setQuery(ddlProvider.dropView(dorisTableName));
jdbcProvider.exec(datasourceRequest);
datasourceRequest.setQuery(ddlProvider.dropView(TableUtils.tmpName(dorisTableName)));
@@ -541,19 +526,7 @@ public class DataSetTableService {
}
});
// quota add count
- DatasetTableField count = DatasetTableField.builder()
- .id("count")
- .tableId(dataSetTableRequest.getId())
- .originName("*")
- .name(Translator.get("i18n_chart_count"))
- .dataeaseName("*")
- .type("INT")
- .checked(true)
- .columnIndex(999)
- .deType(2)
- .extField(1)
- .groupType("q")
- .build();
+ DatasetTableField count = DatasetTableField.builder().id("count").tableId(dataSetTableRequest.getId()).originName("*").name(Translator.get("i18n_chart_count")).dataeaseName("*").type("INT").checked(true).columnIndex(999).deType(2).extField(1).groupType("q").build();
quota.add(count);
Map> map = new HashMap<>();
@@ -563,12 +536,10 @@ public class DataSetTableService {
return map;
}
- public Map getPreviewData(DataSetTableRequest dataSetTableRequest, Integer page, Integer pageSize,
- List extFields, DatasetRowPermissionsTreeObj extTree) throws Exception {
+ public Map getPreviewData(DataSetTableRequest dataSetTableRequest, Integer page, Integer pageSize, List extFields, DatasetRowPermissionsTreeObj extTree) throws Exception {
Map map = new HashMap<>();
String syncStatus = "";
- DatasetTableField datasetTableField = DatasetTableField.builder().tableId(dataSetTableRequest.getId())
- .checked(Boolean.TRUE).build();
+ DatasetTableField datasetTableField = DatasetTableField.builder().tableId(dataSetTableRequest.getId()).checked(Boolean.TRUE).build();
List fields = dataSetTableFieldsService.list(datasetTableField);
if (CollectionUtils.isNotEmpty(extFields)) {
fields = extFields;
@@ -607,9 +578,7 @@ public class DataSetTableService {
dataSetPreviewPage.setShow(Integer.valueOf(dataSetTableRequest.getRow()));
dataSetPreviewPage.setPage(page);
dataSetPreviewPage.setPageSize(pageSize);
- int realSize = Integer.parseInt(dataSetTableRequest.getRow()) < pageSize
- ? Integer.parseInt(dataSetTableRequest.getRow())
- : pageSize;
+ int realSize = Integer.parseInt(dataSetTableRequest.getRow()) < pageSize ? Integer.parseInt(dataSetTableRequest.getRow()) : pageSize;
if (page == Integer.parseInt(dataSetTableRequest.getRow()) / pageSize + 1) {
realSize = Integer.parseInt(dataSetTableRequest.getRow()) % pageSize;
}
@@ -628,8 +597,7 @@ public class DataSetTableService {
String table = dataTableInfoDTO.getTable();
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
- datasourceRequest.setQuery(
- qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, null, rowPermissionsTree));
+ datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, null, rowPermissionsTree));
map.put("sql", java.util.Base64.getEncoder().encodeToString(datasourceRequest.getQuery().getBytes()));
datasourceRequest.setPage(page);
@@ -646,8 +614,7 @@ public class DataSetTableService {
}
try {
- datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields,
- Integer.valueOf(dataSetTableRequest.getRow()), false, ds, null, rowPermissionsTree));
+ datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds, null, rowPermissionsTree));
datasourceRequest.setPageable(false);
dataSetPreviewPage.setTotal(datasourceProvider.getData(datasourceRequest).size());
} catch (Exception e) {
@@ -672,8 +639,7 @@ public class DataSetTableService {
datasourceRequest.setDatasource(ds);
String table = TableUtils.tableName(dataSetTableRequest.getId());
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
- datasourceRequest.setQuery(
- qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, null, rowPermissionsTree));
+ datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, null, rowPermissionsTree));
map.put("sql", java.util.Base64.getEncoder().encodeToString(datasourceRequest.getQuery().getBytes()));
try {
data.addAll(jdbcProvider.getData(datasourceRequest));
@@ -682,8 +648,7 @@ public class DataSetTableService {
DataEaseException.throwException(Translator.get("i18n_ds_error") + "->" + e.getMessage());
}
try {
- datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields,
- Integer.valueOf(dataSetTableRequest.getRow()), false, ds, null, rowPermissionsTree));
+ datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds, null, rowPermissionsTree));
dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size());
} catch (Exception e) {
logger.error(e.getMessage());
@@ -707,8 +672,7 @@ public class DataSetTableService {
String sql = dataTableInfo.isBase64Encryption() ? new String(java.util.Base64.getDecoder().decode(dataTableInfo.getSql())) : dataTableInfo.getSql();
sql = handleVariableDefaultValue(sql, datasetTable.getSqlVariableDetails(), ds.getType(), false);
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
- datasourceRequest.setQuery(
- qp.createQuerySQLWithPage(sql, fields, page, pageSize, realSize, false, null, rowPermissionsTree));
+ datasourceRequest.setQuery(qp.createQuerySQLWithPage(sql, fields, page, pageSize, realSize, false, null, rowPermissionsTree));
map.put("sql", java.util.Base64.getEncoder().encodeToString(datasourceRequest.getQuery().getBytes()));
datasourceRequest.setPage(page);
datasourceRequest.setFetchSize(Integer.parseInt(dataSetTableRequest.getRow()));
@@ -725,8 +689,7 @@ public class DataSetTableService {
}
try {
datasourceRequest.setPageable(false);
- datasourceRequest.setQuery(qp.createQuerySqlWithLimit(sql, fields,
- Integer.valueOf(dataSetTableRequest.getRow()), false, null, rowPermissionsTree));
+ datasourceRequest.setQuery(qp.createQuerySqlWithLimit(sql, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, null, rowPermissionsTree));
dataSetPreviewPage.setTotal(datasourceProvider.getData(datasourceRequest).size());
} catch (Exception e) {
logger.error(e.getMessage());
@@ -743,8 +706,7 @@ public class DataSetTableService {
datasourceRequest.setDatasource(ds);
String table = TableUtils.tableName(dataSetTableRequest.getId());
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
- datasourceRequest.setQuery(
- qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, null, rowPermissionsTree));
+ datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, null, rowPermissionsTree));
map.put("sql", java.util.Base64.getEncoder().encodeToString(datasourceRequest.getQuery().getBytes()));
try {
data.addAll(jdbcProvider.getData(datasourceRequest));
@@ -753,8 +715,7 @@ public class DataSetTableService {
DataEaseException.throwException(Translator.get("i18n_ds_error") + "->" + e.getMessage());
}
try {
- datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields,
- Integer.valueOf(dataSetTableRequest.getRow()), false, ds, null, rowPermissionsTree));
+ datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds, null, rowPermissionsTree));
dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size());
} catch (Exception e) {
logger.error(e.getMessage());
@@ -772,8 +733,7 @@ public class DataSetTableService {
datasourceRequest.setDatasource(ds);
String table = TableUtils.tableName(dataSetTableRequest.getId());
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
- datasourceRequest.setQuery(
- qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, null, rowPermissionsTree));
+ datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, null, rowPermissionsTree));
map.put("sql", java.util.Base64.getEncoder().encodeToString(datasourceRequest.getQuery().getBytes()));
try {
data.addAll(jdbcProvider.getData(datasourceRequest));
@@ -782,8 +742,7 @@ public class DataSetTableService {
DataEaseException.throwException(Translator.get("i18n_ds_error") + "->" + e.getMessage());
}
try {
- datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields,
- Integer.valueOf(dataSetTableRequest.getRow()), false, ds, null, rowPermissionsTree));
+ datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds, null, rowPermissionsTree));
dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size());
} catch (Exception e) {
logger.error(e.getMessage());
@@ -809,8 +768,7 @@ public class DataSetTableService {
datasourceRequest.setDatasource(ds);
DataTableInfoDTO dt = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class);
- List list = dataSetTableUnionService
- .listByTableId(dt.getList().get(0).getTableId());
+ List list = dataSetTableUnionService.listByTableId(dt.getList().get(0).getTableId());
String sql = "";
try {
@@ -820,8 +778,7 @@ public class DataSetTableService {
DataEaseException.throwException(Translator.get("i18n_ds_error") + "->" + e.getMessage());
}
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
- datasourceRequest.setQuery(
- qp.createQuerySQLWithPage(sql, fields, page, pageSize, realSize, false, null, rowPermissionsTree));
+ datasourceRequest.setQuery(qp.createQuerySQLWithPage(sql, fields, page, pageSize, realSize, false, null, rowPermissionsTree));
map.put("sql", java.util.Base64.getEncoder().encodeToString(datasourceRequest.getQuery().getBytes()));
datasourceRequest.setPage(page);
datasourceRequest.setFetchSize(Integer.parseInt(dataSetTableRequest.getRow()));
@@ -837,8 +794,7 @@ public class DataSetTableService {
}
try {
datasourceRequest.setPageable(false);
- datasourceRequest.setQuery(qp.createQuerySqlWithLimit(sql, fields,
- Integer.valueOf(dataSetTableRequest.getRow()), false, null, rowPermissionsTree));
+ datasourceRequest.setQuery(qp.createQuerySqlWithLimit(sql, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, null, rowPermissionsTree));
dataSetPreviewPage.setTotal(datasourceProvider.getData(datasourceRequest).size());
} catch (Exception e) {
logger.error(e.getMessage());
@@ -851,8 +807,7 @@ public class DataSetTableService {
datasourceRequest.setDatasource(ds);
String table = TableUtils.tableName(dataSetTableRequest.getId());
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
- datasourceRequest.setQuery(
- qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, null, rowPermissionsTree));
+ datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, null, rowPermissionsTree));
map.put("sql", java.util.Base64.getEncoder().encodeToString(datasourceRequest.getQuery().getBytes()));
try {
data.addAll(jdbcProvider.getData(datasourceRequest));
@@ -862,8 +817,7 @@ public class DataSetTableService {
}
try {
- datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields,
- Integer.valueOf(dataSetTableRequest.getRow()), false, ds, null, rowPermissionsTree));
+ datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds, null, rowPermissionsTree));
dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size());
} catch (Exception e) {
logger.error(e.getMessage());
@@ -890,8 +844,7 @@ public class DataSetTableService {
DataEaseException.throwException(Translator.get("i18n_ds_error") + "->" + e.getMessage());
}
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
- datasourceRequest.setQuery(
- qp.createQuerySQLWithPage(sql, fields, page, pageSize, realSize, false, null, rowPermissionsTree));
+ datasourceRequest.setQuery(qp.createQuerySQLWithPage(sql, fields, page, pageSize, realSize, false, null, rowPermissionsTree));
map.put("sql", java.util.Base64.getEncoder().encodeToString(datasourceRequest.getQuery().getBytes()));
datasourceRequest.setPage(page);
datasourceRequest.setFetchSize(Integer.parseInt(dataSetTableRequest.getRow()));
@@ -907,8 +860,7 @@ public class DataSetTableService {
}
try {
datasourceRequest.setPageable(false);
- datasourceRequest.setQuery(qp.createQuerySqlWithLimit(sql, fields,
- Integer.valueOf(dataSetTableRequest.getRow()), false, null, rowPermissionsTree));
+ datasourceRequest.setQuery(qp.createQuerySqlWithLimit(sql, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, null, rowPermissionsTree));
dataSetPreviewPage.setTotal(datasourceProvider.getData(datasourceRequest).size());
} catch (Exception e) {
logger.error(e.getMessage());
@@ -921,8 +873,7 @@ public class DataSetTableService {
datasourceRequest.setDatasource(ds);
String table = TableUtils.tableName(dataSetTableRequest.getId());
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
- datasourceRequest.setQuery(
- qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, null, rowPermissionsTree));
+ datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, null, rowPermissionsTree));
map.put("sql", java.util.Base64.getEncoder().encodeToString(datasourceRequest.getQuery().getBytes()));
try {
data.addAll(jdbcProvider.getData(datasourceRequest));
@@ -932,8 +883,7 @@ public class DataSetTableService {
}
try {
- datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields,
- Integer.valueOf(dataSetTableRequest.getRow()), false, ds, null, rowPermissionsTree));
+ datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds, null, rowPermissionsTree));
dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size());
} catch (Exception e) {
logger.error(e.getMessage());
@@ -1065,8 +1015,7 @@ public class DataSetTableService {
break;
}
}
- if (!isEdit && defaultsSqlVariableDetail != null && defaultsSqlVariableDetail.getDefaultValueScope() != null &&
- defaultsSqlVariableDetail.getDefaultValueScope().equals(SqlVariableDetails.DefaultValueScope.ALLSCOPE) && StringUtils.isNotEmpty(defaultsSqlVariableDetail.getDefaultValue())) {
+ if (!isEdit && defaultsSqlVariableDetail != null && defaultsSqlVariableDetail.getDefaultValueScope() != null && defaultsSqlVariableDetail.getDefaultValueScope().equals(SqlVariableDetails.DefaultValueScope.ALLSCOPE) && StringUtils.isNotEmpty(defaultsSqlVariableDetail.getDefaultValue())) {
sql = sql.replace(matcher.group(), defaultsSqlVariableDetail.getDefaultValue());
}
if (isEdit && defaultsSqlVariableDetail != null && StringUtils.isNotEmpty(defaultsSqlVariableDetail.getDefaultValue())) {
@@ -1122,17 +1071,16 @@ public class DataSetTableService {
}
private void handleSelectItems(PlainSelect plainSelect, String dsType) throws Exception {
- List selectItems = new ArrayList<>();
+ List> selectItems = new ArrayList<>();
for (SelectItem selectItem : plainSelect.getSelectItems()) {
try {
- SelectExpressionItem selectExpressionItem = (SelectExpressionItem) selectItem;
- if (selectExpressionItem.getExpression() instanceof SubSelect) {
- SubSelect subSelect = (SubSelect) selectExpressionItem.getExpression();
- Select select = (Select) CCJSqlParserUtil.parse(removeVariables(subSelect.getSelectBody().toString(), dsType));
- subSelect.setSelectBody(select.getSelectBody());
- ((SelectExpressionItem) selectItem).setExpression(subSelect);
+ if (selectItem.getExpression() instanceof ParenthesedSelect) {
+ ParenthesedSelect parenthesedSelect = (ParenthesedSelect) selectItem.getExpression();
+ parenthesedSelect.setSelect((Select) CCJSqlParserUtil.parse(removeVariables(((Select) selectItem.getExpression()).getPlainSelect().toString(), dsType)));
+ selectItem.setExpression(parenthesedSelect);
}
} catch (Exception e) {
+ e.printStackTrace();
}
selectItems.add(selectItem);
}
@@ -1140,69 +1088,24 @@ public class DataSetTableService {
}
private void handleFromItems(PlainSelect plainSelect, String dsType) throws Exception {
- FromItem fromItem = plainSelect.getFromItem();
- if (fromItem instanceof SubSelect) {
- SelectBody selectBody = ((SubSelect) fromItem).getSelectBody();
- SubSelect subSelect = new SubSelect();
+ FromItem fromItem = plainSelect.getFromItem();
+ if (fromItem instanceof ParenthesedSelect) {
+ PlainSelect selectBody = ((ParenthesedSelect) fromItem).getPlainSelect();
Select subSelectTmp = (Select) CCJSqlParserUtil.parse(removeVariables(selectBody.toString(), dsType));
- subSelect.setSelectBody(subSelectTmp.getSelectBody());
+ ((ParenthesedSelect) fromItem).setSelect(subSelectTmp.getSelectBody());
if (dsType.equals(DatasourceTypes.oracle.getType())) {
if (fromItem.getAlias() != null) {
- subSelect.setAlias(new Alias(fromItem.getAlias().toString(), false));
+ fromItem.setAlias(new Alias(fromItem.getAlias().toString(), false));
}
} else {
if (fromItem.getAlias() == null) {
throw new Exception("Failed to parse sql, Every derived table must have its own alias!");
}
- subSelect.setAlias(new Alias(fromItem.getAlias().toString(), false));
- }
- plainSelect.setFromItem(subSelect);
- }
- if (fromItem instanceof SubJoin) {
- SubJoin subJoin = (SubJoin) fromItem;
- if (subJoin.getLeft() instanceof SubSelect) {
- SelectBody selectBody = ((SubSelect) subJoin.getLeft()).getSelectBody();
- SubSelect subSelect = new SubSelect();
- Select subSelectTmp = (Select) CCJSqlParserUtil.parse(removeVariables(selectBody.toString(), dsType));
- PlainSelect subPlainSelect = ((PlainSelect) subSelectTmp.getSelectBody());
- subSelect.setSelectBody(subPlainSelect);
- if (dsType.equals(DatasourceTypes.oracle.getType())) {
- subSelect.setAlias(new Alias(subJoin.getLeft().getAlias().toString(), false));
- } else {
- if (subJoin.getLeft().getAlias() == null) {
- throw new Exception("Failed to parse sql, Every derived table must have its own alias!");
- }
- subSelect.setAlias(new Alias(subJoin.getLeft().getAlias().toString(), false));
- }
- subJoin.setLeft(subSelect);
- }
- List joinsList = new ArrayList<>();
- for (Join join : subJoin.getJoinList()) {
- FromItem rightItem = join.getRightItem();
- if (rightItem instanceof SubSelect) {
- SelectBody selectBody = ((SubSelect) rightItem).getSelectBody();
- SubSelect subSelect = new SubSelect();
- Select subSelectTmp = (Select) CCJSqlParserUtil.parse(removeVariables(selectBody.toString(), dsType));
- PlainSelect subPlainSelect = ((PlainSelect) subSelectTmp.getSelectBody());
- subSelect.setSelectBody(subPlainSelect);
- if (dsType.equals(DatasourceTypes.oracle.getType())) {
- subSelect.setAlias(new Alias(rightItem.getAlias().toString(), false));
- } else {
- if (rightItem.getAlias() == null) {
- throw new Exception("Failed to parse sql, Every derived table must have its own alias!");
- }
- subSelect.setAlias(new Alias(rightItem.getAlias().toString(), false));
- }
- join.setRightItem(subSelect);
- }
- joinsList.add(join);
- subJoin.setJoinList(joinsList);
-
+ fromItem.setAlias(new Alias(fromItem.getAlias().toString(), false));
}
plainSelect.setFromItem(fromItem);
}
-
}
private void handleJoins(PlainSelect plainSelect, String dsType) throws Exception {
@@ -1211,21 +1114,20 @@ public class DataSetTableService {
List joinsList = new ArrayList<>();
for (Join join : joins) {
FromItem rightItem = join.getRightItem();
- if (rightItem instanceof SubSelect) {
- SelectBody selectBody = ((SubSelect) rightItem).getSelectBody();
- SubSelect subSelect = new SubSelect();
+ if (rightItem instanceof ParenthesedSelect) {
+ PlainSelect selectBody = ((ParenthesedSelect) rightItem).getPlainSelect();
Select subSelectTmp = (Select) CCJSqlParserUtil.parse(removeVariables(selectBody.toString(), dsType));
PlainSelect subPlainSelect = ((PlainSelect) subSelectTmp.getSelectBody());
- subSelect.setSelectBody(subPlainSelect);
+ ((ParenthesedSelect) rightItem).setSelect(subPlainSelect);
if (dsType.equals(DatasourceTypes.oracle.getType())) {
- subSelect.setAlias(new Alias(rightItem.getAlias().toString(), false));
+ rightItem.setAlias(new Alias(rightItem.getAlias().toString(), false));
} else {
if (rightItem.getAlias() == null) {
throw new Exception("Failed to parse sql, Every derived table must have its own alias!");
}
- subSelect.setAlias(new Alias(rightItem.getAlias().toString(), false));
+ rightItem.setAlias(new Alias(rightItem.getAlias().toString(), false));
}
- join.setRightItem(subSelect);
+ join.setRightItem(rightItem);
}
joinsList.add(join);
}
@@ -1244,13 +1146,16 @@ public class DataSetTableService {
binaryExpression = (BinaryExpression) expr;
} catch (Exception e) {
}
+
if (binaryExpression != null) {
boolean hasSubBinaryExpression = binaryExpression instanceof AndExpression || binaryExpression instanceof OrExpression;
- if (!hasSubBinaryExpression &&!(binaryExpression.getLeftExpression() instanceof BinaryExpression) && !(binaryExpression.getLeftExpression() instanceof InExpression) && hasVariable(binaryExpression.getRightExpression().toString())) {
+
+ if (!hasSubBinaryExpression && !(binaryExpression.getLeftExpression() instanceof BinaryExpression) && !(binaryExpression.getLeftExpression() instanceof InExpression) && hasVariable(binaryExpression.getRightExpression().toString())) {
stringBuilder.append(SubstitutedSql);
} else {
expr.accept(getExpressionDeParser(stringBuilder));
}
+
} else {
expr.accept(getExpressionDeParser(stringBuilder));
}
@@ -1259,25 +1164,17 @@ public class DataSetTableService {
}
private String handleWith(PlainSelect plainSelect, Select select, String dsType) throws Exception {
- StringBuilder builder = new StringBuilder();
if (select != null && CollectionUtils.isNotEmpty(select.getWithItemsList())) {
- builder.append("WITH");
- builder.append(" ");
for (Iterator iter = select.getWithItemsList().iterator(); iter.hasNext(); ) {
WithItem withItem = iter.next();
- builder.append(withItem.getName()).append(" AS ( ").append(removeVariables(withItem.getSubSelect().toString(), dsType)).append(" ) ");
- if (iter.hasNext()) {
- builder.append(",");
- }
+ ParenthesedSelect parenthesedSelect = (ParenthesedSelect) withItem.getSelect();
+ parenthesedSelect.setSelect((Select) CCJSqlParserUtil.parse(removeVariables(parenthesedSelect.getSelect().toString(), dsType)));
}
}
-
- builder.append(" ").append(plainSelect);
- return builder.toString();
+ return plainSelect.toString();
}
-
public Map getDBPreview(DataSetTableRequest dataSetTableRequest) throws Exception {
Datasource ds = datasourceMapper.selectByPrimaryKey(dataSetTableRequest.getDataSourceId());
if (ds == null) {
@@ -1439,12 +1336,7 @@ public class DataSetTableService {
// 获取每个字段在当前de数据库中的name,作为sql查询后的remarks返回前端展示
for (DatasetTableField datasetTableField : fieldList) {
for (TableField tableField : fields) {
- if (StringUtils.equalsIgnoreCase(tableField.getFieldName(),
- TableUtils.fieldName(
- datasetTableField.getTableId() + "_" + datasetTableField.getDataeaseName()))
- || StringUtils.equalsIgnoreCase(tableField.getFieldName(),
- TableUtils.fieldNameShort(datasetTableField.getTableId() + "_"
- + datasetTableField.getOriginName()))) {
+ if (StringUtils.equalsIgnoreCase(tableField.getFieldName(), TableUtils.fieldName(datasetTableField.getTableId() + "_" + datasetTableField.getDataeaseName())) || StringUtils.equalsIgnoreCase(tableField.getFieldName(), TableUtils.fieldNameShort(datasetTableField.getTableId() + "_" + datasetTableField.getOriginName()))) {
tableField.setRemarks(datasetTableField.getName());
break;
}
@@ -1463,8 +1355,7 @@ public class DataSetTableService {
public Map getCustomPreview(DataSetTableRequest dataSetTableRequest) throws Exception {
DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class);
- List list = dataSetTableUnionService
- .listByTableId(dataTableInfoDTO.getList().get(0).getTableId());
+ List list = dataSetTableUnionService.listByTableId(dataTableInfoDTO.getList().get(0).getTableId());
String sql;
DatasourceRequest datasourceRequest = new DatasourceRequest();
@@ -1501,15 +1392,10 @@ public class DataSetTableService {
// 获取每个字段在当前de数据库中的name,作为sql查询后的remarks返回前端展示
List checkedFieldList = new ArrayList<>();
- dataTableInfoDTO.getList().forEach(
- ele -> checkedFieldList.addAll(dataSetTableFieldsService.getListByIds(ele.getCheckedFields())));
+ dataTableInfoDTO.getList().forEach(ele -> checkedFieldList.addAll(dataSetTableFieldsService.getListByIds(ele.getCheckedFields())));
for (DatasetTableField datasetTableField : checkedFieldList) {
for (TableField tableField : fields) {
- if (StringUtils.equalsIgnoreCase(tableField.getFieldName(),
- TableUtils.fieldName(
- datasetTableField.getTableId() + "_" + datasetTableField.getDataeaseName()))
- || StringUtils.equalsIgnoreCase(tableField.getFieldName(), TableUtils.fieldName(
- datasetTableField.getTableId() + "_" + datasetTableField.getOriginName()))) {
+ if (StringUtils.equalsIgnoreCase(tableField.getFieldName(), TableUtils.fieldName(datasetTableField.getTableId() + "_" + datasetTableField.getDataeaseName())) || StringUtils.equalsIgnoreCase(tableField.getFieldName(), TableUtils.fieldName(datasetTableField.getTableId() + "_" + datasetTableField.getOriginName()))) {
tableField.setRemarks(datasetTableField.getName());
break;
}
@@ -1537,10 +1423,7 @@ public class DataSetTableService {
if (CollectionUtils.isEmpty(fields)) {
throw new RuntimeException(Translator.get("i18n_cst_ds_tb_or_field_deleted"));
}
- String[] array = fields.stream()
- .map(f -> table + "." + f.getDataeaseName() + " AS "
- + TableUtils.fieldName(ele.getTableId() + "_" + f.getDataeaseName()))
- .toArray(String[]::new);
+ String[] array = fields.stream().map(f -> table + "." + f.getDataeaseName() + " AS " + TableUtils.fieldName(ele.getTableId() + "_" + f.getDataeaseName())).toArray(String[]::new);
customInfo.put(table, array);
});
DataTableInfoCustomUnion first = dataTableInfoDTO.getList().get(0);
@@ -1562,30 +1445,19 @@ public class DataSetTableService {
DataEaseException.throwException(Translator.get("i18n_dataset_field_delete"));
}
- join.append(convertUnionTypeToSQL(dto.getSourceUnionRelation()))
- .append(TableUtils.tableName(dto.getTargetTableId()))
- .append(" ON ")
- .append(TableUtils.tableName(dto.getSourceTableId())).append(".")
- .append(sourceField.getDataeaseName())
- .append(" = ")
- .append(TableUtils.tableName(dto.getTargetTableId())).append(".")
- .append(targetField.getDataeaseName());
+ join.append(convertUnionTypeToSQL(dto.getSourceUnionRelation())).append(TableUtils.tableName(dto.getTargetTableId())).append(" ON ").append(TableUtils.tableName(dto.getSourceTableId())).append(".").append(sourceField.getDataeaseName()).append(" = ").append(TableUtils.tableName(dto.getTargetTableId())).append(".").append(targetField.getDataeaseName());
}
}
}
if (StringUtils.isEmpty(f)) {
throw new RuntimeException(Translator.get("i18n_custom_ds_delete"));
}
- return MessageFormat.format("SELECT {0} FROM {1}", f, TableUtils.tableName(first.getTableId()))
- + join.toString();
+ return MessageFormat.format("SELECT {0} FROM {1}", f, TableUtils.tableName(first.getTableId())) + join.toString();
} else {
- if (StringUtils
- .isEmpty(StringUtils.join(customInfo.get(TableUtils.tableName(first.getTableId())), ","))) {
+ if (StringUtils.isEmpty(StringUtils.join(customInfo.get(TableUtils.tableName(first.getTableId())), ","))) {
throw new RuntimeException(Translator.get("i18n_custom_ds_delete"));
}
- return MessageFormat.format("SELECT {0} FROM {1}",
- StringUtils.join(customInfo.get(TableUtils.tableName(first.getTableId())), ","),
- TableUtils.tableName(first.getTableId()));
+ return MessageFormat.format("SELECT {0} FROM {1}", StringUtils.join(customInfo.get(TableUtils.tableName(first.getTableId())), ","), TableUtils.tableName(first.getTableId()));
}
}
@@ -1603,10 +1475,7 @@ public class DataSetTableService {
if (CollectionUtils.isEmpty(fields)) {
throw new RuntimeException(Translator.get("i18n_cst_ds_tb_or_field_deleted"));
}
- String[] array = fields.stream()
- .map(f -> String.format(keyword, table) + "." + String.format(keyword, f.getOriginName()) + " AS "
- + TableUtils.fieldName(ele.getTableId() + "_" + f.getOriginName()))
- .toArray(String[]::new);
+ String[] array = fields.stream().map(f -> String.format(keyword, table) + "." + String.format(keyword, f.getOriginName()) + " AS " + TableUtils.fieldName(ele.getTableId() + "_" + f.getOriginName())).toArray(String[]::new);
customInfo.put(table, array);
}
DataTableInfoCustomUnion first = dataTableInfoDTO.getList().get(0);
@@ -1630,19 +1499,10 @@ public class DataSetTableService {
DataEaseException.throwException(Translator.get("i18n_dataset_field_delete"));
}
DatasetTable sourceTable = datasetTableMapper.selectByPrimaryKey(dto.getSourceTableId());
- String sourceTableName = new Gson().fromJson(sourceTable.getInfo(), DataTableInfoDTO.class)
- .getTable();
+ String sourceTableName = new Gson().fromJson(sourceTable.getInfo(), DataTableInfoDTO.class).getTable();
DatasetTable targetTable = datasetTableMapper.selectByPrimaryKey(dto.getTargetTableId());
- String targetTableName = new Gson().fromJson(targetTable.getInfo(), DataTableInfoDTO.class)
- .getTable();
- join.append(convertUnionTypeToSQL(dto.getSourceUnionRelation()))
- .append(String.format(keyword, targetTableName))
- .append(" ON ")
- .append(String.format(keyword, sourceTableName)).append(".")
- .append(String.format(keyword, sourceField.getOriginName()))
- .append(" = ")
- .append(String.format(keyword, targetTableName)).append(".")
- .append(String.format(keyword, targetField.getOriginName()));
+ String targetTableName = new Gson().fromJson(targetTable.getInfo(), DataTableInfoDTO.class).getTable();
+ join.append(convertUnionTypeToSQL(dto.getSourceUnionRelation())).append(String.format(keyword, targetTableName)).append(" ON ").append(String.format(keyword, sourceTableName)).append(".").append(String.format(keyword, sourceField.getOriginName())).append(" = ").append(String.format(keyword, targetTableName)).append(".").append(String.format(keyword, targetField.getOriginName()));
}
}
}
@@ -1654,8 +1514,7 @@ public class DataSetTableService {
if (StringUtils.isEmpty(StringUtils.join(customInfo.get(tableName), ","))) {
throw new RuntimeException(Translator.get("i18n_custom_ds_delete"));
}
- return MessageFormat.format("SELECT {0} FROM {1}", StringUtils.join(customInfo.get(tableName), ","),
- String.format(keyword, tableName));
+ return MessageFormat.format("SELECT {0} FROM {1}", StringUtils.join(customInfo.get(tableName), ","), String.format(keyword, tableName));
}
}
@@ -1692,32 +1551,26 @@ public class DataSetTableService {
String table = TableUtils.tableName(tableId);
DatasetTable datasetTable = datasetTableMapper.selectByPrimaryKey(tableId);
if (ObjectUtils.isEmpty(datasetTable)) {
- DataEaseException.throwException(
- Translator.get("i18n_custom_ds_delete") + String.format(":table id [%s]", tableId));
+ DataEaseException.throwException(Translator.get("i18n_custom_ds_delete") + String.format(":table id [%s]", tableId));
}
CurrentUserDto user = AuthUtils.getUser();
if (user != null && !user.getIsAdmin()) {
DataSetTableDTO withPermission = getWithPermission(datasetTable.getId(), user.getUserId());
if (ObjectUtils.isEmpty(withPermission.getPrivileges()) || !withPermission.getPrivileges().contains("use")) {
- DataEaseException.throwException(
- Translator.get("i18n_dataset_no_permission") + String.format(":table name [%s]", withPermission.getName()));
+ DataEaseException.throwException(Translator.get("i18n_dataset_no_permission") + String.format(":table name [%s]", withPermission.getName()));
}
}
List fields = dataSetTableFieldsService.getListByIdsEach(unionDTO.getCurrentDsField());
- String[] array = fields.stream()
- .map(f -> {
- String s = "";
- if (f == null) {
- DataEaseException.throwException(
- Translator.get("i18n_ds_error"));
- } else {
- s = table + "." + f.getDataeaseName() + " AS "
- + TableUtils.fieldName(tableId + "_" + f.getDataeaseName());
- }
- return s;
- })
- .toArray(String[]::new);
+ String[] array = fields.stream().map(f -> {
+ String s = "";
+ if (f == null) {
+ DataEaseException.throwException(Translator.get("i18n_ds_error"));
+ } else {
+ s = table + "." + f.getDataeaseName() + " AS " + TableUtils.fieldName(tableId + "_" + f.getDataeaseName());
+ }
+ return s;
+ }).toArray(String[]::new);
checkedInfo.put(table, array);
checkedFields.addAll(fields);
// 获取child的fields和union
@@ -1748,21 +1601,14 @@ public class DataSetTableService {
DatasetTable parentTable = datasetTableMapper.selectByPrimaryKey(pField.getTableId());
DatasetTable currentTable = datasetTableMapper.selectByPrimaryKey(cField.getTableId());
- join.append(" ").append(joinType).append(" ").append(TableUtils.tableName(currentTable.getId()))
- .append(" ON ");
+ join.append(" ").append(joinType).append(" ").append(TableUtils.tableName(currentTable.getId())).append(" ON ");
for (int i = 0; i < unionParamDTO.getUnionFields().size(); i++) {
UnionItemDTO unionItemDTO = unionParamDTO.getUnionFields().get(i);
// 通过field id取得field详情,并且以第一组为准,寻找dataset table
- DatasetTableField parentField = dataSetTableFieldsService
- .get(unionItemDTO.getParentField().getId());
- DatasetTableField currentField = dataSetTableFieldsService
- .get(unionItemDTO.getCurrentField().getId());
+ DatasetTableField parentField = dataSetTableFieldsService.get(unionItemDTO.getParentField().getId());
+ DatasetTableField currentField = dataSetTableFieldsService.get(unionItemDTO.getCurrentField().getId());
- join.append(TableUtils.tableName(parentTable.getId())).append(".")
- .append(parentField.getDataeaseName())
- .append(" = ")
- .append(TableUtils.tableName(currentTable.getId())).append(".")
- .append(currentField.getDataeaseName());
+ join.append(TableUtils.tableName(parentTable.getId())).append(".").append(parentField.getDataeaseName()).append(" = ").append(TableUtils.tableName(currentTable.getId())).append(".").append(currentField.getDataeaseName());
if (i < unionParamDTO.getUnionFields().size() - 1) {
join.append(" AND ");
}
@@ -1771,16 +1617,13 @@ public class DataSetTableService {
if (StringUtils.isEmpty(f)) {
DataEaseException.throwException(Translator.get("i18n_union_ds_no_checked"));
}
- sql = MessageFormat.format("SELECT {0} FROM {1}", f,
- TableUtils.tableName(union.get(0).getCurrentDs().getId())) + join.toString();
+ sql = MessageFormat.format("SELECT {0} FROM {1}", f, TableUtils.tableName(union.get(0).getCurrentDs().getId())) + join.toString();
} else {
- String f = StringUtils.join(checkedInfo.get(TableUtils.tableName(union.get(0).getCurrentDs().getId())),
- ",");
+ String f = StringUtils.join(checkedInfo.get(TableUtils.tableName(union.get(0).getCurrentDs().getId())), ",");
if (StringUtils.isEmpty(f)) {
throw new RuntimeException(Translator.get("i18n_union_ds_no_checked"));
}
- sql = MessageFormat.format("SELECT {0} FROM {1}", f,
- TableUtils.tableName(union.get(0).getCurrentDs().getId()));
+ sql = MessageFormat.format("SELECT {0} FROM {1}", f, TableUtils.tableName(union.get(0).getCurrentDs().getId()));
}
Map map = new HashMap<>();
map.put("sql", sql);
@@ -1790,22 +1633,17 @@ public class DataSetTableService {
}
// 递归计算出所有子级的checkedFields和unionParam
- private void getUnionSQLDorisJoin(List childrenDs, Map checkedInfo,
- List unionList, List checkedFields) {
+ private void getUnionSQLDorisJoin(List childrenDs, Map checkedInfo, List unionList, List checkedFields) {
for (UnionDTO unionDTO : childrenDs) {
String tableId = unionDTO.getCurrentDs().getId();
String table = TableUtils.tableName(tableId);
DatasetTable datasetTable = datasetTableMapper.selectByPrimaryKey(tableId);
if (ObjectUtils.isEmpty(datasetTable)) {
- DataEaseException.throwException(
- Translator.get("i18n_custom_ds_delete") + String.format(":table id [%s]", tableId));
+ DataEaseException.throwException(Translator.get("i18n_custom_ds_delete") + String.format(":table id [%s]", tableId));
}
List fields = dataSetTableFieldsService.getListByIdsEach(unionDTO.getCurrentDsField());
- String[] array = fields.stream()
- .map(f -> table + "." + f.getDataeaseName() + " AS "
- + TableUtils.fieldName(tableId + "_" + f.getDataeaseName()))
- .toArray(String[]::new);
+ String[] array = fields.stream().map(f -> table + "." + f.getDataeaseName() + " AS " + TableUtils.fieldName(tableId + "_" + f.getDataeaseName())).toArray(String[]::new);
checkedInfo.put(table, array);
checkedFields.addAll(fields);
@@ -1829,11 +1667,7 @@ public class DataSetTableService {
schema = schemaJson.getAsString();
}
String joinPrefix = "";
- if (StringUtils.isNotEmpty(schema) && (StringUtils.equalsIgnoreCase(ds.getType(), DatasourceTypes.db2.getType()) ||
- StringUtils.equalsIgnoreCase(ds.getType(), DatasourceTypes.sqlServer.getType()) ||
- StringUtils.equalsIgnoreCase(ds.getType(), DatasourceTypes.oracle.getType()) ||
- StringUtils.equalsIgnoreCase(ds.getType(), "kingbase") ||
- StringUtils.equalsIgnoreCase(ds.getType(), DatasourceTypes.pg.getType()))) {
+ if (StringUtils.isNotEmpty(schema) && (StringUtils.equalsIgnoreCase(ds.getType(), DatasourceTypes.db2.getType()) || StringUtils.equalsIgnoreCase(ds.getType(), DatasourceTypes.sqlServer.getType()) || StringUtils.equalsIgnoreCase(ds.getType(), DatasourceTypes.oracle.getType()) || StringUtils.equalsIgnoreCase(ds.getType(), "kingbase") || StringUtils.equalsIgnoreCase(ds.getType(), DatasourceTypes.pg.getType()))) {
joinPrefix = String.format(keyword, schema) + ".";
}
@@ -1843,32 +1677,24 @@ public class DataSetTableService {
List unionList = new ArrayList<>();
List checkedFields = new ArrayList<>();
String sql = "";
- String tableName = new Gson()
- .fromJson(datasetTableMapper.selectByPrimaryKey(union.get(0).getCurrentDs().getId()).getInfo(),
- DataTableInfoDTO.class)
- .getTable();
+ String tableName = new Gson().fromJson(datasetTableMapper.selectByPrimaryKey(union.get(0).getCurrentDs().getId()).getInfo(), DataTableInfoDTO.class).getTable();
for (UnionDTO unionDTO : union) {
DatasetTable datasetTable = datasetTableMapper.selectByPrimaryKey(unionDTO.getCurrentDs().getId());
String table = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class).getTable();
String tableId = unionDTO.getCurrentDs().getId();
if (ObjectUtils.isEmpty(datasetTable)) {
- DataEaseException.throwException(
- Translator.get("i18n_custom_ds_delete") + String.format(":table id [%s]", tableId));
+ DataEaseException.throwException(Translator.get("i18n_custom_ds_delete") + String.format(":table id [%s]", tableId));
}
CurrentUserDto user = AuthUtils.getUser();
if (user != null && !user.getIsAdmin()) {
DataSetTableDTO withPermission = getWithPermission(datasetTable.getId(), user.getUserId());
if (ObjectUtils.isEmpty(withPermission.getPrivileges()) || !withPermission.getPrivileges().contains("use")) {
- DataEaseException.throwException(
- Translator.get("i18n_dataset_no_permission") + String.format(":table name [%s]", withPermission.getName()));
+ DataEaseException.throwException(Translator.get("i18n_dataset_no_permission") + String.format(":table name [%s]", withPermission.getName()));
}
}
List fields = dataSetTableFieldsService.getListByIdsEach(unionDTO.getCurrentDsField());
- String[] array = fields.stream()
- .map(f -> String.format(keyword, table) + "." + String.format(keyword, f.getOriginName()) + " AS "
- + TableUtils.fieldNameShort(tableId + "_" + f.getOriginName()))
- .toArray(String[]::new);
+ String[] array = fields.stream().map(f -> String.format(keyword, table) + "." + String.format(keyword, f.getOriginName()) + " AS " + TableUtils.fieldNameShort(tableId + "_" + f.getOriginName())).toArray(String[]::new);
checkedInfo.put(table, array);
checkedFields.addAll(fields);
// 获取child的fields和union
@@ -1899,24 +1725,16 @@ public class DataSetTableService {
DatasetTable parentTable = datasetTableMapper.selectByPrimaryKey(pField.getTableId());
String parentTableName = new Gson().fromJson(parentTable.getInfo(), DataTableInfoDTO.class).getTable();
DatasetTable currentTable = datasetTableMapper.selectByPrimaryKey(cField.getTableId());
- String currentTableName = new Gson().fromJson(currentTable.getInfo(), DataTableInfoDTO.class)
- .getTable();
+ String currentTableName = new Gson().fromJson(currentTable.getInfo(), DataTableInfoDTO.class).getTable();
- join.append(" ").append(joinType).append(" ").append(joinPrefix).append(String.format(keyword, currentTableName))
- .append(" ON ");
+ join.append(" ").append(joinType).append(" ").append(joinPrefix).append(String.format(keyword, currentTableName)).append(" ON ");
for (int i = 0; i < unionParamDTO.getUnionFields().size(); i++) {
UnionItemDTO unionItemDTO = unionParamDTO.getUnionFields().get(i);
// 通过field id取得field详情,并且以第一组为准,寻找dataset table
- DatasetTableField parentField = dataSetTableFieldsService
- .get(unionItemDTO.getParentField().getId());
- DatasetTableField currentField = dataSetTableFieldsService
- .get(unionItemDTO.getCurrentField().getId());
+ DatasetTableField parentField = dataSetTableFieldsService.get(unionItemDTO.getParentField().getId());
+ DatasetTableField currentField = dataSetTableFieldsService.get(unionItemDTO.getCurrentField().getId());
- join.append(String.format(keyword, parentTableName)).append(".")
- .append(String.format(keyword, parentField.getOriginName()))
- .append(" = ")
- .append(String.format(keyword, currentTableName)).append(".")
- .append(String.format(keyword, currentField.getOriginName()));
+ join.append(String.format(keyword, parentTableName)).append(".").append(String.format(keyword, parentField.getOriginName())).append(" = ").append(String.format(keyword, currentTableName)).append(".").append(String.format(keyword, currentField.getOriginName()));
if (i < unionParamDTO.getUnionFields().size() - 1) {
join.append(" AND ");
}
@@ -1951,23 +1769,18 @@ public class DataSetTableService {
}
// 递归计算出所有子级的checkedFields和unionParam
- private void getUnionSQLDatasourceJoin(List childrenDs, Map checkedInfo,
- List unionList, String keyword, List checkedFields) {
+ private void getUnionSQLDatasourceJoin(List childrenDs, Map checkedInfo, List unionList, String keyword, List checkedFields) {
for (UnionDTO unionDTO : childrenDs) {
DatasetTable datasetTable = datasetTableMapper.selectByPrimaryKey(unionDTO.getCurrentDs().getId());
String tableId = unionDTO.getCurrentDs().getId();
if (ObjectUtils.isEmpty(datasetTable)) {
- DataEaseException.throwException(
- Translator.get("i18n_custom_ds_delete") + String.format(":table id [%s]", tableId));
+ DataEaseException.throwException(Translator.get("i18n_custom_ds_delete") + String.format(":table id [%s]", tableId));
}
String table = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class).getTable();
List fields = dataSetTableFieldsService.getListByIdsEach(unionDTO.getCurrentDsField());
- String[] array = fields.stream()
- .map(f -> String.format(keyword, table) + "." + String.format(keyword, f.getOriginName()) + " AS "
- + TableUtils.fieldNameShort(tableId + "_" + f.getOriginName()))
- .toArray(String[]::new);
+ String[] array = fields.stream().map(f -> String.format(keyword, table) + "." + String.format(keyword, f.getOriginName()) + " AS " + TableUtils.fieldNameShort(tableId + "_" + f.getOriginName())).toArray(String[]::new);
checkedInfo.put(table, array);
checkedFields.addAll(fields);
@@ -2034,15 +1847,12 @@ public class DataSetTableService {
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.CUSTOM.name())) {
if (datasetTable.getMode() == 1) {
// save field
- DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(dataSetTableRequest.getInfo(),
- DataTableInfoDTO.class);
+ DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class);
List list = dataTableInfoDTO.getList();
List fieldList = new ArrayList<>();
list.forEach(ele -> {
- List listByIds = dataSetTableFieldsService
- .getListByIdsEach(ele.getCheckedFields());
- listByIds.forEach(f -> f.setDataeaseName(
- TableUtils.fieldName(ele.getTableId() + "_" + f.getDataeaseName())));
+ List listByIds = dataSetTableFieldsService.getListByIdsEach(ele.getCheckedFields());
+ listByIds.forEach(f -> f.setDataeaseName(TableUtils.fieldName(ele.getTableId() + "_" + f.getDataeaseName())));
fieldList.addAll(listByIds);
});
for (int i = 0; i < fieldList.size(); i++) {
@@ -2055,8 +1865,7 @@ public class DataSetTableService {
dataSetTableFieldsService.batchEdit(fieldList);
// custom 创建doris视图
if (datasetTable.getMode() == 1) {
- createDorisView(TableUtils.tableName(datasetTable.getId()), getCustomViewSQL(dataTableInfoDTO,
- dataSetTableUnionService.listByTableId(dataTableInfoDTO.getList().get(0).getTableId())));
+ createDorisView(TableUtils.tableName(datasetTable.getId()), getCustomViewSQL(dataTableInfoDTO, dataSetTableUnionService.listByTableId(dataTableInfoDTO.getList().get(0).getTableId())));
}
return;
} else {
@@ -2064,26 +1873,21 @@ public class DataSetTableService {
DatasourceRequest datasourceRequest = new DatasourceRequest();
datasourceRequest.setDatasource(ds);
DataTableInfoDTO dt = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class);
- List list = dataSetTableUnionService
- .listByTableId(dt.getList().get(0).getTableId());
+ List list = dataSetTableUnionService.listByTableId(dt.getList().get(0).getTableId());
String sqlAsTable = getCustomSQLDatasource(dt, list, ds);
datasourceRequest.setQuery(sqlAsTable);
fields = datasourceProvider.fetchResultField(datasourceRequest);
- DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(dataSetTableRequest.getInfo(),
- DataTableInfoDTO.class);
+ DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class);
List listField = dataTableInfoDTO.getList();
List fieldList = new ArrayList<>();
listField.forEach(ele -> {
- List listByIds = dataSetTableFieldsService
- .getListByIdsEach(ele.getCheckedFields());
+ List listByIds = dataSetTableFieldsService.getListByIdsEach(ele.getCheckedFields());
fieldList.addAll(listByIds);
});
for (DatasetTableField field : fieldList) {
for (TableField tableField : fields) {
- if (StringUtils.equalsIgnoreCase(
- TableUtils.fieldName(field.getTableId() + "_" + field.getOriginName()),
- tableField.getFieldName())) {
+ if (StringUtils.equalsIgnoreCase(TableUtils.fieldName(field.getTableId() + "_" + field.getOriginName()), tableField.getFieldName())) {
tableField.setRemarks(field.getName());
break;
}
@@ -2097,8 +1901,7 @@ public class DataSetTableService {
DatasourceRequest datasourceRequest = new DatasourceRequest();
datasourceRequest.setDatasource(ds);
// save field
- DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(dataSetTableRequest.getInfo(),
- DataTableInfoDTO.class);
+ DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class);
Map sqlMap = getUnionSQLDoris(dataTableInfoDTO);
String sql = (String) sqlMap.get("sql");
List fieldList = (List) sqlMap.get("field");
@@ -2113,9 +1916,7 @@ public class DataSetTableService {
fields = datasourceProvider.fetchResultField(datasourceRequest);
for (DatasetTableField field : fieldList) {
for (TableField tableField : fields) {
- if (StringUtils.equalsIgnoreCase(
- TableUtils.fieldName(field.getTableId() + "_" + field.getDataeaseName()),
- tableField.getFieldName())) {
+ if (StringUtils.equalsIgnoreCase(TableUtils.fieldName(field.getTableId() + "_" + field.getDataeaseName()), tableField.getFieldName())) {
tableField.setRemarks(field.getName());
tableField.setFieldType(field.getType()); //将原有的type赋值给新创建的数据列
break;
@@ -2139,9 +1940,7 @@ public class DataSetTableService {
for (DatasetTableField field : fieldList) {
for (TableField tableField : fields) {
- if (StringUtils.equalsIgnoreCase(
- TableUtils.fieldNameShort(field.getTableId() + "_" + field.getOriginName()),
- tableField.getFieldName())) {
+ if (StringUtils.equalsIgnoreCase(TableUtils.fieldNameShort(field.getTableId() + "_" + field.getOriginName()), tableField.getFieldName())) {
tableField.setRemarks(field.getName());
break;
}
@@ -2240,8 +2039,7 @@ public class DataSetTableService {
}
}
- public DatasetTableIncrementalConfig incrementalConfig(
- DatasetTableIncrementalConfig datasetTableIncrementalConfig) {
+ public DatasetTableIncrementalConfig incrementalConfig(DatasetTableIncrementalConfig datasetTableIncrementalConfig) {
if (StringUtils.isEmpty(datasetTableIncrementalConfig.getTableId())) {
return new DatasetTableIncrementalConfig();
}
@@ -2285,34 +2083,28 @@ public class DataSetTableService {
private void checkColumes(DatasetTableIncrementalConfig datasetTableIncrementalConfig) throws Exception {
DatasetTable datasetTable = datasetTableMapper.selectByPrimaryKey(datasetTableIncrementalConfig.getTableId());
- List datasetTableFields = dataSetTableFieldsService.getFieldsByTableId(datasetTable.getId())
- .stream().filter(datasetTableField -> datasetTableField.getExtField() == 0).sorted((o1, o2) -> {
- if (o1.getColumnIndex() == null) {
- return -1;
- }
- if (o2.getColumnIndex() == null) {
- return 1;
- }
- return o1.getColumnIndex().compareTo(o2.getColumnIndex());
- }).collect(Collectors.toList());
+ List datasetTableFields = dataSetTableFieldsService.getFieldsByTableId(datasetTable.getId()).stream().filter(datasetTableField -> datasetTableField.getExtField() == 0).sorted((o1, o2) -> {
+ if (o1.getColumnIndex() == null) {
+ return -1;
+ }
+ if (o2.getColumnIndex() == null) {
+ return 1;
+ }
+ return o1.getColumnIndex().compareTo(o2.getColumnIndex());
+ }).collect(Collectors.toList());
- List originNameFields = datasetTableFields.stream().map(DatasetTableField::getOriginName)
- .collect(Collectors.toList());
+ List originNameFields = datasetTableFields.stream().map(DatasetTableField::getOriginName).collect(Collectors.toList());
Datasource ds = datasourceMapper.selectByPrimaryKey(datasetTable.getDataSourceId());
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
Provider datasourceProvider = ProviderFactory.getProvider(ds.getType());
DatasourceRequest datasourceRequest = new DatasourceRequest();
datasourceRequest.setDatasource(ds);
- if (StringUtils.isNotEmpty(datasetTableIncrementalConfig.getIncrementalAdd())
- && StringUtils.isNotEmpty(datasetTableIncrementalConfig.getIncrementalAdd().replace(" ", ""))) {// 增量添加
- String sql = datasetTableIncrementalConfig.getIncrementalAdd()
- .replace(lastUpdateTime, Long.valueOf(System.currentTimeMillis()).toString())
- .replace(currentUpdateTime, Long.valueOf(System.currentTimeMillis()).toString());
+ if (StringUtils.isNotEmpty(datasetTableIncrementalConfig.getIncrementalAdd()) && StringUtils.isNotEmpty(datasetTableIncrementalConfig.getIncrementalAdd().replace(" ", ""))) {// 增量添加
+ String sql = datasetTableIncrementalConfig.getIncrementalAdd().replace(lastUpdateTime, Long.valueOf(System.currentTimeMillis()).toString()).replace(currentUpdateTime, Long.valueOf(System.currentTimeMillis()).toString());
datasourceRequest.setQuery(qp.wrapSql(sql));
List sqlFields = new ArrayList<>();
try {
- datasourceProvider.fetchResultField(datasourceRequest).stream().map(TableField::getFieldName)
- .forEach(sqlFields::add);
+ datasourceProvider.fetchResultField(datasourceRequest).stream().map(TableField::getFieldName).forEach(sqlFields::add);
} catch (Exception e) {
DataEaseException.throwException(Translator.get("i18n_check_sql_error") + e.getMessage());
}
@@ -2321,16 +2113,12 @@ public class DataSetTableService {
DataEaseException.throwException(Translator.get("i18n_sql_add_not_matching") + sqlFields.toString());
}
}
- if (StringUtils.isNotEmpty(datasetTableIncrementalConfig.getIncrementalDelete())
- && StringUtils.isNotEmpty(datasetTableIncrementalConfig.getIncrementalDelete().replace(" ", ""))) {// 增量删除
- String sql = datasetTableIncrementalConfig.getIncrementalDelete()
- .replace(lastUpdateTime, Long.valueOf(System.currentTimeMillis()).toString())
- .replace(currentUpdateTime, Long.valueOf(System.currentTimeMillis()).toString());
+ if (StringUtils.isNotEmpty(datasetTableIncrementalConfig.getIncrementalDelete()) && StringUtils.isNotEmpty(datasetTableIncrementalConfig.getIncrementalDelete().replace(" ", ""))) {// 增量删除
+ String sql = datasetTableIncrementalConfig.getIncrementalDelete().replace(lastUpdateTime, Long.valueOf(System.currentTimeMillis()).toString()).replace(currentUpdateTime, Long.valueOf(System.currentTimeMillis()).toString());
datasourceRequest.setQuery(qp.wrapSql(sql));
List sqlFields = new ArrayList<>();
try {
- datasourceProvider.fetchResultField(datasourceRequest).stream().map(TableField::getFieldName)
- .forEach(sqlFields::add);
+ datasourceProvider.fetchResultField(datasourceRequest).stream().map(TableField::getFieldName).forEach(sqlFields::add);
} catch (Exception e) {
DataEaseException.throwException(Translator.get("i18n_check_sql_error") + e.getMessage());
}
@@ -2475,9 +2263,7 @@ public class DataSetTableService {
} else {
returnSheetDataList = excelSheetDataList;
}
- returnSheetDataList = returnSheetDataList.stream()
- .filter(excelSheetData -> CollectionUtils.isNotEmpty(excelSheetData.getFields()))
- .collect(Collectors.toList());
+ returnSheetDataList = returnSheetDataList.stream().filter(excelSheetData -> CollectionUtils.isNotEmpty(excelSheetData.getFields())).collect(Collectors.toList());
// save file
String excelId = UUID.randomUUID().toString();
String filePath = saveFile(file, excelId);
@@ -2543,8 +2329,7 @@ public class DataSetTableService {
return excelSheetDataList;
}
- public List parseExcel(String filename, InputStream inputStream, boolean isPreview)
- throws Exception {
+ public List parseExcel(String filename, InputStream inputStream, boolean isPreview) throws Exception {
List excelSheetDataList = new ArrayList<>();
String suffix = filename.substring(filename.lastIndexOf(".") + 1);
if (StringUtils.equalsIgnoreCase(suffix, "xls")) {
@@ -2635,8 +2420,7 @@ public class DataSetTableService {
double eps = 1e-10;
if (value - Math.floor(value) < eps) {
if (cellType) {
- if (StringUtils.isEmpty(tableField.getFieldType())
- || tableField.getFieldType().equalsIgnoreCase("TEXT")) {
+ if (StringUtils.isEmpty(tableField.getFieldType()) || tableField.getFieldType().equalsIgnoreCase("TEXT")) {
tableField.setFieldType("LONG");
}
}
@@ -2687,8 +2471,7 @@ public class DataSetTableService {
double eps = 1e-10;
if (value - Math.floor(value) < eps) {
if (cellType) {
- if (StringUtils.isEmpty(tableField.getFieldType())
- || tableField.getFieldType().equalsIgnoreCase("TEXT")) {
+ if (StringUtils.isEmpty(tableField.getFieldType()) || tableField.getFieldType().equalsIgnoreCase("TEXT")) {
tableField.setFieldType("LONG");
}
}
@@ -2761,10 +2544,7 @@ public class DataSetTableService {
private void doUpdate() {
List qrtzSchedulerStates = qrtzSchedulerStateMapper.selectByExample(null);
- List activeQrtzInstances = qrtzSchedulerStates.stream()
- .filter(qrtzSchedulerState -> qrtzSchedulerState.getLastCheckinTime()
- + qrtzSchedulerState.getCheckinInterval() + 1000 > utilMapper.currentTimestamp())
- .map(QrtzSchedulerStateKey::getInstanceName).collect(Collectors.toList());
+ List activeQrtzInstances = qrtzSchedulerStates.stream().filter(qrtzSchedulerState -> qrtzSchedulerState.getLastCheckinTime() + qrtzSchedulerState.getCheckinInterval() + 1000 > utilMapper.currentTimestamp()).map(QrtzSchedulerStateKey::getInstanceName).collect(Collectors.toList());
DatasetTableExample example = new DatasetTableExample();
example.createCriteria().andSyncStatusEqualTo(JobStatus.Underway.name());
@@ -2811,8 +2591,7 @@ public class DataSetTableService {
DatasetTable record = new DatasetTable();
record.setSyncStatus(JobStatus.Error.name());
example.clear();
- example.createCriteria().andSyncStatusEqualTo(JobStatus.Underway.name())
- .andIdIn(jobStoppeddDatasetTables.stream().map(DatasetTable::getId).collect(Collectors.toList()));
+ example.createCriteria().andSyncStatusEqualTo(JobStatus.Underway.name()).andIdIn(jobStoppeddDatasetTables.stream().map(DatasetTable::getId).collect(Collectors.toList()));
datasetTableMapper.updateByExampleSelective(record, example);
//TaskLog
@@ -2821,8 +2600,7 @@ public class DataSetTableService {
datasetTableTaskLog.setInfo("Job stopped due to system error.");
DatasetTableTaskLogExample datasetTableTaskLogExample = new DatasetTableTaskLogExample();
- datasetTableTaskLogExample.createCriteria().andStatusEqualTo(JobStatus.Underway.name())
- .andTableIdIn(datasetTableTasks.stream().map(DatasetTableTask::getTableId).collect(Collectors.toList()));
+ datasetTableTaskLogExample.createCriteria().andStatusEqualTo(JobStatus.Underway.name()).andTableIdIn(datasetTableTasks.stream().map(DatasetTableTask::getTableId).collect(Collectors.toList()));
datasetTableTaskLogMapper.updateByExampleSelective(datasetTableTaskLog, datasetTableTaskLogExample);
for (DatasetTableTask datasetTableTask : datasetTableTasks) {
@@ -2864,6 +2642,7 @@ public class DataSetTableService {
}
private ExpressionDeParser getExpressionDeParser(StringBuilder stringBuilder) {
+ SelectDeParser selectDeParser = new SelectDeParser(stringBuilder);
ExpressionDeParser expressionDeParser = new ExpressionDeParser(null, stringBuilder) {
@Override
public void visit(Parenthesis parenthesis) {
@@ -2879,7 +2658,7 @@ public class DataSetTableService {
@Override
public void visit(AndExpression andExpression) {
- visitBinaryExpr(andExpression, "AND");
+ visitBinaryExpr(andExpression, andExpression.isUseOperator() ? " && " : " AND ");
}
@Override
@@ -2952,9 +2731,7 @@ public class DataSetTableService {
getBuffer().append(SubstitutedSql);
return;
}
-
- visitBinaryExpression(likeExpression,
- (likeExpression.isNot() ? " NOT" : "") + (likeExpression.isCaseInsensitive() ? " ILIKE " : " LIKE "));
+ visitBinaryExpression(likeExpression, (likeExpression.isNot() ? " NOT" : "") + (likeExpression.isCaseInsensitive() ? " ILIKE " : " LIKE "));
if (likeExpression.getEscape() != null) {
buffer.append(" ESCAPE '").append(likeExpression.getEscape()).append('\'');
}
@@ -2962,43 +2739,32 @@ public class DataSetTableService {
@Override
public void visit(InExpression inExpression) {
- if (inExpression.getRightItemsList() != null && hasVariable(inExpression.getRightItemsList().toString())) {
- stringBuilder.append(SubstitutedSql);
- return;
- }
- if (inExpression.getRightExpression() != null && inExpression.getRightExpression().toString().equals(SubstitutedParams)) {
+ if (inExpression.getRightExpression() != null && hasVariable(inExpression.getRightExpression().toString()) && inExpression.getRightExpression() instanceof ParenthesedExpressionList) {
stringBuilder.append(SubstitutedSql);
return;
}
inExpression.getLeftExpression().accept(this);
+
if (inExpression.isNot()) {
getBuffer().append(" " + " NOT IN " + " ");
} else {
getBuffer().append(" IN ");
}
- if (inExpression.getRightItemsList() != null) {
- getBuffer().append(inExpression.getRightItemsList());
- }
- if (inExpression.getRightExpression() != null) {
- getBuffer().append(" ( ");
- if (inExpression.getRightExpression() instanceof SubSelect) {
- try {
- SubSelect subSelect = (SubSelect) inExpression.getRightExpression();
- Select select = (Select) CCJSqlParserUtil.parse(removeVariables(subSelect.getSelectBody().toString(), ""));
- subSelect.setSelectBody(select.getSelectBody());
- inExpression.setRightExpression(subSelect);
- }catch (Exception e){
- e.printStackTrace();
- }
+ if (inExpression.getRightExpression() != null && inExpression.getRightExpression() instanceof ParenthesedSelect) {
+ try {
+ ParenthesedSelect subSelect = (ParenthesedSelect) inExpression.getRightExpression();
+ Select select = (Select) CCJSqlParserUtil.parse(removeVariables(subSelect.getPlainSelect().toString(), ""));
+ subSelect.setSelect(select);
+ inExpression.setRightExpression(subSelect);
+ } catch (Exception e) {
+ e.printStackTrace();
}
inExpression.getRightExpression().accept(this);
- getBuffer().append(" )");
}
}
-
@Override
- public void visit(SubSelect subSelect) {
+ public void visit(ParenthesedSelect subSelect) {
StringBuilder stringBuilder = new StringBuilder();
Expression in = ((PlainSelect) subSelect.getSelectBody()).getWhere();
if (in instanceof BinaryExpression && hasVariable(in.toString())) {
@@ -3016,6 +2782,11 @@ public class DataSetTableService {
}
}
+ @Override
+ public void visit(Select selectBody) {
+ getBuffer().append(selectBody.toString());
+ }
+
private void visitBinaryExpr(BinaryExpression expr, String operator) {
boolean hasSubBinaryExpression = false;
@@ -3056,8 +2827,7 @@ public class DataSetTableService {
public void createAppCustomDorisView(String datasetInfo, String tableId) throws Exception {
DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(datasetInfo, DataTableInfoDTO.class);
- createDorisView(TableUtils.tableName(tableId), getCustomViewSQL(dataTableInfoDTO,
- dataSetTableUnionService.listByTableId(dataTableInfoDTO.getList().get(0).getTableId())));
+ createDorisView(TableUtils.tableName(tableId), getCustomViewSQL(dataTableInfoDTO, dataSetTableUnionService.listByTableId(dataTableInfoDTO.getList().get(0).getTableId())));
}
public void createAppUnionDorisView(String datasetInfo, String tableId) throws Exception {