(improvement)(project) Remove additional logging dependencies and use logback as the primary logging framework. (#1235)

This commit is contained in:
lexluo09
2024-06-27 09:39:26 +08:00
committed by GitHub
parent 24674fe0be
commit 7c711f6105
35 changed files with 210 additions and 221 deletions

View File

@@ -8,11 +8,11 @@ import com.tencent.supersonic.common.util.S2ThreadContext;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.catalina.connector.RequestFacade; import org.apache.catalina.connector.RequestFacade;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.util.Strings;
import org.apache.tomcat.util.http.MimeHeaders; import org.apache.tomcat.util.http.MimeHeaders;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.support.StandardMultipartHttpServletRequest; import org.springframework.web.multipart.support.StandardMultipartHttpServletRequest;
import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.Arrays; import java.util.Arrays;
@@ -33,7 +33,7 @@ public abstract class AuthenticationInterceptor implements HandlerInterceptor {
protected boolean isExcludedUri(String uri) { protected boolean isExcludedUri(String uri) {
String excludePathStr = authenticationConfig.getExcludePath(); String excludePathStr = authenticationConfig.getExcludePath();
if (Strings.isEmpty(excludePathStr)) { if (StringUtils.isEmpty(excludePathStr)) {
return false; return false;
} }
List<String> excludePaths = Arrays.asList(excludePathStr.split(",")); List<String> excludePaths = Arrays.asList(excludePathStr.split(","));
@@ -45,7 +45,7 @@ public abstract class AuthenticationInterceptor implements HandlerInterceptor {
protected boolean isIncludedUri(String uri) { protected boolean isIncludedUri(String uri) {
String includePathStr = authenticationConfig.getIncludePath(); String includePathStr = authenticationConfig.getIncludePath();
if (Strings.isEmpty(includePathStr)) { if (StringUtils.isEmpty(includePathStr)) {
return false; return false;
} }
List<String> includePaths = Arrays.asList(includePathStr.split(",")); List<String> includePaths = Arrays.asList(includePathStr.split(","));

View File

@@ -9,7 +9,6 @@ import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm; import io.jsonwebtoken.SignatureAlgorithm;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.crypto.spec.SecretKeySpec; import javax.crypto.spec.SecretKeySpec;
@@ -128,7 +127,6 @@ public class UserTokenUtils {
return claims; return claims;
} }
@NotNull
private static String getTokenString(String token) { private static String getTokenString(String token) {
return token.startsWith(TOKEN_PREFIX) ? token.substring(token.indexOf(TOKEN_PREFIX) return token.startsWith(TOKEN_PREFIX) ? token.substring(token.indexOf(TOKEN_PREFIX)
+ TOKEN_PREFIX.length()).trim() : token.trim(); + TOKEN_PREFIX.length()).trim() : token.trim();

View File

@@ -1,27 +1,28 @@
package com.tencent.supersonic.auth.authorization.service; package com.tencent.supersonic.auth.authorization.service;
import com.google.common.base.Strings;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.auth.api.authentication.service.UserService; import com.tencent.supersonic.auth.api.authentication.service.UserService;
import com.tencent.supersonic.auth.api.authorization.pojo.AuthGroup;
import com.tencent.supersonic.auth.api.authorization.pojo.AuthRes; import com.tencent.supersonic.auth.api.authorization.pojo.AuthRes;
import com.tencent.supersonic.auth.api.authorization.pojo.AuthResGrp; import com.tencent.supersonic.auth.api.authorization.pojo.AuthResGrp;
import com.tencent.supersonic.auth.api.authorization.pojo.AuthRule;
import com.tencent.supersonic.auth.api.authorization.pojo.DimensionFilter; import com.tencent.supersonic.auth.api.authorization.pojo.DimensionFilter;
import com.tencent.supersonic.auth.api.authorization.request.QueryAuthResReq; import com.tencent.supersonic.auth.api.authorization.request.QueryAuthResReq;
import com.tencent.supersonic.auth.api.authorization.response.AuthorizedResourceResp; import com.tencent.supersonic.auth.api.authorization.response.AuthorizedResourceResp;
import com.tencent.supersonic.auth.api.authorization.service.AuthService; import com.tencent.supersonic.auth.api.authorization.service.AuthService;
import com.tencent.supersonic.auth.api.authorization.pojo.AuthGroup;
import com.tencent.supersonic.auth.api.authorization.pojo.AuthRule;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.Set; import java.util.Set;
import java.util.Map;
import java.util.ArrayList;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Service @Service
@@ -117,7 +118,8 @@ public class AuthServiceImpl implements AuthService {
if (!CollectionUtils.isEmpty(authGroups)) { if (!CollectionUtils.isEmpty(authGroups)) {
for (AuthGroup group : authGroups) { for (AuthGroup group : authGroups) {
if (group.getDimensionFilters() != null if (group.getDimensionFilters() != null
&& group.getDimensionFilters().stream().anyMatch(expr -> !Strings.isNullOrEmpty(expr))) { && group.getDimensionFilters().stream().anyMatch(expr ->
!StringUtils.isEmpty(expr))) {
DimensionFilter df = new DimensionFilter(); DimensionFilter df = new DimensionFilter();
df.setDescription(group.getDimensionFilterDescription()); df.setDescription(group.getDimensionFilterDescription());
df.setExpressions(group.getDimensionFilters()); df.setExpressions(group.getDimensionFilters());

View File

@@ -6,7 +6,7 @@ import com.tencent.supersonic.chat.server.persistence.mapper.PluginDOMapper;
import com.tencent.supersonic.chat.server.persistence.repository.PluginRepository; import com.tencent.supersonic.chat.server.persistence.repository.PluginRepository;
import com.tencent.supersonic.common.util.ContextUtils; import com.tencent.supersonic.common.util.ContextUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.util.Strings; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.ArrayList; import java.util.ArrayList;
@@ -39,7 +39,7 @@ public class PluginRepositoryImpl implements PluginRepository {
for (PluginDO pluginDO : pluginDOS) { for (PluginDO pluginDO : pluginDOS) {
String pattern = pluginDO.getPattern(); String pattern = pluginDO.getPattern();
if (Strings.isNotEmpty(pattern)) { if (StringUtils.isNotEmpty(pattern)) {
Pattern pluginPattern = Pattern.compile(pattern); Pattern pluginPattern = Pattern.compile(pattern);
Matcher pluginMatcher = pluginPattern.matcher(queryText); Matcher pluginMatcher = pluginPattern.matcher(queryText);

View File

@@ -1,10 +1,6 @@
package com.tencent.supersonic.chat.server.util; package com.tencent.supersonic.chat.server.util;
import static com.tencent.supersonic.common.pojo.Constants.ADMIN_LOWER;
import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.headless.api.pojo.DataSetSchema;
import com.tencent.supersonic.headless.api.pojo.SchemaElement;
import com.tencent.supersonic.chat.api.pojo.request.ChatAggConfigReq; import com.tencent.supersonic.chat.api.pojo.request.ChatAggConfigReq;
import com.tencent.supersonic.chat.api.pojo.request.ChatConfigBaseReq; import com.tencent.supersonic.chat.api.pojo.request.ChatConfigBaseReq;
import com.tencent.supersonic.chat.api.pojo.request.ChatConfigEditReqReq; import com.tencent.supersonic.chat.api.pojo.request.ChatConfigEditReqReq;
@@ -17,16 +13,21 @@ import com.tencent.supersonic.chat.server.persistence.dataobject.ChatConfigDO;
import com.tencent.supersonic.common.pojo.RecordInfo; import com.tencent.supersonic.common.pojo.RecordInfo;
import com.tencent.supersonic.common.pojo.enums.StatusEnum; import com.tencent.supersonic.common.pojo.enums.StatusEnum;
import com.tencent.supersonic.common.util.JsonUtil; import com.tencent.supersonic.common.util.JsonUtil;
import com.tencent.supersonic.headless.api.pojo.DataSetSchema;
import com.tencent.supersonic.headless.api.pojo.SchemaElement;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.util.Strings; import static com.tencent.supersonic.common.pojo.Constants.ADMIN_LOWER;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
@Component @Component
@@ -37,7 +38,7 @@ public class ChatConfigHelper {
ChatConfig chatConfig = new ChatConfig(); ChatConfig chatConfig = new ChatConfig();
BeanUtils.copyProperties(extendBaseCmd, chatConfig); BeanUtils.copyProperties(extendBaseCmd, chatConfig);
RecordInfo recordInfo = new RecordInfo(); RecordInfo recordInfo = new RecordInfo();
String creator = (Objects.isNull(user) || Strings.isEmpty(user.getName())) ? ADMIN_LOWER : user.getName(); String creator = (Objects.isNull(user) || StringUtils.isEmpty(user.getName())) ? ADMIN_LOWER : user.getName();
recordInfo.createdBy(creator); recordInfo.createdBy(creator);
chatConfig.setRecordInfo(recordInfo); chatConfig.setRecordInfo(recordInfo);
chatConfig.setStatus(StatusEnum.ONLINE); chatConfig.setStatus(StatusEnum.ONLINE);
@@ -49,7 +50,7 @@ public class ChatConfigHelper {
BeanUtils.copyProperties(extendEditCmd, chatConfig); BeanUtils.copyProperties(extendEditCmd, chatConfig);
RecordInfo recordInfo = new RecordInfo(); RecordInfo recordInfo = new RecordInfo();
String user = (Objects.isNull(facadeUser) || Strings.isEmpty(facadeUser.getName())) String user = (Objects.isNull(facadeUser) || StringUtils.isEmpty(facadeUser.getName()))
? ADMIN_LOWER : facadeUser.getName(); ? ADMIN_LOWER : facadeUser.getName();
recordInfo.updatedBy(user); recordInfo.updatedBy(user);
chatConfig.setRecordInfo(recordInfo); chatConfig.setRecordInfo(recordInfo);
@@ -120,11 +121,11 @@ public class ChatConfigHelper {
chatConfigDescriptor.setUpdatedAt(chatConfigDO.getUpdatedAt()); chatConfigDescriptor.setUpdatedAt(chatConfigDO.getUpdatedAt());
if (Strings.isEmpty(chatConfigDO.getChatAggConfig())) { if (StringUtils.isEmpty(chatConfigDO.getChatAggConfig())) {
chatConfigDescriptor.setChatAggConfig(generateEmptyChatAggConfigResp()); chatConfigDescriptor.setChatAggConfig(generateEmptyChatAggConfigResp());
} }
if (Strings.isEmpty(chatConfigDO.getChatDetailConfig())) { if (StringUtils.isEmpty(chatConfigDO.getChatDetailConfig())) {
chatConfigDescriptor.setChatDetailConfig(generateEmptyChatDetailConfigResp()); chatConfigDescriptor.setChatDetailConfig(generateEmptyChatDetailConfigResp());
} }
return chatConfigDescriptor; return chatConfigDescriptor;

View File

@@ -14,7 +14,6 @@ import dev.langchain4j.store.embedding.TextSegmentConvert;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.ParameterizedTypeReference; import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.HttpEntity; import org.springframework.http.HttpEntity;
@@ -116,7 +115,7 @@ public class SimilarQueryManager {
} }
private ResponseEntity<String> doRequest(String path, String jsonBody) { private ResponseEntity<String> doRequest(String path, String jsonBody) {
if (Strings.isEmpty(embeddingConfig.getUrl())) { if (StringUtils.isEmpty(embeddingConfig.getUrl())) {
return ResponseEntity.of(Optional.empty()); return ResponseEntity.of(Optional.empty());
} }
String url = embeddingConfig.getUrl() + path; String url = embeddingConfig.getUrl() + path;

View File

@@ -173,20 +173,6 @@
<dependency> <dependency>
<groupId>dev.langchain4j</groupId> <groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-milvus</artifactId> <artifactId>langchain4j-milvus</artifactId>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-to-slf4j</artifactId>
</exclusion>
</exclusions>
</dependency> </dependency>
<dependency> <dependency>
<groupId>dev.langchain4j</groupId> <groupId>dev.langchain4j</groupId>
@@ -196,11 +182,6 @@
<groupId>dev.langchain4j</groupId> <groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-embeddings-bge-small-zh</artifactId> <artifactId>langchain4j-embeddings-bge-small-zh</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${apache.log4j.version}</version>
</dependency>
<dependency> <dependency>
<groupId>dev.langchain4j</groupId> <groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-embeddings</artifactId> <artifactId>langchain4j-embeddings</artifactId>

View File

@@ -1,11 +1,11 @@
package com.tencent.supersonic.common.util; package com.tencent.supersonic.common.util;
import com.google.common.base.Strings;
import com.tencent.supersonic.common.pojo.Constants; import com.tencent.supersonic.common.pojo.Constants;
import com.tencent.supersonic.common.pojo.DateConf; import com.tencent.supersonic.common.pojo.DateConf;
import com.tencent.supersonic.common.pojo.ItemDateResp; import com.tencent.supersonic.common.pojo.ItemDateResp;
import lombok.Data; import lombok.Data;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.ImmutablePair;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@@ -73,8 +73,8 @@ public class DateModeUtils {
*/ */
public String hasDataModeStr(ItemDateResp dateDate, DateConf dateInfo) { public String hasDataModeStr(ItemDateResp dateDate, DateConf dateInfo) {
if (Objects.isNull(dateDate) if (Objects.isNull(dateDate)
|| Strings.isNullOrEmpty(dateDate.getStartDate()) || StringUtils.isEmpty(dateDate.getStartDate())
|| Strings.isNullOrEmpty(dateDate.getStartDate()) || StringUtils.isEmpty(dateDate.getStartDate())
) { ) {
return String.format("(%s >= '%s' and %s <= '%s')", sysDateCol, dateInfo.getStartDate(), sysDateCol, return String.format("(%s >= '%s' and %s <= '%s')", sysDateCol, dateInfo.getStartDate(), sysDateCol,
dateInfo.getEndDate()); dateInfo.getEndDate());
@@ -82,7 +82,7 @@ public class DateModeUtils {
log.info("dateDate:{}", dateDate); log.info("dateDate:{}", dateDate);
} }
String dateFormatStr = dateDate.getDateFormat(); String dateFormatStr = dateDate.getDateFormat();
if (Strings.isNullOrEmpty(dateFormatStr)) { if (StringUtils.isEmpty(dateFormatStr)) {
dateFormatStr = DAY_FORMAT; dateFormatStr = DAY_FORMAT;
} }
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(dateFormatStr); DateTimeFormatter formatter = DateTimeFormatter.ofPattern(dateFormatStr);
@@ -136,7 +136,7 @@ public class DateModeUtils {
public ImmutablePair<String, String> recentDay(ItemDateResp dateDate, DateConf dateInfo) { public ImmutablePair<String, String> recentDay(ItemDateResp dateDate, DateConf dateInfo) {
String dateFormatStr = dateDate.getDateFormat(); String dateFormatStr = dateDate.getDateFormat();
if (Strings.isNullOrEmpty(dateFormatStr)) { if (StringUtils.isEmpty(dateFormatStr)) {
dateFormatStr = DAY_FORMAT; dateFormatStr = DAY_FORMAT;
} }
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(dateFormatStr); DateTimeFormatter formatter = DateTimeFormatter.ofPattern(dateFormatStr);
@@ -207,7 +207,7 @@ public class DateModeUtils {
public ImmutablePair<String, String> recentWeek(ItemDateResp dateDate, DateConf dateInfo) { public ImmutablePair<String, String> recentWeek(ItemDateResp dateDate, DateConf dateInfo) {
String dateFormatStr = dateDate.getDateFormat(); String dateFormatStr = dateDate.getDateFormat();
if (Strings.isNullOrEmpty(dateFormatStr)) { if (StringUtils.isEmpty(dateFormatStr)) {
dateFormatStr = DAY_FORMAT; dateFormatStr = DAY_FORMAT;
} }
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(dateFormatStr); DateTimeFormatter formatter = DateTimeFormatter.ofPattern(dateFormatStr);

View File

@@ -1,23 +1,26 @@
package com.tencent.supersonic.common.util; package com.tencent.supersonic.common.util;
import com.tencent.supersonic.common.pojo.Constants;
import com.tencent.supersonic.common.pojo.Criterion;
import com.tencent.supersonic.common.pojo.Filter;
import com.tencent.supersonic.common.pojo.enums.FilterOperatorEnum;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.StringJoiner;
import java.util.regex.Pattern;
import static com.tencent.supersonic.common.pojo.Constants.PARENTHESES_END; import static com.tencent.supersonic.common.pojo.Constants.PARENTHESES_END;
import static com.tencent.supersonic.common.pojo.Constants.PARENTHESES_START; import static com.tencent.supersonic.common.pojo.Constants.PARENTHESES_START;
import static com.tencent.supersonic.common.pojo.Constants.SPACE; import static com.tencent.supersonic.common.pojo.Constants.SPACE;
import static com.tencent.supersonic.common.pojo.Constants.SYS_VAR; import static com.tencent.supersonic.common.pojo.Constants.SYS_VAR;
import com.tencent.supersonic.common.pojo.Constants; ;
import com.tencent.supersonic.common.pojo.Criterion;
import com.tencent.supersonic.common.pojo.Filter;
import com.tencent.supersonic.common.pojo.enums.FilterOperatorEnum;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.StringJoiner;
import java.util.regex.Pattern;
import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.util.Strings;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
@Component @Component
@@ -41,7 +44,7 @@ public class SqlFilterUtils {
private List<String> getFilterCol(Filter filter) { private List<String> getFilterCol(Filter filter) {
List<String> filterCols = new ArrayList<>(); List<String> filterCols = new ArrayList<>();
if (Filter.Relation.FILTER.equals(filter.getRelation())) { if (Filter.Relation.FILTER.equals(filter.getRelation())) {
if (Strings.isNotEmpty(filter.getBizName())) { if (StringUtils.isNotEmpty(filter.getBizName())) {
filterCols.add(filter.getBizName()); filterCols.add(filter.getBizName());
} }
} }
@@ -61,7 +64,7 @@ public class SqlFilterUtils {
if (!CollectionUtils.isEmpty(filters)) { if (!CollectionUtils.isEmpty(filters)) {
filters.stream() filters.stream()
.forEach(filter -> { .forEach(filter -> {
if (Strings.isNotEmpty(dealFilter(filter, isBizName))) { if (StringUtils.isNotEmpty(dealFilter(filter, isBizName))) {
joiner.add(SPACE + dealFilter(filter, isBizName) + SPACE); joiner.add(SPACE + dealFilter(filter, isBizName) + SPACE);
} }
}); });
@@ -80,7 +83,7 @@ public class SqlFilterUtils {
if (Objects.isNull(filter)) { if (Objects.isNull(filter)) {
return ""; return "";
} }
if (Strings.isNotEmpty(filter.getBizName()) && filter.getBizName().endsWith(SYS_VAR)) { if (StringUtils.isNotEmpty(filter.getBizName()) && filter.getBizName().endsWith(SYS_VAR)) {
return ""; return "";
} }
StringBuilder condition = new StringBuilder(); StringBuilder condition = new StringBuilder();

View File

@@ -13,7 +13,7 @@ import static dev.langchain4j.milvus.spring.Properties.PREFIX;
public class MilvusAutoConfig { public class MilvusAutoConfig {
@Bean @Bean
@ConditionalOnProperty(PREFIX + ".embedding-store.url") @ConditionalOnProperty(PREFIX + ".embedding-store.uri")
EmbeddingStoreFactory milvusChatModel(Properties properties) { EmbeddingStoreFactory milvusChatModel(Properties properties) {
return new MilvusEmbeddingStoreFactory(properties); return new MilvusEmbeddingStoreFactory(properties);
} }

View File

@@ -2,6 +2,7 @@ package com.tencent.supersonic.headless.api.pojo.request;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.tencent.supersonic.common.jsqlparser.SqlAddHelper;
import com.tencent.supersonic.common.pojo.Aggregator; import com.tencent.supersonic.common.pojo.Aggregator;
import com.tencent.supersonic.common.pojo.Constants; import com.tencent.supersonic.common.pojo.Constants;
import com.tencent.supersonic.common.pojo.DateConf; import com.tencent.supersonic.common.pojo.DateConf;
@@ -12,11 +13,6 @@ import com.tencent.supersonic.common.pojo.enums.QueryType;
import com.tencent.supersonic.common.util.ContextUtils; import com.tencent.supersonic.common.util.ContextUtils;
import com.tencent.supersonic.common.util.DateModeUtils; import com.tencent.supersonic.common.util.DateModeUtils;
import com.tencent.supersonic.common.util.SqlFilterUtils; import com.tencent.supersonic.common.util.SqlFilterUtils;
import com.tencent.supersonic.common.jsqlparser.SqlAddHelper;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import lombok.Data; import lombok.Data;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.sf.jsqlparser.JSQLParserException; import net.sf.jsqlparser.JSQLParserException;
@@ -36,9 +32,13 @@ import net.sf.jsqlparser.statement.select.PlainSelect;
import net.sf.jsqlparser.statement.select.SelectItem; import net.sf.jsqlparser.statement.select.SelectItem;
import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.util.Strings;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Data @Data
@Slf4j @Slf4j
@@ -56,7 +56,7 @@ public class QueryStructReq extends SemanticQueryReq {
public List<String> getGroups() { public List<String> getGroups() {
if (!CollectionUtils.isEmpty(this.groups)) { if (!CollectionUtils.isEmpty(this.groups)) {
this.groups = groups.stream().filter(group -> !Strings.isEmpty(group)).collect(Collectors.toList()); this.groups = groups.stream().filter(group -> !StringUtils.isEmpty(group)).collect(Collectors.toList());
} }
if (CollectionUtils.isEmpty(this.groups)) { if (CollectionUtils.isEmpty(this.groups)) {

View File

@@ -16,7 +16,6 @@ import net.sf.jsqlparser.JSQLParserException;
import net.sf.jsqlparser.expression.Expression; import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.parser.CCJSqlParserUtil; import net.sf.jsqlparser.parser.CCJSqlParserUtil;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.util.Strings;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.HashMap; import java.util.HashMap;
@@ -95,7 +94,7 @@ public class WhereCorrector extends BaseSemanticCorrector {
for (SchemaElement dimension : dimensions) { for (SchemaElement dimension : dimensions) {
if (Objects.isNull(dimension) if (Objects.isNull(dimension)
|| Strings.isEmpty(dimension.getName()) || StringUtils.isEmpty(dimension.getName())
|| CollectionUtils.isEmpty(dimension.getSchemaValueMaps())) { || CollectionUtils.isEmpty(dimension.getSchemaValueMaps())) {
continue; continue;
} }
@@ -104,15 +103,15 @@ public class WhereCorrector extends BaseSemanticCorrector {
Map<String, String> aliasAndBizNameToTechName = new HashMap<>(); Map<String, String> aliasAndBizNameToTechName = new HashMap<>();
for (SchemaValueMap valueMap : dimension.getSchemaValueMaps()) { for (SchemaValueMap valueMap : dimension.getSchemaValueMaps()) {
if (Objects.isNull(valueMap) || Strings.isEmpty(valueMap.getTechName())) { if (Objects.isNull(valueMap) || StringUtils.isEmpty(valueMap.getTechName())) {
continue; continue;
} }
if (Strings.isNotEmpty(valueMap.getBizName())) { if (StringUtils.isNotEmpty(valueMap.getBizName())) {
aliasAndBizNameToTechName.put(valueMap.getBizName(), valueMap.getTechName()); aliasAndBizNameToTechName.put(valueMap.getBizName(), valueMap.getTechName());
} }
if (!CollectionUtils.isEmpty(valueMap.getAlias())) { if (!CollectionUtils.isEmpty(valueMap.getAlias())) {
valueMap.getAlias().stream().forEach(alias -> { valueMap.getAlias().stream().forEach(alias -> {
if (Strings.isNotEmpty(alias)) { if (StringUtils.isNotEmpty(alias)) {
aliasAndBizNameToTechName.put(alias, valueMap.getTechName()); aliasAndBizNameToTechName.put(alias, valueMap.getTechName());
} }
}); });

View File

@@ -4,7 +4,7 @@ import com.github.pagehelper.PageInfo;
import com.tencent.supersonic.headless.api.pojo.request.DictValueReq; import com.tencent.supersonic.headless.api.pojo.request.DictValueReq;
import com.tencent.supersonic.headless.api.pojo.response.DictValueResp; import com.tencent.supersonic.headless.api.pojo.response.DictValueResp;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.util.Strings; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
@@ -125,7 +125,7 @@ public class FileHandlerImpl implements FileHandler {
private DictValueResp convert2Resp(String lineStr) { private DictValueResp convert2Resp(String lineStr) {
DictValueResp dictValueResp = new DictValueResp(); DictValueResp dictValueResp = new DictValueResp();
if (Strings.isNotEmpty(lineStr)) { if (StringUtils.isNotEmpty(lineStr)) {
String[] itemArray = lineStr.split("\\s+"); String[] itemArray = lineStr.split("\\s+");
if (Objects.nonNull(itemArray) && itemArray.length >= 3) { if (Objects.nonNull(itemArray) && itemArray.length >= 3) {
dictValueResp.setValue(itemArray[0].replace("#", " ")); dictValueResp.setValue(itemArray[0].replace("#", " "));

View File

@@ -2,16 +2,16 @@ package com.tencent.supersonic.headless.chat.parser.rule;
import com.tencent.supersonic.common.pojo.Constants; import com.tencent.supersonic.common.pojo.Constants;
import com.tencent.supersonic.common.pojo.DateConf; import com.tencent.supersonic.common.pojo.DateConf;
import com.tencent.supersonic.headless.chat.ChatContext;
import com.tencent.supersonic.headless.chat.QueryContext;
import com.tencent.supersonic.headless.chat.parser.SemanticParser;
import com.tencent.supersonic.headless.chat.query.QueryManager; import com.tencent.supersonic.headless.chat.query.QueryManager;
import com.tencent.supersonic.headless.chat.query.SemanticQuery; import com.tencent.supersonic.headless.chat.query.SemanticQuery;
import com.tencent.supersonic.headless.chat.query.rule.RuleSemanticQuery; import com.tencent.supersonic.headless.chat.query.rule.RuleSemanticQuery;
import com.tencent.supersonic.headless.chat.parser.SemanticParser;
import com.tencent.supersonic.headless.chat.ChatContext;
import com.tencent.supersonic.headless.chat.QueryContext;
import com.xkzhangsan.time.nlp.TimeNLP; import com.xkzhangsan.time.nlp.TimeNLP;
import com.xkzhangsan.time.nlp.TimeNLPUtil; import com.xkzhangsan.time.nlp.TimeNLPUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.util.Strings; import org.apache.commons.lang3.StringUtils;
import java.text.DateFormat; import java.text.DateFormat;
import java.text.ParseException; import java.text.ParseException;
@@ -23,6 +23,8 @@ import java.util.Stack;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
;
/** /**
* TimeRangeParser extracts time range specified in the user query * TimeRangeParser extracts time range specified in the user query
* based on keyword matching. * based on keyword matching.
@@ -155,7 +157,7 @@ public class TimeRangeParser implements SemanticParser {
days = days * num; days = days * num;
info.setDateMode(DateConf.DateMode.RECENT); info.setDateMode(DateConf.DateMode.RECENT);
String detectWord = "" + num + zhPeriod; String detectWord = "" + num + zhPeriod;
if (Strings.isNotEmpty(m.group("periodStr"))) { if (StringUtils.isNotEmpty(m.group("periodStr"))) {
detectWord = m.group("periodStr"); detectWord = m.group("periodStr");
} }
info.setDetectWord(detectWord); info.setDetectWord(detectWord);

View File

@@ -20,7 +20,6 @@ import com.tencent.supersonic.headless.api.pojo.request.QueryStructReq;
import com.tencent.supersonic.headless.chat.query.QueryManager; import com.tencent.supersonic.headless.chat.query.QueryManager;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
@@ -73,7 +72,7 @@ public class QueryReqBuilder {
private static List<Filter> getFilters(Set<QueryFilter> queryFilters) { private static List<Filter> getFilters(Set<QueryFilter> queryFilters) {
List<Filter> dimensionFilters = queryFilters.stream() List<Filter> dimensionFilters = queryFilters.stream()
.filter(chatFilter -> Strings.isNotEmpty(chatFilter.getBizName())) .filter(chatFilter -> StringUtils.isNotEmpty(chatFilter.getBizName()))
.map(chatFilter -> new Filter(chatFilter.getBizName(), chatFilter.getOperator(), chatFilter.getValue())) .map(chatFilter -> new Filter(chatFilter.getBizName(), chatFilter.getOperator(), chatFilter.getValue()))
.collect(Collectors.toList()); .collect(Collectors.toList());
return dimensionFilters; return dimensionFilters;

View File

@@ -4,7 +4,7 @@ package com.tencent.supersonic.headless.core.cache;
import com.github.benmanes.caffeine.cache.Cache; import com.github.benmanes.caffeine.cache.Cache;
import com.google.common.base.Joiner; import com.google.common.base.Joiner;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.util.Strings; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@@ -36,7 +36,7 @@ public class CaffeineCacheManager implements CacheManager {
@Override @Override
public String generateCacheKey(String prefix, String body) { public String generateCacheKey(String prefix, String body) {
if (Strings.isEmpty(prefix)) { if (StringUtils.isEmpty(prefix)) {
prefix = "-1"; prefix = "-1";
} }
return Joiner.on(":").join(cacheCommonConfig.getCacheCommonApp(), cacheCommonConfig.getCacheCommonEnv(), return Joiner.on(":").join(cacheCommonConfig.getCacheCommonApp(), cacheCommonConfig.getCacheCommonEnv(),

View File

@@ -7,11 +7,13 @@ import com.tencent.supersonic.headless.core.pojo.QueryStatement;
import com.tencent.supersonic.headless.core.utils.ComponentFactory; import com.tencent.supersonic.headless.core.utils.ComponentFactory;
import com.tencent.supersonic.headless.core.utils.SqlUtils; import com.tencent.supersonic.headless.core.utils.SqlUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.util.Strings; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.Objects; import java.util.Objects;
;
@Component("JdbcExecutor") @Component("JdbcExecutor")
@Slf4j @Slf4j
public class JdbcExecutor implements QueryExecutor { public class JdbcExecutor implements QueryExecutor {
@@ -34,7 +36,7 @@ public class JdbcExecutor implements QueryExecutor {
} }
SqlUtils sqlUtils = ContextUtils.getBean(SqlUtils.class); SqlUtils sqlUtils = ContextUtils.getBean(SqlUtils.class);
if (Strings.isEmpty(queryStatement.getSourceId())) { if (StringUtils.isEmpty(queryStatement.getSourceId())) {
log.warn("data base id is empty"); log.warn("data base id is empty");
return null; return null;
} }

View File

@@ -1,6 +1,5 @@
package com.tencent.supersonic.headless.core.translator; package com.tencent.supersonic.headless.core.translator;
import com.google.common.base.Strings;
import com.tencent.supersonic.common.jsqlparser.SqlSelectHelper; import com.tencent.supersonic.common.jsqlparser.SqlSelectHelper;
import com.tencent.supersonic.common.util.StringUtil; import com.tencent.supersonic.common.util.StringUtil;
import com.tencent.supersonic.headless.api.pojo.MetricTable; import com.tencent.supersonic.headless.api.pojo.MetricTable;
@@ -64,8 +63,8 @@ public class DefaultSemanticTranslator implements SemanticTranslator {
queryStatement.getMetricQueryParam().setNativeQuery(queryParam.getQueryType().isNativeAggQuery()); queryStatement.getMetricQueryParam().setNativeQuery(queryParam.getQueryType().isNativeAggQuery());
doParse(queryStatement); doParse(queryStatement);
} }
if (Strings.isNullOrEmpty(queryStatement.getSql()) if (StringUtils.isEmpty(queryStatement.getSql())
|| Strings.isNullOrEmpty(queryStatement.getSourceId())) { || StringUtils.isEmpty(queryStatement.getSourceId())) {
throw new RuntimeException("parse Exception: " + queryStatement.getErrMsg()); throw new RuntimeException("parse Exception: " + queryStatement.getErrMsg());
} }
if (StringUtils.isNotBlank(queryStatement.getSql()) if (StringUtils.isNotBlank(queryStatement.getSql())

View File

@@ -1,14 +1,15 @@
package com.tencent.supersonic.headless.core.translator; package com.tencent.supersonic.headless.core.translator;
import com.google.common.base.Strings;
import com.tencent.supersonic.headless.api.pojo.QueryParam; import com.tencent.supersonic.headless.api.pojo.QueryParam;
import com.tencent.supersonic.headless.core.pojo.QueryStatement; import com.tencent.supersonic.headless.core.pojo.QueryStatement;
import java.util.Objects;
import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.Objects;
import java.util.stream.Collectors;
/** /**
* Remove the default metric added by the system when the query only has dimensions * Remove the default metric added by the system when the query only has dimensions
*/ */
@@ -20,7 +21,7 @@ public class DetailQueryOptimizer implements QueryOptimizer {
public void rewrite(QueryStatement queryStatement) { public void rewrite(QueryStatement queryStatement) {
QueryParam queryParam = queryStatement.getQueryParam(); QueryParam queryParam = queryStatement.getQueryParam();
String sqlRaw = queryStatement.getSql().trim(); String sqlRaw = queryStatement.getSql().trim();
if (Strings.isNullOrEmpty(sqlRaw)) { if (StringUtils.isEmpty(sqlRaw)) {
throw new RuntimeException("sql is empty or null"); throw new RuntimeException("sql is empty or null");
} }
log.debug("before handleNoMetric, sql:{}", sqlRaw); log.debug("before handleNoMetric, sql:{}", sqlRaw);

View File

@@ -1,12 +1,7 @@
package com.tencent.supersonic.headless.core.utils; package com.tencent.supersonic.headless.core.utils;
import static com.tencent.supersonic.common.pojo.Constants.DAY; import com.tencent.supersonic.common.jsqlparser.SqlReplaceHelper;
import static com.tencent.supersonic.common.pojo.Constants.DAY_FORMAT; import com.tencent.supersonic.common.jsqlparser.SqlSelectHelper;
import static com.tencent.supersonic.common.pojo.Constants.JOIN_UNDERLINE;
import static com.tencent.supersonic.common.pojo.Constants.MONTH;
import static com.tencent.supersonic.common.pojo.Constants.UNDERLINE;
import static com.tencent.supersonic.common.pojo.Constants.WEEK;
import com.tencent.supersonic.common.pojo.Aggregator; import com.tencent.supersonic.common.pojo.Aggregator;
import com.tencent.supersonic.common.pojo.DateConf; import com.tencent.supersonic.common.pojo.DateConf;
import com.tencent.supersonic.common.pojo.ItemDateResp; import com.tencent.supersonic.common.pojo.ItemDateResp;
@@ -15,8 +10,6 @@ import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum;
import com.tencent.supersonic.common.util.DateModeUtils; import com.tencent.supersonic.common.util.DateModeUtils;
import com.tencent.supersonic.common.util.SqlFilterUtils; import com.tencent.supersonic.common.util.SqlFilterUtils;
import com.tencent.supersonic.common.util.StringUtil; import com.tencent.supersonic.common.util.StringUtil;
import com.tencent.supersonic.common.jsqlparser.SqlReplaceHelper;
import com.tencent.supersonic.common.jsqlparser.SqlSelectHelper;
import com.tencent.supersonic.headless.api.pojo.Measure; import com.tencent.supersonic.headless.api.pojo.Measure;
import com.tencent.supersonic.headless.api.pojo.QueryParam; import com.tencent.supersonic.headless.api.pojo.QueryParam;
import com.tencent.supersonic.headless.api.pojo.enums.AggOption; import com.tencent.supersonic.headless.api.pojo.enums.AggOption;
@@ -27,6 +20,13 @@ import com.tencent.supersonic.headless.api.pojo.response.DimSchemaResp;
import com.tencent.supersonic.headless.api.pojo.response.MetricResp; import com.tencent.supersonic.headless.api.pojo.response.MetricResp;
import com.tencent.supersonic.headless.api.pojo.response.MetricSchemaResp; import com.tencent.supersonic.headless.api.pojo.response.MetricSchemaResp;
import com.tencent.supersonic.headless.core.config.ExecutorConfig; import com.tencent.supersonic.headless.core.config.ExecutorConfig;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Triple;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.Collections; import java.util.Collections;
@@ -38,13 +38,15 @@ import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import static com.tencent.supersonic.common.pojo.Constants.DAY;
import org.apache.commons.lang3.tuple.ImmutablePair; import static com.tencent.supersonic.common.pojo.Constants.DAY_FORMAT;
import org.apache.commons.lang3.tuple.Triple; import static com.tencent.supersonic.common.pojo.Constants.JOIN_UNDERLINE;
import org.apache.logging.log4j.util.Strings; import static com.tencent.supersonic.common.pojo.Constants.MONTH;
import org.springframework.stereotype.Component; import static com.tencent.supersonic.common.pojo.Constants.UNDERLINE;
import org.springframework.util.CollectionUtils; import static com.tencent.supersonic.common.pojo.Constants.WEEK;
;
/** /**
* tools functions to analyze queryStructReq * tools functions to analyze queryStructReq
@@ -167,13 +169,13 @@ public class SqlGenerateUtils {
private String mergeDateWhereClause(QueryParam queryParam, String whereClauseFromFilter, private String mergeDateWhereClause(QueryParam queryParam, String whereClauseFromFilter,
String whereFromDate) { String whereFromDate) {
if (Strings.isNotEmpty(whereFromDate) && Strings.isNotEmpty(whereClauseFromFilter)) { if (StringUtils.isNotEmpty(whereFromDate) && StringUtils.isNotEmpty(whereClauseFromFilter)) {
return String.format("%s AND (%s)", whereFromDate, whereClauseFromFilter); return String.format("%s AND (%s)", whereFromDate, whereClauseFromFilter);
} else if (Strings.isEmpty(whereFromDate) && Strings.isNotEmpty(whereClauseFromFilter)) { } else if (StringUtils.isEmpty(whereFromDate) && StringUtils.isNotEmpty(whereClauseFromFilter)) {
return whereClauseFromFilter; return whereClauseFromFilter;
} else if (Strings.isNotEmpty(whereFromDate) && Strings.isEmpty(whereClauseFromFilter)) { } else if (StringUtils.isNotEmpty(whereFromDate) && StringUtils.isEmpty(whereClauseFromFilter)) {
return whereFromDate; return whereFromDate;
} else if (Objects.isNull(whereFromDate) && Strings.isEmpty(whereClauseFromFilter)) { } else if (Objects.isNull(whereFromDate) && StringUtils.isEmpty(whereClauseFromFilter)) {
log.info("the current date information is empty, enter the date initialization logic"); log.info("the current date information is empty, enter the date initialization logic");
return dateModeUtils.defaultRecentDateInfo(queryParam.getDateInfo()); return dateModeUtils.defaultRecentDateInfo(queryParam.getDateInfo());
} }
@@ -182,8 +184,8 @@ public class SqlGenerateUtils {
public String getDateWhereClause(DateConf dateInfo, ItemDateResp dateDate) { public String getDateWhereClause(DateConf dateInfo, ItemDateResp dateDate) {
if (Objects.isNull(dateDate) if (Objects.isNull(dateDate)
|| Strings.isEmpty(dateDate.getStartDate()) || StringUtils.isEmpty(dateDate.getStartDate())
&& Strings.isEmpty(dateDate.getEndDate())) { && StringUtils.isEmpty(dateDate.getEndDate())) {
if (dateInfo.getDateMode().equals(DateConf.DateMode.LIST)) { if (dateInfo.getDateMode().equals(DateConf.DateMode.LIST)) {
return dateModeUtils.listDateStr(dateDate, dateInfo); return dateModeUtils.listDateStr(dateDate, dateInfo);
} }

View File

@@ -1,14 +1,14 @@
package com.tencent.supersonic.headless.server.aspect; package com.tencent.supersonic.headless.server.aspect;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.tencent.supersonic.common.jsqlparser.FieldExpression;
import com.tencent.supersonic.common.jsqlparser.SqlReplaceHelper;
import com.tencent.supersonic.common.jsqlparser.SqlSelectHelper;
import com.tencent.supersonic.common.pojo.Filter; import com.tencent.supersonic.common.pojo.Filter;
import com.tencent.supersonic.common.pojo.QueryColumn; import com.tencent.supersonic.common.pojo.QueryColumn;
import com.tencent.supersonic.common.pojo.enums.FilterOperatorEnum; import com.tencent.supersonic.common.pojo.enums.FilterOperatorEnum;
import com.tencent.supersonic.common.pojo.exception.InvalidArgumentException; import com.tencent.supersonic.common.pojo.exception.InvalidArgumentException;
import com.tencent.supersonic.common.util.JsonUtil; import com.tencent.supersonic.common.util.JsonUtil;
import com.tencent.supersonic.common.jsqlparser.FieldExpression;
import com.tencent.supersonic.common.jsqlparser.SqlReplaceHelper;
import com.tencent.supersonic.common.jsqlparser.SqlSelectHelper;
import com.tencent.supersonic.headless.api.pojo.DimValueMap; import com.tencent.supersonic.headless.api.pojo.DimValueMap;
import com.tencent.supersonic.headless.api.pojo.SchemaItem; import com.tencent.supersonic.headless.api.pojo.SchemaItem;
import com.tencent.supersonic.headless.api.pojo.request.QuerySqlReq; import com.tencent.supersonic.headless.api.pojo.request.QuerySqlReq;
@@ -18,16 +18,8 @@ import com.tencent.supersonic.headless.api.pojo.response.DimensionResp;
import com.tencent.supersonic.headless.api.pojo.response.SemanticQueryResp; import com.tencent.supersonic.headless.api.pojo.response.SemanticQueryResp;
import com.tencent.supersonic.headless.server.pojo.MetaFilter; import com.tencent.supersonic.headless.server.pojo.MetaFilter;
import com.tencent.supersonic.headless.server.web.service.DimensionService; import com.tencent.supersonic.headless.server.web.service.DimensionService;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.util.Strings;
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Aspect;
@@ -36,6 +28,14 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
@Aspect @Aspect
@Component @Component
@Slf4j @Slf4j
@@ -176,7 +176,7 @@ public class DimValueAspect {
Map<String, String> techAndBizPair = dimAndTechNameAndBizNamePair.get(bizName); Map<String, String> techAndBizPair = dimAndTechNameAndBizNamePair.get(bizName);
if (!CollectionUtils.isEmpty(techAndBizPair) && techAndBizPair.containsKey(techName)) { if (!CollectionUtils.isEmpty(techAndBizPair) && techAndBizPair.containsKey(techName)) {
String bizValueName = techAndBizPair.get(techName); String bizValueName = techAndBizPair.get(techName);
if (Strings.isNotEmpty(bizValueName)) { if (StringUtils.isNotEmpty(bizValueName)) {
line.put(bizName, bizValueName); line.put(bizName, bizValueName);
} }
} }
@@ -255,12 +255,12 @@ public class DimValueAspect {
if (needSkipDimValue(dimValueMap)) { if (needSkipDimValue(dimValueMap)) {
continue; continue;
} }
if (Strings.isNotEmpty(dimValueMap.getBizName())) { if (StringUtils.isNotEmpty(dimValueMap.getBizName())) {
aliasAndBizNameToTechName.put(dimValueMap.getBizName(), dimValueMap.getTechName()); aliasAndBizNameToTechName.put(dimValueMap.getBizName(), dimValueMap.getTechName());
} }
if (!CollectionUtils.isEmpty(dimValueMap.getAlias())) { if (!CollectionUtils.isEmpty(dimValueMap.getAlias())) {
dimValueMap.getAlias().stream().forEach(alias -> { dimValueMap.getAlias().stream().forEach(alias -> {
if (Strings.isNotEmpty(alias)) { if (StringUtils.isNotEmpty(alias)) {
aliasAndBizNameToTechName.put(alias, dimValueMap.getTechName()); aliasAndBizNameToTechName.put(alias, dimValueMap.getTechName());
} }
}); });
@@ -275,7 +275,7 @@ public class DimValueAspect {
} }
private boolean needSkipDimValue(DimValueMap dimValueMap) { private boolean needSkipDimValue(DimValueMap dimValueMap) {
return Objects.isNull(dimValueMap) || Strings.isEmpty(dimValueMap.getTechName()); return Objects.isNull(dimValueMap) || StringUtils.isEmpty(dimValueMap.getTechName());
} }
private Map<String, Map<String, String>> getTechNameToBizName(List<DimensionResp> dimensions) { private Map<String, Map<String, String>> getTechNameToBizName(List<DimensionResp> dimensions) {
@@ -308,7 +308,7 @@ public class DimValueAspect {
} }
private boolean needSkipDimension(DimensionResp dimension) { private boolean needSkipDimension(DimensionResp dimension) {
return Objects.isNull(dimension) || Strings.isEmpty(dimension.getBizName()) || CollectionUtils.isEmpty( return Objects.isNull(dimension) || StringUtils.isEmpty(dimension.getBizName()) || CollectionUtils.isEmpty(
dimension.getDimValueMaps()); dimension.getDimValueMaps());
} }
} }

View File

@@ -2,7 +2,6 @@ package com.tencent.supersonic.headless.server.aspect;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.base.Strings;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.auth.api.authentication.pojo.User;
@@ -101,7 +100,7 @@ public class S2DataPermissionAspect {
return joinPoint.proceed(); return joinPoint.proceed();
} }
User user = (User) objects[1]; User user = (User) objects[1];
if (Objects.isNull(user) || Strings.isNullOrEmpty(user.getName())) { if (Objects.isNull(user) || StringUtils.isEmpty(user.getName())) {
throw new RuntimeException("please provide user information"); throw new RuntimeException("please provide user information");
} }
List<Long> modelIds = getModelsInDataSet(queryReq); List<Long> modelIds = getModelsInDataSet(queryReq);

View File

@@ -6,7 +6,7 @@ import com.tencent.supersonic.headless.server.persistence.mapper.ClassMapper;
import com.tencent.supersonic.headless.server.persistence.repository.ClassRepository; import com.tencent.supersonic.headless.server.persistence.repository.ClassRepository;
import com.tencent.supersonic.headless.server.pojo.ClassFilter; import com.tencent.supersonic.headless.server.pojo.ClassFilter;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.logging.log4j.util.Strings; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
@@ -52,7 +52,7 @@ public class ClassRepositoryImpl implements ClassRepository {
if (Objects.nonNull(filter.getDataSetId())) { if (Objects.nonNull(filter.getDataSetId())) {
wrapper.lambda().eq(ClassDO::getDataSetId, filter.getDataSetId()); wrapper.lambda().eq(ClassDO::getDataSetId, filter.getDataSetId());
} }
if (Strings.isNotEmpty(filter.getType())) { if (StringUtils.isNotEmpty(filter.getType())) {
wrapper.lambda().eq(ClassDO::getType, filter.getType()); wrapper.lambda().eq(ClassDO::getType, filter.getType());
} }
if (CollectionUtils.isNotEmpty(filter.getIds())) { if (CollectionUtils.isNotEmpty(filter.getIds())) {

View File

@@ -10,7 +10,7 @@ import com.tencent.supersonic.headless.server.persistence.mapper.StatMapper;
import com.tencent.supersonic.headless.server.persistence.repository.StatRepository; import com.tencent.supersonic.headless.server.persistence.repository.StatRepository;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.util.Strings; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.ArrayList; import java.util.ArrayList;
@@ -70,7 +70,7 @@ public class StatRepositoryImpl implements StatRepository {
} }
private void updateStatMapInfo(Map<String, Long> map, String dimensions, String type, Long dataSetId) { private void updateStatMapInfo(Map<String, Long> map, String dimensions, String type, Long dataSetId) {
if (Strings.isNotEmpty(dimensions)) { if (StringUtils.isNotEmpty(dimensions)) {
try { try {
List<String> dimensionList = mapper.readValue(dimensions, new TypeReference<List<String>>() { List<String> dimensionList = mapper.readValue(dimensions, new TypeReference<List<String>>() {
}); });

View File

@@ -13,7 +13,7 @@ import com.tencent.supersonic.headless.api.pojo.response.DataSetSchemaResp;
import com.tencent.supersonic.headless.api.pojo.response.DimSchemaResp; import com.tencent.supersonic.headless.api.pojo.response.DimSchemaResp;
import com.tencent.supersonic.headless.api.pojo.response.MetricSchemaResp; import com.tencent.supersonic.headless.api.pojo.response.MetricSchemaResp;
import com.tencent.supersonic.headless.api.pojo.response.TermResp; import com.tencent.supersonic.headless.api.pojo.response.TermResp;
import org.apache.logging.log4j.util.Strings; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
@@ -180,7 +180,7 @@ public class DataSetSchemaBuilder {
List<DimValueMap> dimValueMaps = dim.getDimValueMaps(); List<DimValueMap> dimValueMaps = dim.getDimValueMaps();
if (!CollectionUtils.isEmpty(dimValueMaps)) { if (!CollectionUtils.isEmpty(dimValueMaps)) {
for (DimValueMap dimValueMap : dimValueMaps) { for (DimValueMap dimValueMap : dimValueMaps) {
if (Strings.isNotEmpty(dimValueMap.getBizName())) { if (StringUtils.isNotEmpty(dimValueMap.getBizName())) {
dimValueAlias.add(dimValueMap.getBizName()); dimValueAlias.add(dimValueMap.getBizName());
} }
if (!CollectionUtils.isEmpty(dimValueMap.getAlias())) { if (!CollectionUtils.isEmpty(dimValueMap.getAlias())) {

View File

@@ -1,12 +1,5 @@
package com.tencent.supersonic.headless.server.utils; package com.tencent.supersonic.headless.server.utils;
import static com.tencent.supersonic.common.pojo.Constants.AND_UPPER;
import static com.tencent.supersonic.common.pojo.Constants.APOSTROPHE;
import static com.tencent.supersonic.common.pojo.Constants.COMMA;
import static com.tencent.supersonic.common.pojo.Constants.POUND;
import static com.tencent.supersonic.common.pojo.Constants.SPACE;
import com.google.common.base.Strings;
import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.common.pojo.Aggregator; import com.tencent.supersonic.common.pojo.Aggregator;
import com.tencent.supersonic.common.pojo.Constants; import com.tencent.supersonic.common.pojo.Constants;
@@ -33,13 +26,21 @@ import com.tencent.supersonic.headless.api.pojo.response.MetricResp;
import com.tencent.supersonic.headless.api.pojo.response.ModelResp; import com.tencent.supersonic.headless.api.pojo.response.ModelResp;
import com.tencent.supersonic.headless.api.pojo.response.SemanticQueryResp; import com.tencent.supersonic.headless.api.pojo.response.SemanticQueryResp;
import com.tencent.supersonic.headless.api.pojo.response.TagResp; import com.tencent.supersonic.headless.api.pojo.response.TagResp;
import com.tencent.supersonic.headless.server.facade.service.SemanticLayerService;
import com.tencent.supersonic.headless.server.persistence.dataobject.DictConfDO; import com.tencent.supersonic.headless.server.persistence.dataobject.DictConfDO;
import com.tencent.supersonic.headless.server.persistence.dataobject.DictTaskDO; import com.tencent.supersonic.headless.server.persistence.dataobject.DictTaskDO;
import com.tencent.supersonic.headless.server.web.service.DimensionService; import com.tencent.supersonic.headless.server.web.service.DimensionService;
import com.tencent.supersonic.headless.server.web.service.MetricService; import com.tencent.supersonic.headless.server.web.service.MetricService;
import com.tencent.supersonic.headless.server.web.service.ModelService; import com.tencent.supersonic.headless.server.web.service.ModelService;
import com.tencent.supersonic.headless.server.facade.service.SemanticLayerService;
import com.tencent.supersonic.headless.server.web.service.TagMetaService; import com.tencent.supersonic.headless.server.web.service.TagMetaService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.ArrayList;
@@ -52,12 +53,12 @@ import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.Set; import java.util.Set;
import java.util.StringJoiner; import java.util.StringJoiner;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import static com.tencent.supersonic.common.pojo.Constants.AND_UPPER;
import org.springframework.beans.factory.annotation.Value; import static com.tencent.supersonic.common.pojo.Constants.APOSTROPHE;
import org.springframework.context.annotation.Lazy; import static com.tencent.supersonic.common.pojo.Constants.COMMA;
import org.springframework.stereotype.Component; import static com.tencent.supersonic.common.pojo.Constants.POUND;
import org.springframework.util.CollectionUtils; import static com.tencent.supersonic.common.pojo.Constants.SPACE;
@Slf4j @Slf4j
@Component @Component
@@ -112,7 +113,7 @@ public class DictUtils {
taskDO.setConfig(JsonUtil.toString(dictItemResp.getConfig())); taskDO.setConfig(JsonUtil.toString(dictItemResp.getConfig()));
taskDO.setStatus(status.getStatus()); taskDO.setStatus(status.getStatus());
taskDO.setCreatedAt(createAt); taskDO.setCreatedAt(createAt);
String creator = (Objects.isNull(user) || Strings.isNullOrEmpty(user.getName())) ? "" : user.getName(); String creator = (Objects.isNull(user) || StringUtils.isEmpty(user.getName())) ? "" : user.getName();
taskDO.setCreatedBy(creator); taskDO.setCreatedBy(creator);
return taskDO; return taskDO;
} }
@@ -124,7 +125,7 @@ public class DictUtils {
confDO.setConfig(JsonUtil.toString(itemValueReq.getConfig())); confDO.setConfig(JsonUtil.toString(itemValueReq.getConfig()));
Date createAt = new Date(); Date createAt = new Date();
confDO.setCreatedAt(createAt); confDO.setCreatedAt(createAt);
String creator = Strings.isNullOrEmpty(user.getName()) ? "" : user.getName(); String creator = StringUtils.isEmpty(user.getName()) ? "" : user.getName();
confDO.setCreatedBy(creator); confDO.setCreatedBy(creator);
confDO.setStatus(itemValueReq.getStatus().name()); confDO.setStatus(itemValueReq.getStatus().name());
return confDO; return confDO;
@@ -180,7 +181,7 @@ public class DictUtils {
metricObject = line.get(key); metricObject = line.get(key);
} }
} }
if (!Strings.isNullOrEmpty(dimValue) && Objects.nonNull(metricObject)) { if (!StringUtils.isEmpty(dimValue) && Objects.nonNull(metricObject)) {
Long metric = Math.round(Double.parseDouble(metricObject.toString())); Long metric = Math.round(Double.parseDouble(metricObject.toString()));
mergeMultivaluedValue(valueAndFrequencyPair, dimValue, metric); mergeMultivaluedValue(valueAndFrequencyPair, dimValue, metric);
} }
@@ -201,7 +202,7 @@ public class DictUtils {
} }
List<String> whiteList = dictItemResp.getConfig().getWhiteList(); List<String> whiteList = dictItemResp.getConfig().getWhiteList();
whiteList.forEach(white -> { whiteList.forEach(white -> {
if (!Strings.isNullOrEmpty(white)) { if (!StringUtils.isEmpty(white)) {
white = white.replace(SPACE, POUND); white = white.replace(SPACE, POUND);
} }
lines.add(String.format("%s %s %s", white, nature, itemValueWhiteFrequency)); lines.add(String.format("%s %s %s", white, nature, itemValueWhiteFrequency));
@@ -214,7 +215,7 @@ public class DictUtils {
} }
valueAndFrequencyPair.forEach((value, frequency) -> { valueAndFrequencyPair.forEach((value, frequency) -> {
if (!Strings.isNullOrEmpty(value)) { if (!StringUtils.isEmpty(value)) {
value = value.replace(SPACE, POUND); value = value.replace(SPACE, POUND);
} }
lines.add(String.format("%s %s %s", value, nature, frequency)); lines.add(String.format("%s %s %s", value, nature, frequency));
@@ -222,7 +223,7 @@ public class DictUtils {
} }
private void mergeMultivaluedValue(Map<String, Long> valueAndFrequencyPair, String dimValue, Long metric) { private void mergeMultivaluedValue(Map<String, Long> valueAndFrequencyPair, String dimValue, Long metric) {
if (org.apache.logging.log4j.util.Strings.isEmpty(dimValue)) { if (StringUtils.isEmpty(dimValue)) {
return; return;
} }
Map<String, Long> tmp = new HashMap<>(); Map<String, Long> tmp = new HashMap<>();
@@ -252,7 +253,7 @@ public class DictUtils {
String sqlPattern = "select %s, %s from tbl %s group by %s order by %s desc limit %d"; String sqlPattern = "select %s, %s from tbl %s group by %s order by %s desc limit %d";
String bizName = dictItemResp.getBizName(); String bizName = dictItemResp.getBizName();
String whereStr = generateWhereStr(dictItemResp); String whereStr = generateWhereStr(dictItemResp);
String where = Strings.isNullOrEmpty(whereStr) ? "" : "WHERE" + whereStr; String where = StringUtils.isEmpty(whereStr) ? "" : "WHERE" + whereStr;
ItemValueConfig config = dictItemResp.getConfig(); ItemValueConfig config = dictItemResp.getConfig();
Long limit = (Objects.isNull(config) || Objects.isNull(config.getLimit())) ? itemValueMaxCount : Long limit = (Objects.isNull(config) || Objects.isNull(config.getLimit())) ? itemValueMaxCount :
dictItemResp.getConfig().getLimit(); dictItemResp.getConfig().getLimit();
@@ -293,7 +294,7 @@ public class DictUtils {
String sqlPattern = "select %s,count(1) from tbl %s group by %s order by count(1) desc limit %d"; String sqlPattern = "select %s,count(1) from tbl %s group by %s order by count(1) desc limit %d";
String bizName = dictItemResp.getBizName(); String bizName = dictItemResp.getBizName();
String whereStr = generateWhereStr(dictItemResp); String whereStr = generateWhereStr(dictItemResp);
String where = Strings.isNullOrEmpty(whereStr) ? "" : "WHERE" + whereStr; String where = StringUtils.isEmpty(whereStr) ? "" : "WHERE" + whereStr;
ItemValueConfig config = dictItemResp.getConfig(); ItemValueConfig config = dictItemResp.getConfig();
Long limit = (Objects.isNull(config) || Objects.isNull(config.getLimit())) ? itemValueMaxCount : Long limit = (Objects.isNull(config) || Objects.isNull(config.getLimit())) ? itemValueMaxCount :
dictItemResp.getConfig().getLimit(); dictItemResp.getConfig().getLimit();
@@ -365,7 +366,7 @@ public class DictUtils {
return new ArrayList<>(); return new ArrayList<>();
} }
String whereStr = generateWhereStr(dictItemResp); String whereStr = generateWhereStr(dictItemResp);
if (Strings.isNullOrEmpty(whereStr)) { if (StringUtils.isEmpty(whereStr)) {
return new ArrayList<>(); return new ArrayList<>();
} }
Filter filter = new Filter("", FilterOperatorEnum.SQL_PART, whereStr); Filter filter = new Filter("", FilterOperatorEnum.SQL_PART, whereStr);

View File

@@ -12,7 +12,7 @@ import com.tencent.supersonic.headless.api.pojo.response.DimensionResp;
import com.tencent.supersonic.headless.api.pojo.response.ModelResp; import com.tencent.supersonic.headless.api.pojo.response.ModelResp;
import com.tencent.supersonic.headless.api.pojo.response.DataSetResp; import com.tencent.supersonic.headless.api.pojo.response.DataSetResp;
import com.tencent.supersonic.headless.server.persistence.dataobject.DimensionDO; import com.tencent.supersonic.headless.server.persistence.dataobject.DimensionDO;
import org.apache.logging.log4j.util.Strings; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
@@ -76,10 +76,10 @@ public class DimensionConverter {
} }
dimensionResp.setModelFilterSql( dimensionResp.setModelFilterSql(
modelRespMap.getOrDefault(dimensionResp.getModelId(), new ModelResp()).getFilterSql()); modelRespMap.getOrDefault(dimensionResp.getModelId(), new ModelResp()).getFilterSql());
if (Strings.isNotEmpty(dimensionDO.getDimValueMaps())) { if (StringUtils.isNotEmpty(dimensionDO.getDimValueMaps())) {
dimensionResp.setDimValueMaps(JsonUtil.toList(dimensionDO.getDimValueMaps(), DimValueMap.class)); dimensionResp.setDimValueMaps(JsonUtil.toList(dimensionDO.getDimValueMaps(), DimValueMap.class));
} }
if (Strings.isNotEmpty(dimensionDO.getDataType())) { if (StringUtils.isNotEmpty(dimensionDO.getDataType())) {
dimensionResp.setDataType(DataTypeEnums.of(dimensionDO.getDataType())); dimensionResp.setDataType(DataTypeEnums.of(dimensionDO.getDataType()));
} }
if (dimensionDO.getExt() != null) { if (dimensionDO.getExt() != null) {

View File

@@ -1,14 +1,14 @@
package com.tencent.supersonic.headless.server.utils; package com.tencent.supersonic.headless.server.utils;
import com.tencent.supersonic.common.jsqlparser.SqlReplaceHelper;
import com.tencent.supersonic.common.jsqlparser.SqlSelectFunctionHelper;
import com.tencent.supersonic.common.jsqlparser.SqlSelectHelper;
import com.tencent.supersonic.common.pojo.Aggregator; import com.tencent.supersonic.common.pojo.Aggregator;
import com.tencent.supersonic.common.pojo.Constants; import com.tencent.supersonic.common.pojo.Constants;
import com.tencent.supersonic.common.pojo.enums.AggOperatorEnum; import com.tencent.supersonic.common.pojo.enums.AggOperatorEnum;
import com.tencent.supersonic.common.pojo.enums.QueryType; import com.tencent.supersonic.common.pojo.enums.QueryType;
import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum; import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum;
import com.tencent.supersonic.common.jsqlparser.SqlReplaceHelper;
import com.tencent.supersonic.common.jsqlparser.SqlSelectFunctionHelper;
import com.tencent.supersonic.common.jsqlparser.SqlSelectHelper;
import com.tencent.supersonic.headless.api.pojo.Measure; import com.tencent.supersonic.headless.api.pojo.Measure;
import com.tencent.supersonic.headless.api.pojo.MetricTable; import com.tencent.supersonic.headless.api.pojo.MetricTable;
import com.tencent.supersonic.headless.api.pojo.QueryParam; import com.tencent.supersonic.headless.api.pojo.QueryParam;
@@ -31,7 +31,6 @@ import com.tencent.supersonic.headless.core.utils.SqlGenerateUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@@ -160,7 +159,7 @@ public class QueryReqConverter {
return AggOption.OUTER; return AggOption.OUTER;
} }
long defaultAggNullCnt = metricSchemas.stream() long defaultAggNullCnt = metricSchemas.stream()
.filter(m -> Objects.isNull(m.getDefaultAgg()) || Strings.isBlank(m.getDefaultAgg())).count(); .filter(m -> Objects.isNull(m.getDefaultAgg()) || StringUtils.isBlank(m.getDefaultAgg())).count();
if (defaultAggNullCnt > 0) { if (defaultAggNullCnt > 0) {
log.info("getAggOption find null defaultAgg metric set to NATIVE"); log.info("getAggOption find null defaultAgg metric set to NATIVE");
return AggOption.OUTER; return AggOption.OUTER;

View File

@@ -7,7 +7,7 @@ import com.tencent.supersonic.headless.api.pojo.enums.QueryRuleType;
import com.tencent.supersonic.headless.api.pojo.request.QueryRuleReq; import com.tencent.supersonic.headless.api.pojo.request.QueryRuleReq;
import com.tencent.supersonic.headless.api.pojo.response.QueryRuleResp; import com.tencent.supersonic.headless.api.pojo.response.QueryRuleResp;
import com.tencent.supersonic.headless.server.persistence.dataobject.QueryRuleDO; import com.tencent.supersonic.headless.server.persistence.dataobject.QueryRuleDO;
import org.apache.directory.api.util.Strings; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import java.util.ArrayList; import java.util.ArrayList;
@@ -33,7 +33,7 @@ public class QueryRuleConverter {
BeanUtils.copyProperties(queryRuleDO, queryRuleResp); BeanUtils.copyProperties(queryRuleDO, queryRuleResp);
queryRuleResp.setRuleType(QueryRuleType.valueOf(queryRuleDO.getRuleType())); queryRuleResp.setRuleType(QueryRuleType.valueOf(queryRuleDO.getRuleType()));
queryRuleResp.setRule(JsonUtil.toObject(queryRuleDO.getRule(), RuleInfo.class)); queryRuleResp.setRule(JsonUtil.toObject(queryRuleDO.getRule(), RuleInfo.class));
queryRuleResp.setAction(Strings.isEmpty(queryRuleDO.getAction()) ? new ActionInfo() : queryRuleResp.setAction(StringUtils.isEmpty(queryRuleDO.getAction()) ? new ActionInfo() :
JsonUtil.toObject(queryRuleDO.getAction(), ActionInfo.class)); JsonUtil.toObject(queryRuleDO.getAction(), ActionInfo.class));
queryRuleResp.setExt(JsonUtil.toMap(queryRuleDO.getExt(), String.class, String.class)); queryRuleResp.setExt(JsonUtil.toMap(queryRuleDO.getExt(), String.class, String.class));

View File

@@ -4,13 +4,13 @@ import com.alibaba.ttl.TransmittableThreadLocal;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.common.jsqlparser.SqlSelectHelper;
import com.tencent.supersonic.common.pojo.enums.TaskStatusEnum; import com.tencent.supersonic.common.pojo.enums.TaskStatusEnum;
import com.tencent.supersonic.common.util.SqlFilterUtils; import com.tencent.supersonic.common.util.SqlFilterUtils;
import com.tencent.supersonic.common.jsqlparser.SqlSelectHelper;
import com.tencent.supersonic.headless.api.pojo.QueryStat; import com.tencent.supersonic.headless.api.pojo.QueryStat;
import com.tencent.supersonic.headless.api.pojo.SchemaItem; import com.tencent.supersonic.headless.api.pojo.SchemaItem;
import com.tencent.supersonic.headless.api.pojo.enums.QueryOptMode;
import com.tencent.supersonic.headless.api.pojo.enums.QueryMethod; import com.tencent.supersonic.headless.api.pojo.enums.QueryMethod;
import com.tencent.supersonic.headless.api.pojo.enums.QueryOptMode;
import com.tencent.supersonic.headless.api.pojo.enums.QueryTypeBack; import com.tencent.supersonic.headless.api.pojo.enums.QueryTypeBack;
import com.tencent.supersonic.headless.api.pojo.request.ItemUseReq; import com.tencent.supersonic.headless.api.pojo.request.ItemUseReq;
import com.tencent.supersonic.headless.api.pojo.request.QueryMultiStructReq; import com.tencent.supersonic.headless.api.pojo.request.QueryMultiStructReq;
@@ -22,7 +22,7 @@ import com.tencent.supersonic.headless.api.pojo.response.ItemUseResp;
import com.tencent.supersonic.headless.server.persistence.repository.StatRepository; import com.tencent.supersonic.headless.server.persistence.repository.StatRepository;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.codec.digest.DigestUtils;
import org.apache.logging.log4j.util.Strings; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
@@ -33,6 +33,8 @@ import java.util.Set;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors; import java.util.stream.Collectors;
;
@Component @Component
@Slf4j @Slf4j
@@ -217,7 +219,7 @@ public class StatUtils {
} }
private String getUserName(User facadeUser) { private String getUserName(User facadeUser) {
return (Objects.nonNull(facadeUser) && Strings.isNotEmpty(facadeUser.getName())) ? facadeUser.getName() return (Objects.nonNull(facadeUser) && StringUtils.isNotEmpty(facadeUser.getName())) ? facadeUser.getName()
: "Admin"; : "Admin";
} }

View File

@@ -4,7 +4,7 @@ import com.tencent.supersonic.common.util.JsonUtil;
import com.tencent.supersonic.headless.api.pojo.request.TagObjectReq; import com.tencent.supersonic.headless.api.pojo.request.TagObjectReq;
import com.tencent.supersonic.headless.api.pojo.response.TagObjectResp; import com.tencent.supersonic.headless.api.pojo.response.TagObjectResp;
import com.tencent.supersonic.headless.server.persistence.dataobject.TagObjectDO; import com.tencent.supersonic.headless.server.persistence.dataobject.TagObjectDO;
import org.apache.logging.log4j.util.Strings; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
@@ -24,7 +24,7 @@ public class TagObjectConverter {
public static TagObjectResp convert2Resp(TagObjectDO tagObjectDO) { public static TagObjectResp convert2Resp(TagObjectDO tagObjectDO) {
TagObjectResp tagObjectResp = new TagObjectResp(); TagObjectResp tagObjectResp = new TagObjectResp();
BeanUtils.copyProperties(tagObjectDO, tagObjectResp); BeanUtils.copyProperties(tagObjectDO, tagObjectResp);
if (Strings.isNotEmpty(tagObjectDO.getExt())) { if (StringUtils.isNotEmpty(tagObjectDO.getExt())) {
tagObjectResp.setExt(JsonUtil.objectToMapString(tagObjectDO.getExt())); tagObjectResp.setExt(JsonUtil.objectToMapString(tagObjectDO.getExt()));
} }
return tagObjectResp; return tagObjectResp;

View File

@@ -8,7 +8,6 @@ import com.tencent.supersonic.headless.server.persistence.mapper.CollectMapper;
import com.tencent.supersonic.headless.server.web.service.CollectService; import com.tencent.supersonic.headless.server.web.service.CollectService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.util.Strings;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
@@ -26,7 +25,7 @@ public class CollectServiceImpl implements CollectService {
@Override @Override
public Boolean collect(User user, CollectDO collectReq) { public Boolean collect(User user, CollectDO collectReq) {
CollectDO collect = new CollectDO(); CollectDO collect = new CollectDO();
collect.setType(Strings.isEmpty(collectReq.getType()) ? type : collectReq.getType()); collect.setType(StringUtils.isEmpty(collectReq.getType()) ? type : collectReq.getType());
collect.setUsername(user.getName()); collect.setUsername(user.getName());
collect.setCollectId(collectReq.getCollectId()); collect.setCollectId(collectReq.getCollectId());
collectMapper.insert(collect); collectMapper.insert(collect);

View File

@@ -42,7 +42,6 @@ import com.tencent.supersonic.headless.server.utils.ModelConverter;
import com.tencent.supersonic.headless.server.utils.NameCheckUtils; import com.tencent.supersonic.headless.server.utils.NameCheckUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -264,10 +263,10 @@ public class ModelServiceImpl implements ModelService {
String startDate1 = item.getStartDate(); String startDate1 = item.getStartDate();
String endDate1 = item.getEndDate(); String endDate1 = item.getEndDate();
List<String> unavailableDateList1 = item.getUnavailableDateList(); List<String> unavailableDateList1 = item.getUnavailableDateList();
if (Strings.isNotEmpty(startDate1) && startDate1.compareTo(startDate) > 0) { if (StringUtils.isNotEmpty(startDate1) && startDate1.compareTo(startDate) > 0) {
startDate = startDate1; startDate = startDate1;
} }
if (Strings.isNotEmpty(endDate1) && endDate1.compareTo(endDate) < 0) { if (StringUtils.isNotEmpty(endDate1) && endDate1.compareTo(endDate) < 0) {
endDate = endDate1; endDate = endDate1;
} }
if (!CollectionUtils.isEmpty(unavailableDateList1)) { if (!CollectionUtils.isEmpty(unavailableDateList1)) {

View File

@@ -84,6 +84,35 @@
<artifactId>spring-boot-starter-test</artifactId> <artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<!-- Remove the SLF4J binding for Log4j2. -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.14.1</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Remove the SLF4J binding for reload4j. -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-reload4j</artifactId>
<version>1.7.36</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies> </dependencies>
<profiles> <profiles>

27
pom.xml
View File

@@ -32,7 +32,6 @@
<maven.compiler.source>8</maven.compiler.source> <maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target> <maven.compiler.target>8</maven.compiler.target>
<file.encoding>UTF-8</file.encoding> <file.encoding>UTF-8</file.encoding>
<apache.log4j.version>2.17.1</apache.log4j.version>
<jsqlparser.version>4.7</jsqlparser.version> <jsqlparser.version>4.7</jsqlparser.version>
<pagehelper.version>6.1.0</pagehelper.version> <pagehelper.version>6.1.0</pagehelper.version>
<pagehelper.spring.version>2.1.0</pagehelper.spring.version> <pagehelper.spring.version>2.1.0</pagehelper.spring.version>
@@ -199,42 +198,16 @@
<groupId>dev.langchain4j</groupId> <groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-dashscope</artifactId> <artifactId>langchain4j-dashscope</artifactId>
<version>${langchain4j.version}</version> <version>${langchain4j.version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
</exclusion>
</exclusions>
</dependency> </dependency>
<dependency> <dependency>
<groupId>dev.langchain4j</groupId> <groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-milvus</artifactId> <artifactId>langchain4j-milvus</artifactId>
<version>${langchain4j.version}</version> <version>${langchain4j.version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-to-slf4j</artifactId>
</exclusion>
</exclusions>
</dependency> </dependency>
<dependency> <dependency>
<groupId>dev.langchain4j</groupId> <groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-chatglm</artifactId> <artifactId>langchain4j-chatglm</artifactId>
<version>${langchain4j.version}</version> <version>${langchain4j.version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
</exclusion>
</exclusions>
</dependency> </dependency>
<!---langchain4j--> <!---langchain4j-->
<dependency> <dependency>