fix:【数据源】oracle数据源会显示回收站中元数据,隐藏

This commit is contained in:
taojinlong
2026-03-09 16:54:53 +08:00
committed by tjlygdx
parent e2fc576e10
commit fb04c5a295

View File

@@ -65,6 +65,7 @@ import java.io.*;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.*;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import static io.dataease.datasource.server.DatasourceTaskServer.ScheduleType.MANUAL;
@@ -74,6 +75,8 @@ import static io.dataease.datasource.server.DatasourceTaskServer.ScheduleType.RI
@RestController
@RequestMapping("/datasource")
public class DatasourceServer implements DatasourceApi {
private static final Pattern ORACLE_RECYCLE_BIN_TABLE_PATTERN = Pattern.compile("^BIN\\$.*\\$[0-9]+$", Pattern.CASE_INSENSITIVE);
@Resource
private CoreDatasourceMapper datasourceMapper;
@Resource
@@ -757,7 +760,26 @@ public class DatasourceServer implements DatasourceApi {
return ExcelUtils.getTables(datasourceRequest);
}
Provider provider = ProviderFactory.getProvider(datasourceDTO.getType());
return provider.getTables(datasourceRequest);
List<DatasetTableDTO> tables = provider.getTables(datasourceRequest);
if (StringUtils.equalsIgnoreCase(coreDatasource.getType(), DatasourceConfiguration.DatasourceType.oracle.name())) {
return tables.stream().filter(table -> !isOracleRecycleBinTable(table)).collect(Collectors.toList());
}
return tables;
}
private boolean isOracleRecycleBinTable(DatasetTableDTO table) {
if (table == null) {
return false;
}
return isOracleRecycleBinName(table.getTableName()) || isOracleRecycleBinName(table.getName());
}
private boolean isOracleRecycleBinName(String tableName) {
if (StringUtils.isBlank(tableName)) {
return false;
}
String normalized = StringUtils.removeEnd(StringUtils.removeStart(tableName.trim(), "\""), "\"");
return ORACLE_RECYCLE_BIN_TABLE_PATTERN.matcher(normalized).matches();
}
@Override