From 91e4b51ef8de7655de38923b6ea37a29d7d37df0 Mon Sep 17 00:00:00 2001 From: jerryjzhang Date: Tue, 5 Aug 2025 17:22:10 +0800 Subject: [PATCH] [fix]Fix unit test cases. --- .../chat/server/pojo/ParseContext.java | 3 +- .../common/jsqlparser/SqlReplaceHelper.java | 2 +- .../common/jsqlparser/SqlSelectHelper.java | 38 +++++++++++++++ .../api/pojo/request/QueryStructReq.java | 20 ++++++-- .../api/pojo/request/SqlExecuteReq.java | 6 +-- .../chat/knowledge/file/FileHandlerImpl.java | 8 ++-- .../chat/mapper/EmbeddingMatchStrategy.java | 35 +++++++------- .../headless/chat/mapper/KeywordMapper.java | 13 ++--- .../server/aspect/DimValueAspect.java | 2 +- .../impl/DimensionRepositoryImpl.java | 2 +- .../repository/impl/MetricRepositoryImpl.java | 11 ++--- .../server/rest/DataSetController.java | 5 +- .../server/service/DataSetService.java | 2 +- .../server/service/DimensionService.java | 3 +- .../headless/server/service/ModelService.java | 6 ++- .../service/impl/DataSetServiceImpl.java | 2 +- .../service/impl/DimensionServiceImpl.java | 38 +++++++++------ .../service/impl/MetricServiceImpl.java | 48 +++++++++++-------- .../server/service/impl/ModelServiceImpl.java | 39 ++++++++------- .../server/utils/DataSetSchemaBuilder.java | 3 +- .../server/utils/MetricCheckUtils.java | 3 +- .../headless/server/utils/ModelConverter.java | 23 +++++---- 22 files changed, 197 insertions(+), 115 deletions(-) diff --git a/chat/server/src/main/java/com/tencent/supersonic/chat/server/pojo/ParseContext.java b/chat/server/src/main/java/com/tencent/supersonic/chat/server/pojo/ParseContext.java index d7e11d0e4..ee7b9648b 100644 --- a/chat/server/src/main/java/com/tencent/supersonic/chat/server/pojo/ParseContext.java +++ b/chat/server/src/main/java/com/tencent/supersonic/chat/server/pojo/ParseContext.java @@ -19,7 +19,8 @@ public class ParseContext { } public boolean enableNL2SQL() { - return Objects.nonNull(agent) && agent.containsDatasetTool()&&response.getSelectedParses().size() == 0; + return Objects.nonNull(agent) && agent.containsDatasetTool() + && response.getSelectedParses().size() == 0; } public boolean enableLLM() { diff --git a/common/src/main/java/com/tencent/supersonic/common/jsqlparser/SqlReplaceHelper.java b/common/src/main/java/com/tencent/supersonic/common/jsqlparser/SqlReplaceHelper.java index e4373485b..0c9cf3777 100644 --- a/common/src/main/java/com/tencent/supersonic/common/jsqlparser/SqlReplaceHelper.java +++ b/common/src/main/java/com/tencent/supersonic/common/jsqlparser/SqlReplaceHelper.java @@ -727,7 +727,7 @@ public class SqlReplaceHelper { List plainSelects = SqlSelectHelper.getPlainSelects(plainSelectList); for (PlainSelect plainSelect : plainSelects) { if (Objects.nonNull(plainSelect.getFromItem())) { - Table table = (Table) plainSelect.getFromItem(); + Table table = SqlSelectHelper.getTable(plainSelect.getFromItem()); if (table.getName().equals(tableName)) { replacePlainSelectByExpr(plainSelect, replace); if (SqlSelectHelper.hasAggregateFunction(plainSelect)) { diff --git a/common/src/main/java/com/tencent/supersonic/common/jsqlparser/SqlSelectHelper.java b/common/src/main/java/com/tencent/supersonic/common/jsqlparser/SqlSelectHelper.java index fc4281a6e..571ef5485 100644 --- a/common/src/main/java/com/tencent/supersonic/common/jsqlparser/SqlSelectHelper.java +++ b/common/src/main/java/com/tencent/supersonic/common/jsqlparser/SqlSelectHelper.java @@ -723,6 +723,44 @@ public class SqlSelectHelper { return null; } + public static Table getTable(FromItem fromItem) { + Table table = null; + if (fromItem instanceof Table) { + table = (Table) fromItem; + } else if (fromItem instanceof ParenthesedSelect) { + ParenthesedSelect parenthesedSelect = (ParenthesedSelect) fromItem; + if (parenthesedSelect.getSelect() instanceof PlainSelect) { + PlainSelect subSelect = (PlainSelect) parenthesedSelect.getSelect(); + table = getTable(subSelect.getSelectBody()); + } else if (parenthesedSelect.getSelect() instanceof SetOperationList) { + table = getTable(parenthesedSelect.getSelect()); + } + } + return table; + } + + public static Table getTable(Select select) { + if (select == null) { + return null; + } + List plainSelectList = getWithItem(select); + if (!CollectionUtils.isEmpty(plainSelectList)) { + List selectList = new ArrayList<>(plainSelectList); + Table table = getTable(selectList.get(0)); + return table; + } + if (select instanceof PlainSelect) { + PlainSelect plainSelect = (PlainSelect) select; + return getTable(plainSelect.getFromItem()); + } else if (select instanceof SetOperationList) { + SetOperationList setOperationList = (SetOperationList) select; + if (!CollectionUtils.isEmpty(setOperationList.getSelects())) { + return getTable(setOperationList.getSelects().get(0)); + } + } + return null; + } + public static String getDbTableName(String sql) { Table table = getTable(sql); return table.getFullyQualifiedName(); diff --git a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/QueryStructReq.java b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/QueryStructReq.java index 03b85f992..69c1cf2b7 100644 --- a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/QueryStructReq.java +++ b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/QueryStructReq.java @@ -3,7 +3,11 @@ package com.tencent.supersonic.headless.api.pojo.request; import com.google.common.collect.Lists; import com.tencent.supersonic.common.jsqlparser.SqlAddHelper; import com.tencent.supersonic.common.jsqlparser.SqlReplaceHelper; -import com.tencent.supersonic.common.pojo.*; +import com.tencent.supersonic.common.pojo.Aggregator; +import com.tencent.supersonic.common.pojo.Constants; +import com.tencent.supersonic.common.pojo.DateConf; +import com.tencent.supersonic.common.pojo.Filter; +import com.tencent.supersonic.common.pojo.Order; import com.tencent.supersonic.common.pojo.enums.AggOperatorEnum; import com.tencent.supersonic.common.pojo.enums.QueryType; import com.tencent.supersonic.common.util.ContextUtils; @@ -21,14 +25,22 @@ import net.sf.jsqlparser.expression.operators.relational.ExpressionList; import net.sf.jsqlparser.parser.CCJSqlParserUtil; import net.sf.jsqlparser.schema.Column; import net.sf.jsqlparser.schema.Table; -import net.sf.jsqlparser.statement.select.*; +import net.sf.jsqlparser.statement.select.GroupByElement; +import net.sf.jsqlparser.statement.select.Limit; +import net.sf.jsqlparser.statement.select.Offset; +import net.sf.jsqlparser.statement.select.OrderByElement; +import net.sf.jsqlparser.statement.select.ParenthesedSelect; +import net.sf.jsqlparser.statement.select.PlainSelect; +import net.sf.jsqlparser.statement.select.SelectItem; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.util.CollectionUtils; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Objects; +import java.util.Set; import java.util.stream.Collectors; @Data @@ -176,7 +188,7 @@ public class QueryStructReq extends SemanticQueryReq { private List> buildSelectItems(QueryStructReq queryStructReq) { List> selectItems = new ArrayList<>(); - List groups = queryStructReq.getGroups(); + Set groups = new HashSet<>(queryStructReq.getGroups()); if (!CollectionUtils.isEmpty(groups)) { for (String group : groups) { @@ -236,7 +248,7 @@ public class QueryStructReq extends SemanticQueryReq { } private GroupByElement buildGroupByElement(QueryStructReq queryStructReq) { - List groups = queryStructReq.getGroups(); + Set groups = new HashSet<>(queryStructReq.getGroups()); if ((!CollectionUtils.isEmpty(groups) && !queryStructReq.getAggregators().isEmpty()) || !queryStructReq.getMetricFilters().isEmpty()) { GroupByElement groupByElement = new GroupByElement(); diff --git a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/SqlExecuteReq.java b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/SqlExecuteReq.java index 3553ba1df..84f20d758 100644 --- a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/SqlExecuteReq.java +++ b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/SqlExecuteReq.java @@ -23,9 +23,9 @@ public class SqlExecuteReq { private Integer limit = 1000; public String getSql() { - if(StringUtils.isNotBlank(sql)){ - sql=sql.replaceAll("^[\\n]+|[\\n]+$", ""); - sql=StringUtils.removeEnd(sql,";"); + if (StringUtils.isNotBlank(sql)) { + sql = sql.replaceAll("^[\\n]+|[\\n]+$", ""); + sql = StringUtils.removeEnd(sql, ";"); } return String.format(LIMIT_WRAPPER, sql, limit); diff --git a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/file/FileHandlerImpl.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/file/FileHandlerImpl.java index 2817dea5d..383c576bd 100644 --- a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/file/FileHandlerImpl.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/file/FileHandlerImpl.java @@ -86,7 +86,7 @@ public class FileHandlerImpl implements FileHandler { } private PageInfo getDictValueRespPagWithKey(String fileName, - DictValueReq dictValueReq) { + DictValueReq dictValueReq) { PageInfo dictValueRespPageInfo = new PageInfo<>(); dictValueRespPageInfo.setPageSize(dictValueReq.getPageSize()); dictValueRespPageInfo.setPageNum(dictValueReq.getCurrent()); @@ -95,7 +95,7 @@ public class FileHandlerImpl implements FileHandler { Integer startLine = 1; List dictValueRespList = getFileData(filePath, startLine, fileLineNum.intValue()).stream().filter( - dictValue -> dictValue.getValue().contains(dictValueReq.getKeyValue())) + dictValue -> dictValue.getValue().contains(dictValueReq.getKeyValue())) .collect(Collectors.toList()); if (CollectionUtils.isEmpty(dictValueRespList)) { dictValueRespPageInfo.setList(new ArrayList<>()); @@ -118,7 +118,7 @@ public class FileHandlerImpl implements FileHandler { } private PageInfo getDictValueRespPagWithoutKey(String fileName, - DictValueReq dictValueReq) { + DictValueReq dictValueReq) { PageInfo dictValueRespPageInfo = new PageInfo<>(); String filePath = localFileConfig.getDictDirectoryLatest() + FILE_SPILT + fileName; Long fileLineNum = getFileLineNum(filePath); @@ -175,7 +175,7 @@ public class FileHandlerImpl implements FileHandler { private DictValueResp convert2Resp(String lineStr) { DictValueResp dictValueResp = new DictValueResp(); if (StringUtils.isNotEmpty(lineStr)) { - lineStr=StringUtils.stripStart(lineStr,null); + lineStr = StringUtils.stripStart(lineStr, null); String[] itemArray = lineStr.split("\\s+"); if (Objects.nonNull(itemArray) && itemArray.length >= 3) { dictValueResp.setValue(itemArray[0].replace("#", " ")); diff --git a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/EmbeddingMatchStrategy.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/EmbeddingMatchStrategy.java index 8fe69766b..009d5b166 100644 --- a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/EmbeddingMatchStrategy.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/EmbeddingMatchStrategy.java @@ -63,7 +63,7 @@ public class EmbeddingMatchStrategy extends BatchMatchStrategy @Override public List detect(ChatQueryContext chatQueryContext, List terms, - Set detectDataSetIds) { + Set detectDataSetIds) { if (chatQueryContext == null || CollectionUtils.isEmpty(detectDataSetIds)) { log.warn("Invalid input parameters: context={}, dataSetIds={}", chatQueryContext, detectDataSetIds); @@ -92,7 +92,7 @@ public class EmbeddingMatchStrategy extends BatchMatchStrategy * Perform enhanced detection using LLM */ private List detectWithLLM(ChatQueryContext chatQueryContext, - Set detectDataSetIds) { + Set detectDataSetIds) { try { String queryText = chatQueryContext.getRequest().getQueryText(); if (StringUtils.isBlank(queryText)) { @@ -126,7 +126,7 @@ public class EmbeddingMatchStrategy extends BatchMatchStrategy @Override public List detectByBatch(ChatQueryContext chatQueryContext, - Set detectDataSetIds, Set detectSegments) { + Set detectDataSetIds, Set detectSegments) { return detectByBatch(chatQueryContext, detectDataSetIds, detectSegments, false); } @@ -140,7 +140,7 @@ public class EmbeddingMatchStrategy extends BatchMatchStrategy * @return List of embedding results */ public List detectByBatch(ChatQueryContext chatQueryContext, - Set detectDataSetIds, Set detectSegments, boolean useLlm) { + Set detectDataSetIds, Set detectSegments, boolean useLlm) { Set results = ConcurrentHashMap.newKeySet(); int embeddingMapperBatch = Integer .valueOf(mapperConfig.getParameterValue(MapperConfig.EMBEDDING_MAPPER_BATCH)); @@ -168,10 +168,11 @@ public class EmbeddingMatchStrategy extends BatchMatchStrategy variable.put("retrievedInfo", JSONObject.toJSONString(results)); Prompt prompt = PromptTemplate.from(LLM_FILTER_PROMPT).apply(variable); - ChatModelConfig chatModelConfig=null; - if(chatQueryContext.getRequest().getChatAppConfig()!=null - && chatQueryContext.getRequest().getChatAppConfig().containsKey("REWRITE_MULTI_TURN")){ - chatModelConfig=chatQueryContext.getRequest().getChatAppConfig().get("REWRITE_MULTI_TURN").getChatModelConfig(); + ChatModelConfig chatModelConfig = null; + if (chatQueryContext.getRequest().getChatAppConfig() != null && chatQueryContext + .getRequest().getChatAppConfig().containsKey("REWRITE_MULTI_TURN")) { + chatModelConfig = chatQueryContext.getRequest().getChatAppConfig() + .get("REWRITE_MULTI_TURN").getChatModelConfig(); } ChatLanguageModel chatLanguageModel = ModelProvider.getChatModel(chatModelConfig); String response = chatLanguageModel.generate(prompt.toUserMessage().singleText()); @@ -200,7 +201,7 @@ public class EmbeddingMatchStrategy extends BatchMatchStrategy * @return Callable task */ private Callable createTask(ChatQueryContext chatQueryContext, Set detectDataSetIds, - List queryTextsSub, Set results, boolean useLlm) { + List queryTextsSub, Set results, boolean useLlm) { return () -> { List oneRoundResults = detectByQueryTextsSub(detectDataSetIds, queryTextsSub, chatQueryContext, useLlm); @@ -221,7 +222,7 @@ public class EmbeddingMatchStrategy extends BatchMatchStrategy * @return List of embedding results for this batch */ private List detectByQueryTextsSub(Set detectDataSetIds, - List queryTextsSub, ChatQueryContext chatQueryContext, boolean useLlm) { + List queryTextsSub, ChatQueryContext chatQueryContext, boolean useLlm) { Map> modelIdToDataSetIds = chatQueryContext.getModelIdToDataSetIds(); // Get configuration parameters @@ -243,12 +244,12 @@ public class EmbeddingMatchStrategy extends BatchMatchStrategy // Process results List collect = retrieveQueryResults.stream().peek(result -> { - if (!useLlm && CollectionUtils.isNotEmpty(result.getRetrieval())) { - result.getRetrieval() - .removeIf(retrieval -> !result.getQuery().contains(retrieval.getQuery()) - && retrieval.getSimilarity() < threshold); - } - }).filter(result -> CollectionUtils.isNotEmpty(result.getRetrieval())) + if (!useLlm && CollectionUtils.isNotEmpty(result.getRetrieval())) { + result.getRetrieval() + .removeIf(retrieval -> !result.getQuery().contains(retrieval.getQuery()) + && retrieval.getSimilarity() < threshold); + } + }).filter(result -> CollectionUtils.isNotEmpty(result.getRetrieval())) .flatMap(result -> result.getRetrieval().stream() .map(retrieval -> convertToEmbeddingResult(result, retrieval))) .collect(Collectors.toList()); @@ -267,7 +268,7 @@ public class EmbeddingMatchStrategy extends BatchMatchStrategy * @return Converted EmbeddingResult */ private EmbeddingResult convertToEmbeddingResult(RetrieveQueryResult queryResult, - Retrieval retrieval) { + Retrieval retrieval) { EmbeddingResult embeddingResult = new EmbeddingResult(); BeanUtils.copyProperties(retrieval, embeddingResult); embeddingResult.setDetectWord(queryResult.getQuery()); diff --git a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/KeywordMapper.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/KeywordMapper.java index cf804340b..a6d89ae05 100644 --- a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/KeywordMapper.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/KeywordMapper.java @@ -51,7 +51,7 @@ public class KeywordMapper extends BaseMapper { } private void convertMapResultToMapInfo(List mapResults, - ChatQueryContext chatQueryContext, List terms) { + ChatQueryContext chatQueryContext, List terms) { if (CollectionUtils.isEmpty(mapResults)) { return; } @@ -87,14 +87,15 @@ public class KeywordMapper extends BaseMapper { .similarity(hanlpMapResult.getSimilarity()) .detectWord(hanlpMapResult.getDetectWord()).build(); // doDimValueAliasLogic 将维度值别名进行替换成真实维度值 - doDimValueAliasLogic(schemaElementMatch,chatQueryContext.getSemanticSchema().getDimensionValues()); + doDimValueAliasLogic(schemaElementMatch, + chatQueryContext.getSemanticSchema().getDimensionValues()); addToSchemaMap(chatQueryContext.getMapInfo(), dataSetId, schemaElementMatch); } } } private void doDimValueAliasLogic(SchemaElementMatch schemaElementMatch, - List dimensionValues) { + List dimensionValues) { SchemaElement element = schemaElementMatch.getElement(); if (SchemaElementType.VALUE.equals(element.getType())) { Long dimId = element.getId(); @@ -126,7 +127,7 @@ public class KeywordMapper extends BaseMapper { } private void convertMapResultToMapInfo(ChatQueryContext chatQueryContext, - List mapResults) { + List mapResults) { for (DatabaseMapResult match : mapResults) { SchemaElement schemaElement = match.getSchemaElement(); Set regElementSet = @@ -153,8 +154,8 @@ public class KeywordMapper extends BaseMapper { return new HashSet<>(); } return elements.stream().filter( - elementMatch -> SchemaElementType.METRIC.equals(elementMatch.getElement().getType()) - || SchemaElementType.DIMENSION.equals(elementMatch.getElement().getType())) + elementMatch -> SchemaElementType.METRIC.equals(elementMatch.getElement().getType()) + || SchemaElementType.DIMENSION.equals(elementMatch.getElement().getType())) .map(elementMatch -> elementMatch.getElement().getId()).collect(Collectors.toSet()); } } diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/aspect/DimValueAspect.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/aspect/DimValueAspect.java index 8af101fe2..d02f81602 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/aspect/DimValueAspect.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/aspect/DimValueAspect.java @@ -124,7 +124,7 @@ public class DimValueAspect { sql = SqlReplaceHelper.replaceValue(sql, filedNameToValueMap); log.debug("correctorSql after replacing:{}", sql); querySqlReq.setSql(sql); - querySqlReq.getSqlInfo().setQuerySQL(sql); + // querySqlReq.getSqlInfo().setQuerySQL(sql); Map> techNameToBizName = getTechNameToBizName(dimensions); SemanticQueryResp queryResultWithColumns = (SemanticQueryResp) joinPoint.proceed(); diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/repository/impl/DimensionRepositoryImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/repository/impl/DimensionRepositoryImpl.java index 512a3e977..1e9f05f15 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/repository/impl/DimensionRepositoryImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/repository/impl/DimensionRepositoryImpl.java @@ -88,7 +88,7 @@ public class DimensionRepositoryImpl implements DimensionRepository { } if (StringUtils.isNotBlank(dimensionFilter.getKey())) { String key = dimensionFilter.getKey(); - queryWrapper.and(qw->qw.lambda().like(DimensionDO::getName, key).or() + queryWrapper.and(qw -> qw.lambda().like(DimensionDO::getName, key).or() .like(DimensionDO::getBizName, key).or().like(DimensionDO::getDescription, key) .or().like(DimensionDO::getAlias, key).or() .like(DimensionDO::getCreatedBy, key)); diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/repository/impl/MetricRepositoryImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/repository/impl/MetricRepositoryImpl.java index 181bf0f07..e27e479cb 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/repository/impl/MetricRepositoryImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/repository/impl/MetricRepositoryImpl.java @@ -114,14 +114,9 @@ public class MetricRepositoryImpl implements MetricRepository { } if (StringUtils.isNotBlank(metricFilter.getKey())) { String key = metricFilter.getKey(); - queryWrapper.lambda() - .and(wrapper -> wrapper - .like(MetricDO::getName, key) - .or().like(MetricDO::getBizName, key) - .or().like(MetricDO::getDescription, key) - .or().like(MetricDO::getAlias, key) - .or().like(MetricDO::getCreatedBy, key) - ); + queryWrapper.lambda().and(wrapper -> wrapper.like(MetricDO::getName, key).or() + .like(MetricDO::getBizName, key).or().like(MetricDO::getDescription, key).or() + .like(MetricDO::getAlias, key).or().like(MetricDO::getCreatedBy, key)); } return metricDOMapper.selectList(queryWrapper); diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/rest/DataSetController.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/rest/DataSetController.java index 1c6263f36..f63f3ca6c 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/rest/DataSetController.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/rest/DataSetController.java @@ -51,8 +51,9 @@ public class DataSetController { @GetMapping("/getDataSetList") public List getDataSetList(@RequestParam("domainId") Long domainId) { - List statuCodeList = Arrays.asList(StatusEnum.ONLINE.getCode(),StatusEnum.OFFLINE.getCode()); - return dataSetService.getDataSetList(domainId,statuCodeList); + List statuCodeList = + Arrays.asList(StatusEnum.ONLINE.getCode(), StatusEnum.OFFLINE.getCode()); + return dataSetService.getDataSetList(domainId, statuCodeList); } @DeleteMapping("/{id}") diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/DataSetService.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/DataSetService.java index 2bb87505e..3d55c4188 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/DataSetService.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/DataSetService.java @@ -20,7 +20,7 @@ public interface DataSetService { List getDataSetList(MetaFilter metaFilter); - List getDataSetList(Long domainId ,List statuCodesList); + List getDataSetList(Long domainId, List statuCodesList); void delete(Long id, User user); diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/DimensionService.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/DimensionService.java index d954f225a..3a27b3a62 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/DimensionService.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/DimensionService.java @@ -27,7 +27,8 @@ public interface DimensionService { DimensionResp createDimension(DimensionReq dimensionReq, User user) throws Exception; - void alterDimensionBatch(List dimensionReqs, Long modelId, User user) throws Exception; + void alterDimensionBatch(List dimensionReqs, Long modelId, User user) + throws Exception; void createDimensionBatch(List dimensionReqs, User user) throws Exception; diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/ModelService.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/ModelService.java index dbfdc3920..b6be0f6c5 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/ModelService.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/ModelService.java @@ -55,7 +55,9 @@ public interface ModelService { void batchUpdateStatus(MetaBatchReq metaBatchReq, User user); - void updateModelByDimAndMetric(Long modelId, List dimensionReqList, List metricReqList, User user); + void updateModelByDimAndMetric(Long modelId, List dimensionReqList, + List metricReqList, User user); - void deleteModelDetailByDimAndMetric(Long modelId, List dimensionReqList, List metricReqList); + void deleteModelDetailByDimAndMetric(Long modelId, List dimensionReqList, + List metricReqList); } diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DataSetServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DataSetServiceImpl.java index e7f4c97ce..a2cf6c91e 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DataSetServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DataSetServiceImpl.java @@ -104,7 +104,7 @@ public class DataSetServiceImpl extends ServiceImpl @Override public List getDataSetList(Long domainId, List statuCodesList) { - if(domainId==null || CollectionUtils.isEmpty(statuCodesList)){ + if (domainId == null || CollectionUtils.isEmpty(statuCodesList)) { return List.of(); } QueryWrapper wrapper = new QueryWrapper<>(); diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java index 9040a8b4b..68ded802c 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java @@ -67,8 +67,8 @@ public class DimensionServiceImpl extends ServiceImpl dimensionReqs, Long modelId, User user) throws Exception { + public void alterDimensionBatch(List dimensionReqs, Long modelId, User user) + throws Exception { List dimensionResps = getDimensions(modelId); // get all dimension in model, only use bizname, because name can be changed to everything Map bizNameMap = dimensionResps.stream() @@ -117,7 +119,8 @@ public class DimensionServiceImpl extends ServiceImpl bizNames = dimensionReqs.stream().map(DimensionReq::getBizName).collect(Collectors.toList()); + List bizNames = + dimensionReqs.stream().map(DimensionReq::getBizName).collect(Collectors.toList()); bizNameMap.keySet().forEach(bizNameInDb -> { if (!bizNames.contains(bizNameInDb)) { dimensionToDelete.add(bizNameMap.get(bizNameInDb).getId()); @@ -148,7 +151,8 @@ public class DimensionServiceImpl extends ServiceImpl dimensionReqList, User user) { checkExist(dimensionReqList); - List dimensionDOS = dimensionReqList.stream().map(DimensionConverter::convert2DimensionDO).collect(Collectors.toList()); + List dimensionDOS = dimensionReqList.stream() + .map(DimensionConverter::convert2DimensionDO).collect(Collectors.toList()); dimensionRepository.batchUpdate(dimensionDOS); // should update modelDetail as well - modelService.updateModelByDimAndMetric(dimensionReqList.get(0).getModelId(),dimensionReqList, null, user); + modelService.updateModelByDimAndMetric(dimensionReqList.get(0).getModelId(), + dimensionReqList, null, user); sendEventBatch(dimensionDOS, EventType.UPDATE); } @@ -231,7 +238,8 @@ public class DimensionServiceImpl extends ServiceImpl dimensionDOList = dimensionRepository.getDimensions(dimensionFilter); if (CollectionUtils.isEmpty(dimensionDOList)) { - throw new RuntimeException(String.format("the dimension %s not exist", StringUtils.join(",",idList))); + throw new RuntimeException( + String.format("the dimension %s not exist", StringUtils.join(",", idList))); } dimensionDOList.forEach(dimensionDO -> { dimensionDO.setStatus(StatusEnum.DELETED.getCode()); @@ -250,7 +259,8 @@ public class DimensionServiceImpl extends ServiceImpl filterByField(List dimensionResps, - List fields) { + List fields) { List dimensionFiltered = Lists.newArrayList(); for (DimensionResp dimensionResp : dimensionResps) { for (String field : fields) { @@ -358,7 +368,7 @@ public class DimensionServiceImpl extends ServiceImpl dimensionResps = Lists.newArrayList(); if (!CollectionUtils.isEmpty(dimensionDOS)) { dimensionResps = dimensionDOS.stream().map( - dimensionDO -> DimensionConverter.convert2DimensionResp(dimensionDO, modelMap)) + dimensionDO -> DimensionConverter.convert2DimensionResp(dimensionDO, modelMap)) .collect(Collectors.toList()); } return dimensionResps; diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/MetricServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/MetricServiceImpl.java index 2d130833e..390d4c63f 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/MetricServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/MetricServiceImpl.java @@ -58,9 +58,9 @@ public class MetricServiceImpl extends ServiceImpl private ChatLayerService chatLayerService; public MetricServiceImpl(MetricRepository metricRepository, ModelService modelService, - AliasGenerateHelper aliasGenerateHelper, CollectService collectService, - DataSetService dataSetService, ApplicationEventPublisher eventPublisher, - DimensionService dimensionService, @Lazy ChatLayerService chatLayerService) { + AliasGenerateHelper aliasGenerateHelper, CollectService collectService, + DataSetService dataSetService, ApplicationEventPublisher eventPublisher, + DimensionService dimensionService, @Lazy ChatLayerService chatLayerService) { this.metricRepository = metricRepository; this.modelService = modelService; this.aliasGenerateHelper = aliasGenerateHelper; @@ -80,7 +80,8 @@ public class MetricServiceImpl extends ServiceImpl metricRepository.createMetric(metricDO); sendEventBatch(Lists.newArrayList(metricDO), EventType.ADD); // should update modelDetail as well - modelService.updateModelByDimAndMetric(metricReq.getModelId(),null, Lists.newArrayList(metricReq), user); + modelService.updateModelByDimAndMetric(metricReq.getModelId(), null, + Lists.newArrayList(metricReq), user); return MetricConverter.convert2MetricResp(metricDO); @@ -93,7 +94,8 @@ public class MetricServiceImpl extends ServiceImpl .map(MetricConverter::convert2MetricDO).collect(Collectors.toList()); metricRepository.createMetricBatch(metricDOS); // should update modelDetail as well - modelService.updateModelByDimAndMetric(metricReqs.get(0).getModelId(), null, metricReqs, user); + modelService.updateModelByDimAndMetric(metricReqs.get(0).getModelId(), null, metricReqs, + user); sendEventBatch(metricDOS, EventType.ADD); } @@ -123,7 +125,8 @@ public class MetricServiceImpl extends ServiceImpl }); // the bizNames from alter dimensions - List bizNames = metricReqs.stream().map(MetricReq::getBizName).collect(Collectors.toList()); + List bizNames = + metricReqs.stream().map(MetricReq::getBizName).collect(Collectors.toList()); bizNameMap.keySet().forEach(bizNameInDb -> { if (!bizNames.contains(bizNameInDb)) { metricToDelete.add(bizNameMap.get(bizNameInDb).getId()); @@ -163,7 +166,8 @@ public class MetricServiceImpl extends ServiceImpl sendEvent(dataItem, EventType.UPDATE); } // should update modelDetail as well - modelService.updateModelByDimAndMetric(metricReq.getModelId(), null, Lists.newArrayList(metricReq), user); + modelService.updateModelByDimAndMetric(metricReq.getModelId(), null, + Lists.newArrayList(metricReq), user); return MetricConverter.convert2MetricResp(metricDO); } @@ -171,10 +175,12 @@ public class MetricServiceImpl extends ServiceImpl public void updateMetricBatch(List metricReqs, User user) { MetricCheckUtils.checkParam(metricReqs); checkExist(metricReqs); - List metricDOS = metricReqs.stream().map(MetricConverter::convert2MetricDO).collect(Collectors.toList()); + List metricDOS = metricReqs.stream().map(MetricConverter::convert2MetricDO) + .collect(Collectors.toList()); metricRepository.batchUpdateMetric(metricDOS); // should update modelDetail as well - modelService.updateModelByDimAndMetric(metricReqs.get(0).getModelId(), null, metricReqs, user); + modelService.updateModelByDimAndMetric(metricReqs.get(0).getModelId(), null, metricReqs, + user); sendEventBatch(metricDOS, EventType.UPDATE); } @@ -277,7 +283,8 @@ public class MetricServiceImpl extends ServiceImpl metricDO.setUpdatedBy(user.getName()); metricRepository.updateMetric(metricDO); // should update modelDetail - modelService.deleteModelDetailByDimAndMetric(metricDO.getModelId(), null, Lists.newArrayList(metricDO)); + modelService.deleteModelDetailByDimAndMetric(metricDO.getModelId(), null, + Lists.newArrayList(metricDO)); sendEventBatch(Lists.newArrayList(metricDO), EventType.DELETE); } @@ -287,7 +294,8 @@ public class MetricServiceImpl extends ServiceImpl metricsFilter.setMetricIds(idList); List metricDOList = metricRepository.getMetrics(metricsFilter); if (CollectionUtils.isEmpty(metricDOList)) { - throw new RuntimeException(String.format("the metrics %s not exist", StringUtils.join(",",idList))); + throw new RuntimeException( + String.format("the metrics %s not exist", StringUtils.join(",", idList))); } metricDOList.forEach(metricDO -> { metricDO.setStatus(StatusEnum.DELETED.getCode()); @@ -296,7 +304,8 @@ public class MetricServiceImpl extends ServiceImpl }); metricRepository.batchUpdateStatus(metricDOList); // should update modelDetail - modelService.deleteModelDetailByDimAndMetric(metricDOList.get(0).getModelId(), null, metricDOList); + modelService.deleteModelDetailByDimAndMetric(metricDOList.get(0).getModelId(), null, + metricDOList); sendEventBatch(metricDOList, EventType.DELETE); } @@ -433,7 +442,7 @@ public class MetricServiceImpl extends ServiceImpl } private boolean filterByField(List metricResps, MetricResp metricResp, - List fields, Set metricRespFiltered) { + List fields, Set metricRespFiltered) { if (MetricDefineType.METRIC.equals(metricResp.getMetricDefineType())) { List ids = metricResp.getMetricDefineByMetricParams().getMetrics().stream() .map(MetricParam::getId).collect(Collectors.toList()); @@ -470,8 +479,8 @@ public class MetricServiceImpl extends ServiceImpl metricFilter.setModelIds(Lists.newArrayList(modelId)); List metricResps = getMetrics(metricFilter); return metricResps.stream().filter( - metricResp -> MetricDefineType.FIELD.equals(metricResp.getMetricDefineType()) - || MetricDefineType.MEASURE.equals(metricResp.getMetricDefineType())) + metricResp -> MetricDefineType.FIELD.equals(metricResp.getMetricDefineType()) + || MetricDefineType.MEASURE.equals(metricResp.getMetricDefineType())) .collect(Collectors.toList()); } @@ -645,7 +654,7 @@ public class MetricServiceImpl extends ServiceImpl Map modelMap = modelService.getModelMap(modelFilter); if (!CollectionUtils.isEmpty(metricDOS)) { metricResps = metricDOS.stream().map( - metricDO -> MetricConverter.convert2MetricResp(metricDO, modelMap, collect)) + metricDO -> MetricConverter.convert2MetricResp(metricDO, modelMap, collect)) .collect(Collectors.toList()); } return metricResps; @@ -703,7 +712,7 @@ public class MetricServiceImpl extends ServiceImpl @Override public void batchFillMetricDefaultAgg(List metricResps, - List modelResps) { + List modelResps) { Map modelRespMap = modelResps.stream().collect(Collectors.toMap(ModelResp::getId, m -> m)); for (MetricResp metricResp : metricResps) { @@ -852,7 +861,7 @@ public class MetricServiceImpl extends ServiceImpl } private Set getModelIds(Set modelIdsByDomainId, List metricResps, - List dimensionResps) { + List dimensionResps) { Set result = new HashSet<>(); if (org.apache.commons.collections.CollectionUtils.isNotEmpty(modelIdsByDomainId)) { result.addAll(modelIdsByDomainId); @@ -889,7 +898,8 @@ public class MetricServiceImpl extends ServiceImpl private boolean isChange(MetricReq metricReq, MetricResp metricResp) { boolean isNameChange = !metricReq.getName().equals(metricResp.getName()); - boolean isBizNameChange = !Objects.equals(metricReq.getMetricDefineByMeasureParams(),metricResp.getMetricDefineByMeasureParams()); + boolean isBizNameChange = !Objects.equals(metricReq.getMetricDefineByMeasureParams(), + metricResp.getMetricDefineByMeasureParams()); return isNameChange || isBizNameChange; } } diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/ModelServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/ModelServiceImpl.java index 4c0b61535..c0d414c6a 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/ModelServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/ModelServiceImpl.java @@ -67,10 +67,10 @@ public class ModelServiceImpl implements ModelService { new ThreadPoolExecutor(0, 5, 5L, TimeUnit.SECONDS, new LinkedBlockingQueue<>()); public ModelServiceImpl(ModelRepository modelRepository, DatabaseService databaseService, - @Lazy DimensionService dimensionService, @Lazy MetricService metricService, - DomainService domainService, UserService userService, DataSetService dataSetService, - DateInfoRepository dateInfoRepository, ModelRelaService modelRelaService, - ApplicationEventPublisher eventPublisher) { + @Lazy DimensionService dimensionService, @Lazy MetricService metricService, + DomainService domainService, UserService userService, DataSetService dataSetService, + DateInfoRepository dateInfoRepository, ModelRelaService modelRelaService, + ApplicationEventPublisher eventPublisher) { this.modelRepository = modelRepository; this.databaseService = databaseService; this.dimensionService = dimensionService; @@ -216,7 +216,7 @@ public class ModelServiceImpl implements ModelService { } private void doBuild(ModelBuildReq modelBuildReq, DbSchema curSchema, List dbSchemas, - Map modelSchemaMap) { + Map modelSchemaMap) { ModelSchema modelSchema = new ModelSchema(); List semanticModellers = CoreComponentFactory.getSemanticModellers(); for (SemanticModeller semanticModeller : semanticModellers) { @@ -234,7 +234,7 @@ public class ModelServiceImpl implements ModelService { } private List convert(Map> dbColumnMap, - ModelBuildReq modelBuildReq) { + ModelBuildReq modelBuildReq) { return dbColumnMap.keySet().stream() .map(key -> convert(modelBuildReq, key, dbColumnMap.get(key))) .collect(Collectors.toList()); @@ -383,7 +383,7 @@ public class ModelServiceImpl implements ModelService { } public List getModelRespAuthInheritDomain(User user, Long domainId, - AuthType authType) { + AuthType authType) { List domainIds = domainService.getDomainAuthSet(user, authType).stream().filter(domainResp -> { if (domainId == null) { @@ -521,13 +521,14 @@ public class ModelServiceImpl implements ModelService { } @Override - public void updateModelByDimAndMetric(Long modelId, List dimensionReqList, List metricReqList, User user) { + public void updateModelByDimAndMetric(Long modelId, List dimensionReqList, + List metricReqList, User user) { ModelDO modelDO = getModelDO(modelId); ModelDetail modelDetail = JsonUtil.toObject(modelDO.getModelDetail(), ModelDetail.class); if (!CollectionUtils.isEmpty(dimensionReqList)) { dimensionReqList.forEach(dimensionReq -> { - Optional dimOptional = modelDetail.getDimensions().stream() - .filter(dimension -> dimension.getBizName().equals(dimensionReq.getBizName())) + Optional dimOptional = modelDetail.getDimensions().stream().filter( + dimension -> dimension.getBizName().equals(dimensionReq.getBizName())) .findFirst(); if (dimOptional.isPresent()) { Dimension dimension = dimOptional.get(); @@ -547,10 +548,13 @@ public class ModelServiceImpl implements ModelService { if (!CollectionUtils.isEmpty(metricReqList)) { // 目前modeltail中的measure - Map mesureMap = modelDetail.getMeasures().stream().collect(Collectors.toMap(Measure::getBizName, a -> a, (k1, k2) -> k1)); + Map mesureMap = modelDetail.getMeasures().stream() + .collect(Collectors.toMap(Measure::getBizName, a -> a, (k1, k2) -> k1)); metricReqList.forEach(metricReq -> { - if (null != metricReq.getMetricDefineByMeasureParams() && !CollectionUtils.isEmpty(metricReq.getMetricDefineByMeasureParams().getMeasures())) { - for(Measure alterMeasure : metricReq.getMetricDefineByMeasureParams().getMeasures()) { + if (null != metricReq.getMetricDefineByMeasureParams() && !CollectionUtils + .isEmpty(metricReq.getMetricDefineByMeasureParams().getMeasures())) { + for (Measure alterMeasure : metricReq.getMetricDefineByMeasureParams() + .getMeasures()) { if (mesureMap.containsKey(alterMeasure.getBizName())) { Measure measure = mesureMap.get(alterMeasure.getBizName()); BeanUtils.copyProperties(alterMeasure, measure); @@ -569,13 +573,14 @@ public class ModelServiceImpl implements ModelService { } @Override - public void deleteModelDetailByDimAndMetric(Long modelId, List dimensionList, List metricReqList) { + public void deleteModelDetailByDimAndMetric(Long modelId, List dimensionList, + List metricReqList) { ModelDO modelDO = getModelDO(modelId); ModelDetail modelDetail = JsonUtil.toObject(modelDO.getModelDetail(), ModelDetail.class); if (!CollectionUtils.isEmpty(dimensionList)) { dimensionList.forEach(dimensionReq -> { - Optional dimOptional = modelDetail.getDimensions().stream() - .filter(dimension -> dimension.getBizName().equals(dimensionReq.getBizName())) + Optional dimOptional = modelDetail.getDimensions().stream().filter( + dimension -> dimension.getBizName().equals(dimensionReq.getBizName())) .findFirst(); if (dimOptional.isPresent()) { Dimension dimension = dimOptional.get(); @@ -638,7 +643,7 @@ public class ModelServiceImpl implements ModelService { } public static boolean checkDataSetPermission(Set orgIds, User user, - ModelResp modelResp) { + ModelResp modelResp) { if (checkAdminPermission(orgIds, user, modelResp)) { return true; } diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/DataSetSchemaBuilder.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/DataSetSchemaBuilder.java index 09369f277..8325a8a35 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/DataSetSchemaBuilder.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/DataSetSchemaBuilder.java @@ -198,8 +198,7 @@ public class DataSetSchemaBuilder { }).collect(Collectors.toList()); } - private static void setDefaultTimeFormat(SchemaElement dimToAdd, - String timeFormat) { + private static void setDefaultTimeFormat(SchemaElement dimToAdd, String timeFormat) { dimToAdd.getExtInfo().put(DimensionConstants.DIMENSION_TIME_FORMAT, timeFormat); } } diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/MetricCheckUtils.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/MetricCheckUtils.java index 9b0d2729c..c5df449f4 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/MetricCheckUtils.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/MetricCheckUtils.java @@ -56,7 +56,8 @@ public class MetricCheckUtils { if (StringUtils.isBlank(expr)) { throw new InvalidArgumentException("表达式不可为空"); } - String forbiddenCharacters = NameCheckUtils.findForbiddenCharacters(metricReq.getName()); + String forbiddenCharacters = + NameCheckUtils.findForbiddenCharacters(metricReq.getName()); if (StringUtils.isNotBlank(forbiddenCharacters)) { throw new InvalidArgumentException( String.format("名称包含特殊字符%s, 请修改", forbiddenCharacters)); diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/ModelConverter.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/ModelConverter.java index a7672d53a..0e7c29a5d 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/ModelConverter.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/ModelConverter.java @@ -143,7 +143,7 @@ public class ModelConverter { } public static ModelReq convert(ModelSchema modelSchema, ModelBuildReq modelBuildReq, - String tableName) { + String tableName) { ModelReq modelReq = new ModelReq(); modelReq.setName(modelBuildReq.getName() != null ? modelBuildReq.getName() : tableName); modelReq.setBizName( @@ -169,7 +169,7 @@ public class ModelConverter { if (getIdentifyType(fieldType) != null) { Optional optional = modelDetail.getIdentifiers().stream().filter( - identify -> identify.getBizName().equals(semanticColumn.getColumnName())) + identify -> identify.getBizName().equals(semanticColumn.getColumnName())) .findAny(); if (optional.isEmpty()) { Identify identify = new Identify(semanticColumn.getName(), @@ -178,7 +178,7 @@ public class ModelConverter { } } else if (FieldType.measure.equals(fieldType)) { Optional optional = modelDetail.getMeasures().stream().filter( - measure -> measure.getBizName().equals(semanticColumn.getColumnName())) + measure -> measure.getBizName().equals(semanticColumn.getColumnName())) .findAny(); if (optional.isEmpty()) { Measure measure = new Measure(semanticColumn.getName(), @@ -188,7 +188,7 @@ public class ModelConverter { } } else { Optional optional = modelDetail.getDimensions().stream().filter( - dimension -> dimension.getBizName().equals(semanticColumn.getColumnName())) + dimension -> dimension.getBizName().equals(semanticColumn.getColumnName())) .findAny(); if (optional.isEmpty()) { Dimension dim = new Dimension(semanticColumn.getName(), @@ -294,7 +294,8 @@ public class ModelConverter { List dimensions = modelReq.getModelDetail().getDimensions(); List identifiers = modelReq.getModelDetail().getIdentifiers(); List fields = modelReq.getModelDetail().getFields(); - List fieldNames = fields.stream().map(Field::getFieldName).collect(Collectors.toList()); + List fieldNames = + fields.stream().map(Field::getFieldName).collect(Collectors.toList()); if (measures != null) { for (Measure measure : measures) { @@ -302,7 +303,8 @@ public class ModelConverter { && StringUtils.isBlank(measure.getExpr())) { measure.setExpr(measure.getBizName()); } - if (StringUtils.isNotBlank(measure.getBizName()) && !fieldNames.contains(measure.getBizName())) { + if (StringUtils.isNotBlank(measure.getBizName()) + && !fieldNames.contains(measure.getBizName())) { fields.add(new Field(measure.getBizName(), "")); } } @@ -313,18 +315,21 @@ public class ModelConverter { && StringUtils.isBlank(dimension.getExpr())) { dimension.setExpr(dimension.getBizName()); } - if (StringUtils.isNotBlank(dimension.getBizName()) && !fieldNames.contains(dimension.getBizName())) { + if (StringUtils.isNotBlank(dimension.getBizName()) + && !fieldNames.contains(dimension.getBizName())) { fields.add(new Field(dimension.getBizName(), "")); } } } if (identifiers != null) { for (Identify identify : identifiers) { - if (StringUtils.isNotBlank(identify.getBizName()) && StringUtils.isBlank(identify.getName())) { + if (StringUtils.isNotBlank(identify.getBizName()) + && StringUtils.isBlank(identify.getName())) { identify.setName(identify.getBizName()); } identify.setIsCreateDimension(1); - if (StringUtils.isNotBlank(identify.getBizName()) && !fieldNames.contains(identify.getBizName())) { + if (StringUtils.isNotBlank(identify.getBizName()) + && !fieldNames.contains(identify.getBizName())) { fields.add(new Field(identify.getBizName(), "")); } }