diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/ChatDefaultRichConfigResp.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/ChatDefaultRichConfigResp.java index 1381eb497..cbdc6e891 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/ChatDefaultRichConfigResp.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/ChatDefaultRichConfigResp.java @@ -1,6 +1,6 @@ package com.tencent.supersonic.chat.api.pojo.response; -import com.tencent.supersonic.common.pojo.Constants; +import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum; import com.tencent.supersonic.common.pojo.enums.TimeMode; import com.tencent.supersonic.headless.api.pojo.SchemaElement; import lombok.Data; @@ -17,7 +17,7 @@ public class ChatDefaultRichConfigResp { private Integer unit = 1; /** default time type: DAY, WEEK, MONTH, YEAR */ - private String period = Constants.DAY; + private DatePeriodEnum period = DatePeriodEnum.DAY; private TimeMode timeMode; } diff --git a/chat/server/src/main/java/com/tencent/supersonic/chat/server/processor/execute/MetricRatioProcessor.java b/chat/server/src/main/java/com/tencent/supersonic/chat/server/processor/execute/MetricRatioProcessor.java index a5f669627..912a36846 100644 --- a/chat/server/src/main/java/com/tencent/supersonic/chat/server/processor/execute/MetricRatioProcessor.java +++ b/chat/server/src/main/java/com/tencent/supersonic/chat/server/processor/execute/MetricRatioProcessor.java @@ -8,6 +8,7 @@ import com.tencent.supersonic.common.pojo.DateConf; import com.tencent.supersonic.common.pojo.DateConf.DateMode; import com.tencent.supersonic.common.pojo.QueryColumn; import com.tencent.supersonic.common.pojo.enums.AggOperatorEnum; +import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum; import com.tencent.supersonic.common.pojo.enums.QueryType; import com.tencent.supersonic.common.pojo.enums.RatioOverType; import com.tencent.supersonic.common.util.ContextUtils; @@ -43,15 +44,12 @@ import java.util.Optional; import java.util.Set; import java.util.concurrent.CompletableFuture; -import static com.tencent.supersonic.common.pojo.Constants.DAY; import static com.tencent.supersonic.common.pojo.Constants.DAY_FORMAT; import static com.tencent.supersonic.common.pojo.Constants.DAY_FORMAT_INT; -import static com.tencent.supersonic.common.pojo.Constants.MONTH; import static com.tencent.supersonic.common.pojo.Constants.MONTH_FORMAT; import static com.tencent.supersonic.common.pojo.Constants.MONTH_FORMAT_INT; import static com.tencent.supersonic.common.pojo.Constants.TIMES_FORMAT; import static com.tencent.supersonic.common.pojo.Constants.TIME_FORMAT; -import static com.tencent.supersonic.common.pojo.Constants.WEEK; /** Add ratio queries for metric queries. */ @Slf4j @@ -193,11 +191,11 @@ public class MetricRatioProcessor implements ExecuteResultProcessor { } String statisticsRollName = RatioOverType.DAY_ON_DAY.getShowName(); String statisticsOverName = RatioOverType.WEEK_ON_DAY.getShowName(); - if (MONTH.equals(semanticParseInfo.getDateInfo().getPeriod())) { + if (DatePeriodEnum.MONTH.equals(semanticParseInfo.getDateInfo().getPeriod())) { statisticsRollName = RatioOverType.MONTH_ON_MONTH.getShowName(); statisticsOverName = RatioOverType.YEAR_ON_MONTH.getShowName(); } - if (WEEK.equals(semanticParseInfo.getDateInfo().getPeriod())) { + if (DatePeriodEnum.WEEK.equals(semanticParseInfo.getDateInfo().getPeriod())) { statisticsRollName = RatioOverType.WEEK_ON_WEEK.getShowName(); statisticsOverName = RatioOverType.MONTH_ON_WEEK.getShowName(); } @@ -234,7 +232,7 @@ public class MetricRatioProcessor implements ExecuteResultProcessor { List dayList = new ArrayList<>(); dayList.add(lastDay); String start = ""; - if (DAY.equalsIgnoreCase(semanticParseInfo.getDateInfo().getPeriod())) { + if (DatePeriodEnum.DAY.equals(semanticParseInfo.getDateInfo().getPeriod())) { DateTimeFormatter formatter = DateUtils.getDateFormatter(lastDay, new String[] {DAY_FORMAT, DAY_FORMAT_INT}); LocalDate end = LocalDate.parse(lastDay, formatter); @@ -243,7 +241,7 @@ public class MetricRatioProcessor implements ExecuteResultProcessor { ? end.minusDays(1).format(formatter) : end.minusWeeks(1).format(formatter); } - if (WEEK.equalsIgnoreCase(semanticParseInfo.getDateInfo().getPeriod())) { + if (DatePeriodEnum.WEEK.equals(semanticParseInfo.getDateInfo().getPeriod())) { DateTimeFormatter formatter = DateUtils.getTimeFormatter( lastDay, @@ -254,7 +252,7 @@ public class MetricRatioProcessor implements ExecuteResultProcessor { ? end.minusWeeks(1).format(formatter) : end.minusMonths(1).with(DayOfWeek.MONDAY).format(formatter); } - if (MONTH.equalsIgnoreCase(semanticParseInfo.getDateInfo().getPeriod())) { + if (DatePeriodEnum.MONTH.equals(semanticParseInfo.getDateInfo().getPeriod())) { DateTimeFormatter formatter = DateUtils.getDateFormatter( lastDay, new String[] {MONTH_FORMAT, MONTH_FORMAT_INT}); diff --git a/chat/server/src/main/java/com/tencent/supersonic/chat/server/service/impl/ChatQueryServiceImpl.java b/chat/server/src/main/java/com/tencent/supersonic/chat/server/service/impl/ChatQueryServiceImpl.java index 9a985fd0b..dc4e67747 100644 --- a/chat/server/src/main/java/com/tencent/supersonic/chat/server/service/impl/ChatQueryServiceImpl.java +++ b/chat/server/src/main/java/com/tencent/supersonic/chat/server/service/impl/ChatQueryServiceImpl.java @@ -48,15 +48,6 @@ import com.tencent.supersonic.headless.chat.query.SemanticQuery; import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMSqlQuery; import com.tencent.supersonic.headless.server.facade.service.ChatLayerService; import com.tencent.supersonic.headless.server.facade.service.SemanticLayerService; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -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 net.sf.jsqlparser.expression.Expression; import net.sf.jsqlparser.expression.LongValue; @@ -73,6 +64,16 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.stream.Collectors; + @Slf4j @Service public class ChatQueryServiceImpl implements ChatQueryService { @@ -222,7 +223,10 @@ public class ChatQueryServiceImpl implements ChatQueryService { } private void handleLLMQueryMode( - ChatQueryDataReq chatQueryDataReq, SemanticQuery semanticQuery, DataSetSchema dataSetSchema, User user) + ChatQueryDataReq chatQueryDataReq, + SemanticQuery semanticQuery, + DataSetSchema dataSetSchema, + User user) throws Exception { SemanticParseInfo parseInfo = semanticQuery.getParseInfo(); List fields = getFieldsFromSql(parseInfo); @@ -271,7 +275,8 @@ public class ChatQueryServiceImpl implements ChatQueryService { return !oriFields.containsAll(metricNames); } - private String reviseCorrectS2SQL(ChatQueryDataReq queryData, SemanticParseInfo parseInfo, DataSetSchema dataSetSchema) { + private String reviseCorrectS2SQL( + ChatQueryDataReq queryData, SemanticParseInfo parseInfo, DataSetSchema dataSetSchema) { String correctorSql = parseInfo.getSqlInfo().getCorrectedS2SQL(); log.info("correctorSql before replacing:{}", correctorSql); // get where filter and having filter @@ -372,7 +377,7 @@ public class ChatQueryServiceImpl implements ChatQueryService { queryData .getDateInfo() .setStartDate(DateUtils.getBeforeDate(queryData.getDateInfo().getUnit() + 1)); - queryData.getDateInfo().setEndDate(DateUtils.getBeforeDate(1)); + queryData.getDateInfo().setEndDate(DateUtils.getBeforeDate(0)); } SchemaElement partitionDimension = dataSetSchema.getPartitionDimension(); // startDate equals to endDate @@ -382,10 +387,16 @@ public class ChatQueryServiceImpl implements ChatQueryService { removeFieldNames.add(partitionDimension.getName()); GreaterThanEquals greaterThanEquals = new GreaterThanEquals(); addTimeFilters( - queryData.getDateInfo().getStartDate(), greaterThanEquals, addConditions, partitionDimension); + queryData.getDateInfo().getStartDate(), + greaterThanEquals, + addConditions, + partitionDimension); MinorThanEquals minorThanEquals = new MinorThanEquals(); addTimeFilters( - queryData.getDateInfo().getEndDate(), minorThanEquals, addConditions, partitionDimension); + queryData.getDateInfo().getEndDate(), + minorThanEquals, + addConditions, + partitionDimension); break; } } @@ -415,7 +426,10 @@ public class ChatQueryServiceImpl implements ChatQueryService { } private void addTimeFilters( - String date, T comparisonExpression, List addConditions, SchemaElement partitionDimension) { + String date, + T comparisonExpression, + List addConditions, + SchemaElement partitionDimension) { Column column = new Column(partitionDimension.getName()); StringValue stringValue = new StringValue(date); comparisonExpression.setLeftExpression(column); diff --git a/common/src/main/java/com/tencent/supersonic/common/pojo/Constants.java b/common/src/main/java/com/tencent/supersonic/common/pojo/Constants.java index 7b6757d47..c37d40091 100644 --- a/common/src/main/java/com/tencent/supersonic/common/pojo/Constants.java +++ b/common/src/main/java/com/tencent/supersonic/common/pojo/Constants.java @@ -3,70 +3,40 @@ package com.tencent.supersonic.common.pojo; import java.util.regex.Pattern; public class Constants { - public static final String COMMA = ","; public static final String DOUBLE_SLASH = "//"; public static final String EMPTY = ""; public static final String AT_SYMBOL = "@"; public static final String DOT = "."; - public static String SPACE = " "; - public static String POUND = "#"; + public static final String SPACE = " "; + public static final String POUND = "#"; public static final String COLON = ":"; public static final String MINUS = "-"; public static final String UNDERLINE = "_"; - public static final String DICT_VALUE = "v"; - public static final String UNDERLINE_DOUBLE = "__"; public static final String PARENTHESES_START = "("; public static final String PARENTHESES_END = ")"; public static final String APOSTROPHE = "'"; public static final String PERCENT_SIGN = "%"; - public static String LIMIT_UPPER = "LIMIT"; - public static String ORDER_UPPER = "ORDER"; - public static String DESC_UPPER = "DESC"; - public static String ASC_UPPER = "ASC"; - public static String GROUP_UPPER = "GROUP"; - public static String NULL_UPPER = "NULL"; - public static String AND_UPPER = "AND"; - public static String END_SUBQUERY = ") subq_"; - public static String SYS_VAR = "sys_var"; + public static final String DESC_UPPER = "DESC"; + public static final String ASC_UPPER = "ASC"; + public static final String AND_UPPER = "AND"; + public static final String SYS_VAR = "sys_var"; public static final String NEW_LINE_CHAR = "\n"; public static final String UNIONALL = " union all "; - public static final String YAML_FILES_SUFFIX = ".yaml"; public static final String JDBC_PREFIX_FORMATTER = "jdbc:%s:"; public static final Pattern PATTERN_JDBC_TYPE = Pattern.compile("jdbc:\\w+"); - public static final String STATISTIC = "statistic"; - public static final String DORIS_LOWER = "doris"; - public static final String MYSQL_LOWER = "mysql"; public static final String ADMIN_LOWER = "admin"; - - public static final String DAY = "DAY"; public static final String DAY_FORMAT = "yyyy-MM-dd"; public static final String MONTH_FORMAT = "yyyy-MM"; public static final String TIMES_FORMAT = "yyyy-MM-dd HH:mm:ss.S"; public static final String TIME_FORMAT = "yyyy-MM-dd HH:mm:ss"; public static final String DAY_FORMAT_INT = "YYYYMMDD"; public static final String MONTH_FORMAT_INT = "YYYYMM"; - public static final String MONTH = "MONTH"; - public static final String WEEK = "WEEK"; - public static final String YEAR = "YEAR"; - public static final String JOIN_UNDERLINE = "__"; - - public static final String LIST_LOWER = "list"; - public static final String TOTAL_LOWER = "total"; - public static final String PAGESIZE_LOWER = "pageSize"; - public static final String TRUE_LOWER = "true"; - public static final String NULL = "null"; - public static final Double MAX_SIMILARITY = 1.0d; public static final String CONTEXT = "CONTEXT"; - public static final String BRACKETS_START = "["; - public static final String BRACKETS_END = "]"; - public static final Long DEFAULT_FREQUENCY = 100000L; - public static final String TABLE_PREFIX = "t_"; - public static final Long DEFAULT_DETAIL_LIMIT = 500L; public static final Long DEFAULT_METRIC_LIMIT = 200L; } diff --git a/common/src/main/java/com/tencent/supersonic/common/pojo/DateConf.java b/common/src/main/java/com/tencent/supersonic/common/pojo/DateConf.java index 8f4d9e52f..784753cf6 100644 --- a/common/src/main/java/com/tencent/supersonic/common/pojo/DateConf.java +++ b/common/src/main/java/com/tencent/supersonic/common/pojo/DateConf.java @@ -1,5 +1,6 @@ package com.tencent.supersonic.common.pojo; +import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum; import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum; import com.tencent.supersonic.common.util.DateUtils; import lombok.Data; @@ -29,8 +30,8 @@ public class DateConf { /** the last unit time unit, such as the last 7 days, unit = 7 */ private Integer unit = 1; - /** DAY,WEEK,MONTH */ - private String period = Constants.DAY; + /** DAY,WEEK,MONTH,QUARTER,YEAR */ + private DatePeriodEnum period = DatePeriodEnum.DAY; /** the text parse from , example "last 7 days" , "last mouth" */ private String detectWord; @@ -49,11 +50,11 @@ public class DateConf { } public String getGroupByTimeDimension() { - if (Constants.DAY.equals(period)) { + if (DatePeriodEnum.DAY.equals(period)) { return TimeDimensionEnum.DAY.getName(); - } else if (Constants.WEEK.equals(period)) { + } else if (DatePeriodEnum.WEEK.equals(period)) { return TimeDimensionEnum.WEEK.getName(); - } else if (Constants.MONTH.equals(period)) { + } else if (DatePeriodEnum.MONTH.equals(period)) { return TimeDimensionEnum.MONTH.getName(); } else { return TimeDimensionEnum.DAY.getName(); diff --git a/common/src/main/java/com/tencent/supersonic/common/pojo/enums/DatePeriodEnum.java b/common/src/main/java/com/tencent/supersonic/common/pojo/enums/DatePeriodEnum.java index de6a25fef..4f2197e73 100644 --- a/common/src/main/java/com/tencent/supersonic/common/pojo/enums/DatePeriodEnum.java +++ b/common/src/main/java/com/tencent/supersonic/common/pojo/enums/DatePeriodEnum.java @@ -1,7 +1,7 @@ package com.tencent.supersonic.common.pojo.enums; public enum DatePeriodEnum { - DAY("日"), + DAY("天"), WEEK("周"), MONTH("月"), QUARTER("季度"), @@ -24,4 +24,13 @@ public enum DatePeriodEnum { } return null; } + + public static DatePeriodEnum fromChName(String chName) { + for (DatePeriodEnum value : values()) { + if (value.chName.equals(chName)) { + return value; + } + } + return null; + } } diff --git a/common/src/main/java/com/tencent/supersonic/common/util/DateModeUtils.java b/common/src/main/java/com/tencent/supersonic/common/util/DateModeUtils.java index 3f63ff2d0..c2ebfd990 100644 --- a/common/src/main/java/com/tencent/supersonic/common/util/DateModeUtils.java +++ b/common/src/main/java/com/tencent/supersonic/common/util/DateModeUtils.java @@ -3,6 +3,7 @@ package com.tencent.supersonic.common.util; import com.tencent.supersonic.common.pojo.Constants; import com.tencent.supersonic.common.pojo.DateConf; import com.tencent.supersonic.common.pojo.ItemDateResp; +import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -23,12 +24,8 @@ import java.util.regex.Pattern; 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.DAY; import static com.tencent.supersonic.common.pojo.Constants.DAY_FORMAT; -import static com.tencent.supersonic.common.pojo.Constants.MONTH; import static com.tencent.supersonic.common.pojo.Constants.MONTH_FORMAT; -import static com.tencent.supersonic.common.pojo.Constants.WEEK; -import static com.tencent.supersonic.common.pojo.Constants.YEAR; @Slf4j @Component @@ -50,16 +47,6 @@ public class DateModeUtils { @Value("${s2.query.parameter.sys.zipper.end:end_}") private String sysZipperDateColEnd; - public Boolean recentMode(DateConf dateInfo) { - if (Objects.nonNull(dateInfo) - && DateConf.DateMode.RECENT == dateInfo.getDateMode() - && DAY.equalsIgnoreCase(dateInfo.getPeriod()) - && Objects.nonNull(dateInfo.getUnit())) { - return true; - } - return false; - } - public boolean hasAvailableDataMode(DateConf dateInfo) { if (Objects.nonNull(dateInfo) && DateConf.DateMode.AVAILABLE == dateInfo.getDateMode()) { return true; @@ -93,7 +80,7 @@ public class DateModeUtils { LocalDate endReq = LocalDate.parse(dateInfo.getEndDate(), formatter); if (endReq.isAfter(endData)) { - if (DAY.equalsIgnoreCase(dateInfo.getPeriod())) { + if (DatePeriodEnum.DAY.equals(dateInfo.getPeriod())) { Long unit = getInterval( dateInfo.getStartDate(), @@ -106,7 +93,7 @@ public class DateModeUtils { "(%s >= '%s' and %s <= '%s')", sysDateCol, dateMin, sysDateCol, dateMax); } - if (MONTH.equalsIgnoreCase(dateInfo.getPeriod())) { + if (DatePeriodEnum.MONTH.equals(dateInfo.getPeriod())) { Long unit = getInterval( dateInfo.getStartDate(), @@ -193,7 +180,8 @@ public class DateModeUtils { dateDate.getEndDate(), DateTimeFormatter.ofPattern(dateDate.getDateFormat())); List> ret = new ArrayList<>(); - if (dateDate.getDatePeriod() != null && MONTH.equalsIgnoreCase(dateDate.getDatePeriod())) { + if (dateDate.getDatePeriod() != null + && DatePeriodEnum.MONTH.equals(dateDate.getDatePeriod())) { Long unit = getInterval( dateInfo.getStartDate(), @@ -260,13 +248,13 @@ public class DateModeUtils { if (Objects.isNull(dateDate)) { return ""; } - if (DAY.equalsIgnoreCase(dateInfo.getPeriod())) { + if (DatePeriodEnum.DAY.equals(dateInfo.getPeriod())) { return recentDayStr(dateDate, dateInfo); } - if (MONTH.equalsIgnoreCase(dateInfo.getPeriod())) { + if (DatePeriodEnum.MONTH.equals(dateInfo.getPeriod())) { return recentMonthStr(dateDate, dateInfo); } - if (WEEK.equalsIgnoreCase(dateInfo.getPeriod())) { + if (DatePeriodEnum.WEEK.equals(dateInfo.getPeriod())) { return recentWeekStr(dateDate, dateInfo); } return ""; @@ -279,7 +267,7 @@ public class DateModeUtils { * @return */ public String betweenDateStr(DateConf dateInfo) { - if (MONTH.equalsIgnoreCase(dateInfo.getPeriod())) { + if (DatePeriodEnum.MONTH.equals(dateInfo.getPeriod())) { // startDate YYYYMM if (!dateInfo.getStartDate().contains(Constants.MINUS)) { return String.format( @@ -302,7 +290,7 @@ public class DateModeUtils { sysDateMonthCol, endData.format(formatter)); } - if (WEEK.equalsIgnoreCase(dateInfo.getPeriod())) { + if (DatePeriodEnum.WEEK.equals(dateInfo.getPeriod())) { return String.format( "%s >= '%s' and %s <= '%s'", sysDateWeekCol, dateInfo.getStartDate(), sysDateWeekCol, dateInfo.getEndDate()); @@ -322,10 +310,10 @@ public class DateModeUtils { StringJoiner joiner = new StringJoiner(COMMA); dateInfo.getDateList().stream().forEach(date -> joiner.add(APOSTROPHE + date + APOSTROPHE)); String dateCol = sysDateCol; - if (MONTH.equalsIgnoreCase(dateInfo.getPeriod())) { + if (DatePeriodEnum.MONTH.equals(dateInfo.getPeriod())) { dateCol = sysDateMonthCol; } - if (WEEK.equalsIgnoreCase(dateInfo.getPeriod())) { + if (DatePeriodEnum.WEEK.equals(dateInfo.getPeriod())) { dateCol = sysDateWeekCol; } return String.format("(%s in (%s))", dateCol, joiner.toString()); @@ -344,22 +332,22 @@ public class DateModeUtils { Integer unit = dateInfo.getUnit(); - if (DAY.equalsIgnoreCase(dateInfo.getPeriod())) { + if (DatePeriodEnum.DAY.equals(dateInfo.getPeriod())) { LocalDate dateMax = LocalDate.now().minusDays(1); LocalDate dateMin = dateMax.minusDays(unit - 1); return String.format( "(%s >= '%s' and %s <= '%s')", sysDateCol, dateMin, sysDateCol, dateMax); } - if (WEEK.equalsIgnoreCase(dateInfo.getPeriod())) { + if (DatePeriodEnum.WEEK.equals(dateInfo.getPeriod())) { LocalDate dateMax = LocalDate.now().minusDays(1); return recentWeekStr(dateMax, unit.longValue()); } - if (MONTH.equalsIgnoreCase(dateInfo.getPeriod())) { + if (DatePeriodEnum.MONTH.equals(dateInfo.getPeriod())) { LocalDate dateMax = LocalDate.now().minusDays(1); return recentMonthStr(dateMax, unit.longValue(), MONTH_FORMAT); } - if (YEAR.equalsIgnoreCase(dateInfo.getPeriod())) { + if (DatePeriodEnum.YEAR.equals(dateInfo.getPeriod())) { LocalDate dateMax = LocalDate.now().minusDays(1); return recentMonthStr(dateMax, unit.longValue() * 12, MONTH_FORMAT); } @@ -398,13 +386,13 @@ public class DateModeUtils { } public String getSysDateCol(DateConf dateInfo) { - if (DAY.equalsIgnoreCase(dateInfo.getPeriod())) { + if (DatePeriodEnum.DAY.equals(dateInfo.getPeriod())) { return sysDateCol; } - if (WEEK.equalsIgnoreCase(dateInfo.getPeriod())) { + if (DatePeriodEnum.WEEK.equals(dateInfo.getPeriod())) { return sysDateWeekCol; } - if (MONTH.equalsIgnoreCase(dateInfo.getPeriod())) { + if (DatePeriodEnum.MONTH.equals(dateInfo.getPeriod())) { return sysDateMonthCol; } return ""; @@ -414,16 +402,16 @@ public class DateModeUtils { return Pattern.matches("[\\d\\s-:]+", date); } - public String getPeriodByCol(String col) { + public DatePeriodEnum getPeriodByCol(String col) { if (sysDateCol.equalsIgnoreCase(col)) { - return DAY; + return DatePeriodEnum.DAY; } if (sysDateWeekCol.equalsIgnoreCase(col)) { - return WEEK; + return DatePeriodEnum.WEEK; } if (sysDateMonthCol.equalsIgnoreCase(col)) { - return MONTH; + return DatePeriodEnum.MONTH; } - return ""; + return null; } } diff --git a/common/src/main/java/com/tencent/supersonic/common/util/DateUtils.java b/common/src/main/java/com/tencent/supersonic/common/util/DateUtils.java index 84891c31c..10101e237 100644 --- a/common/src/main/java/com/tencent/supersonic/common/util/DateUtils.java +++ b/common/src/main/java/com/tencent/supersonic/common/util/DateUtils.java @@ -1,7 +1,6 @@ package com.tencent.supersonic.common.util; import com.google.common.collect.Lists; -import com.tencent.supersonic.common.pojo.Constants; import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum; import lombok.extern.slf4j.Slf4j; @@ -163,7 +162,8 @@ public class DateUtils { return !timeString.equals("00:00:00"); } - public static List getDateList(String startDateStr, String endDateStr, String period) { + public static List getDateList( + String startDateStr, String endDateStr, DatePeriodEnum period) { try { LocalDate startDate = LocalDate.parse(startDateStr); LocalDate endDate = LocalDate.parse(endDateStr); @@ -171,10 +171,10 @@ public class DateUtils { LocalDate currentDate = startDate; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM"); while (!currentDate.isAfter(endDate)) { - if (Constants.MONTH.equals(period)) { + if (DatePeriodEnum.MONTH.equals(period)) { datesInRange.add(currentDate.format(formatter)); currentDate = currentDate.plusMonths(1); - } else if (Constants.WEEK.equals(period)) { + } else if (DatePeriodEnum.WEEK.equals((period))) { datesInRange.add(currentDate.format(DateTimeFormatter.ISO_DATE)); currentDate = currentDate.plusWeeks(1); } else { diff --git a/common/src/test/java/com/tencent/supersonic/common/DateUtilsTest.java b/common/src/test/java/com/tencent/supersonic/common/DateUtilsTest.java index c6e45d652..90986056d 100644 --- a/common/src/test/java/com/tencent/supersonic/common/DateUtilsTest.java +++ b/common/src/test/java/com/tencent/supersonic/common/DateUtilsTest.java @@ -1,6 +1,5 @@ package com.tencent.supersonic.common; -import com.tencent.supersonic.common.pojo.Constants; import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum; import com.tencent.supersonic.common.util.DateUtils; import org.assertj.core.util.Lists; @@ -47,7 +46,7 @@ class DateUtilsTest { void testDayDateList() { String startDate = "2023-07-29"; String endDate = "2023-08-03"; - List actualDateList = DateUtils.getDateList(startDate, endDate, Constants.DAY); + List actualDateList = DateUtils.getDateList(startDate, endDate, DatePeriodEnum.DAY); List expectedDateList = Lists.newArrayList( "2023-07-29", @@ -56,14 +55,15 @@ class DateUtilsTest { "2023-08-01", "2023-08-02", "2023-08-03"); - Assertions.assertEquals(actualDateList, expectedDateList); + Assertions.assertEquals(expectedDateList, actualDateList); } @Test void testWeekDateList() { String startDate = "2023-10-30"; String endDate = "2023-11-13"; - List actualDateList = DateUtils.getDateList(startDate, endDate, Constants.WEEK); + List actualDateList = + DateUtils.getDateList(startDate, endDate, DatePeriodEnum.WEEK); List expectedDateList = Lists.newArrayList("2023-10-30", "2023-11-06", "2023-11-13"); Assertions.assertEquals(actualDateList, expectedDateList); @@ -73,7 +73,8 @@ class DateUtilsTest { void testMonthDateList() { String startDate = "2023-07-01"; String endDate = "2023-10-01"; - List actualDateList = DateUtils.getDateList(startDate, endDate, Constants.MONTH); + List actualDateList = + DateUtils.getDateList(startDate, endDate, DatePeriodEnum.MONTH); List expectedDateList = Lists.newArrayList("2023-07", "2023-08", "2023-09", "2023-10"); Assertions.assertEquals(actualDateList, expectedDateList); diff --git a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/MetricTypeDefaultConfig.java b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/MetricTypeDefaultConfig.java index ed554ea09..f9d76ec51 100644 --- a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/MetricTypeDefaultConfig.java +++ b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/MetricTypeDefaultConfig.java @@ -1,6 +1,6 @@ package com.tencent.supersonic.headless.api.pojo; -import com.tencent.supersonic.common.pojo.Constants; +import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum; import com.tencent.supersonic.common.pojo.enums.TimeMode; import lombok.Data; @@ -8,7 +8,7 @@ import lombok.Data; public class MetricTypeDefaultConfig { private TimeDefaultConfig timeDefaultConfig = - new TimeDefaultConfig(7, Constants.DAY, TimeMode.RECENT); + new TimeDefaultConfig(7, DatePeriodEnum.DAY, TimeMode.RECENT); private Long limit; } diff --git a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/TimeDefaultConfig.java b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/TimeDefaultConfig.java index 6c803b646..5fa5d2917 100644 --- a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/TimeDefaultConfig.java +++ b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/TimeDefaultConfig.java @@ -1,6 +1,6 @@ package com.tencent.supersonic.headless.api.pojo; -import com.tencent.supersonic.common.pojo.Constants; +import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum; import com.tencent.supersonic.common.pojo.enums.TimeMode; import lombok.AllArgsConstructor; import lombok.Data; @@ -14,8 +14,7 @@ public class TimeDefaultConfig { /** default time span unit */ private Integer unit = 1; - /** default time type: day DAY, WEEK, MONTH, YEAR */ - private String period = Constants.DAY; + private DatePeriodEnum period = DatePeriodEnum.DAY; private TimeMode timeMode = TimeMode.LAST; } diff --git a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/S2SqlDateHelper.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/S2SqlDateHelper.java index 9108ad4a0..aa0b60318 100644 --- a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/S2SqlDateHelper.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/S2SqlDateHelper.java @@ -26,7 +26,7 @@ public class S2SqlDateHelper { } TimeMode timeMode = timeConfig.getTimeMode(); - DatePeriodEnum datePeriod = DatePeriodEnum.get(timeConfig.getPeriod()); + DatePeriodEnum datePeriod = timeConfig.getPeriod(); String startDate; String endDate; switch (timeMode) { diff --git a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/rule/TimeRangeParser.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/rule/TimeRangeParser.java index 9bc996504..f88170c2d 100644 --- a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/rule/TimeRangeParser.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/rule/TimeRangeParser.java @@ -1,7 +1,7 @@ package com.tencent.supersonic.headless.chat.parser.rule; -import com.tencent.supersonic.common.pojo.Constants; import com.tencent.supersonic.common.pojo.DateConf; +import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; import com.tencent.supersonic.headless.chat.ChatQueryContext; import com.tencent.supersonic.headless.chat.parser.SemanticParser; @@ -132,11 +132,11 @@ public class TimeRangeParser implements SemanticParser { String detectWord = matcher.group("periodStr"); DateConf info = new DateConf(); - info.setPeriod(getPeriodConstant(zhPeriod)); - info.setDateMode(DateConf.DateMode.RECENT); + info.setPeriod(DatePeriodEnum.fromChName(zhPeriod)); + info.setDateMode(DateConf.DateMode.BETWEEN); info.setDetectWord(detectWord); info.setStartDate(LocalDate.now().minusDays(days).toString()); - info.setEndDate(LocalDate.now().minusDays(1).toString()); + info.setEndDate(LocalDate.now().toString()); info.setUnit(num); return info; @@ -166,19 +166,6 @@ public class TimeRangeParser implements SemanticParser { } } - private String getPeriodConstant(String zhPeriod) { - switch (zhPeriod) { - case "周": - return Constants.WEEK; - case "月": - return Constants.MONTH; - case "年": - return Constants.YEAR; - default: - return Constants.DAY; - } - } - private int zhNumParse(String zhNumStr) { Stack stack = new Stack<>(); String numStr = "一二三四五六七八九"; diff --git a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/detail/DetailSemanticQuery.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/detail/DetailSemanticQuery.java index 35b086d54..a39265e11 100644 --- a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/detail/DetailSemanticQuery.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/detail/DetailSemanticQuery.java @@ -49,13 +49,11 @@ public abstract class DetailSemanticQuery extends RuleSemanticQuery { && timeDefaultConfig.getUnit() != -1) { DateConf dateInfo = new DateConf(); int unit = timeDefaultConfig.getUnit(); - String startDate = LocalDate.now().plusDays(-unit).toString(); + String startDate = LocalDate.now().minusDays(unit).toString(); String endDate = startDate; - if (TimeMode.LAST.equals(timeDefaultConfig.getTimeMode())) { - dateInfo.setDateMode(DateConf.DateMode.BETWEEN); - } else if (TimeMode.RECENT.equals(timeDefaultConfig.getTimeMode())) { - dateInfo.setDateMode(DateConf.DateMode.RECENT); - endDate = LocalDate.now().plusDays(-1).toString(); + dateInfo.setDateMode(DateConf.DateMode.BETWEEN); + if (TimeMode.RECENT.equals(timeDefaultConfig.getTimeMode())) { + endDate = LocalDate.now().toString(); } dateInfo.setUnit(unit); dateInfo.setPeriod(timeDefaultConfig.getPeriod()); diff --git a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/metric/MetricSemanticQuery.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/metric/MetricSemanticQuery.java index 8f1f5db9c..12586fd81 100644 --- a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/metric/MetricSemanticQuery.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/metric/MetricSemanticQuery.java @@ -56,13 +56,11 @@ public abstract class MetricSemanticQuery extends RuleSemanticQuery { && Objects.nonNull(timeDefaultConfig.getUnit()) && timeDefaultConfig.getUnit() != -1) { int unit = timeDefaultConfig.getUnit(); - String startDate = LocalDate.now().plusDays(-unit).toString(); + String startDate = LocalDate.now().minusDays(unit).toString(); String endDate = startDate; - if (TimeMode.LAST.equals(timeDefaultConfig.getTimeMode())) { - dateInfo.setDateMode(DateConf.DateMode.BETWEEN); - } else if (TimeMode.RECENT.equals(timeDefaultConfig.getTimeMode())) { - dateInfo.setDateMode(DateConf.DateMode.RECENT); - endDate = LocalDate.now().plusDays(-1).toString(); + dateInfo.setDateMode(DateConf.DateMode.BETWEEN); + if (TimeMode.RECENT.equals(timeDefaultConfig.getTimeMode())) { + endDate = LocalDate.now().toString(); } dateInfo.setUnit(unit); dateInfo.setPeriod(timeDefaultConfig.getPeriod()); diff --git a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/utils/QueryReqBuilder.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/utils/QueryReqBuilder.java index c7ae7ba47..96ba82fd8 100644 --- a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/utils/QueryReqBuilder.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/utils/QueryReqBuilder.java @@ -2,12 +2,12 @@ package com.tencent.supersonic.headless.chat.utils; import com.google.common.collect.Lists; 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.AggregateTypeEnum; +import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum; import com.tencent.supersonic.common.pojo.enums.QueryType; import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum; import com.tencent.supersonic.headless.api.pojo.SchemaElement; @@ -23,7 +23,6 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.util.CollectionUtils; -import java.time.LocalDate; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -42,7 +41,7 @@ public class QueryReqBuilder { queryStructReq.setDataSetId(parseInfo.getDataSetId()); queryStructReq.setDataSetName(parseInfo.getDataSet().getName()); queryStructReq.setQueryType(parseInfo.getQueryType()); - queryStructReq.setDateInfo(rewrite2Between(parseInfo.getDateInfo())); + queryStructReq.setDateInfo(parseInfo.getDateInfo()); List dimensionFilters = getFilters(parseInfo.getDimensionFilters()); queryStructReq.setDimensionFilters(dimensionFilters); @@ -108,40 +107,6 @@ public class QueryReqBuilder { } } - private static DateConf rewrite2Between(DateConf dateInfo) { - if (Objects.isNull(dateInfo)) { - return null; - } - DateConf dateInfoNew = new DateConf(); - BeanUtils.copyProperties(dateInfo, dateInfoNew); - if (DateConf.DateMode.RECENT.equals(dateInfo.getDateMode())) { - int unit = dateInfo.getUnit(); - int days = 1; - switch (dateInfo.getPeriod()) { - case Constants.DAY: - days = 1; - break; - case Constants.WEEK: - days = 7; - break; - case Constants.MONTH: - days = 30; - break; - case Constants.YEAR: - days = 365; - break; - default: - break; - } - String startDate = LocalDate.now().plusDays(-(unit * days)).toString(); - String endDate = LocalDate.now().plusDays(-1).toString(); - dateInfoNew.setDateMode(DateConf.DateMode.BETWEEN); - dateInfoNew.setStartDate(startDate); - dateInfoNew.setEndDate(endDate); - } - return dateInfoNew; - } - public static QueryMultiStructReq buildMultiStructReq(SemanticParseInfo parseInfo) { QueryStructReq queryStructReq = buildStructReq(parseInfo); QueryMultiStructReq queryMultiStructReq = new QueryMultiStructReq(); @@ -282,10 +247,10 @@ public class QueryReqBuilder { return ""; } String dateField = TimeDimensionEnum.DAY.getName(); - if (Constants.MONTH.equals(dateConf.getPeriod())) { + if (DatePeriodEnum.MONTH.equals(dateConf.getPeriod())) { dateField = TimeDimensionEnum.MONTH.getName(); } - if (Constants.WEEK.equals(dateConf.getPeriod())) { + if (DatePeriodEnum.WEEK.equals(dateConf.getPeriod())) { dateField = TimeDimensionEnum.WEEK.getName(); } return dateField; diff --git a/headless/chat/src/test/java/com/tencent/supersonic/headless/chat/utils/S2SqlDateHelperTest.java b/headless/chat/src/test/java/com/tencent/supersonic/headless/chat/utils/S2SqlDateHelperTest.java index 8148aa7ea..6dc03a603 100644 --- a/headless/chat/src/test/java/com/tencent/supersonic/headless/chat/utils/S2SqlDateHelperTest.java +++ b/headless/chat/src/test/java/com/tencent/supersonic/headless/chat/utils/S2SqlDateHelperTest.java @@ -1,6 +1,6 @@ package com.tencent.supersonic.headless.chat.utils; -import com.tencent.supersonic.common.pojo.Constants; +import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum; import com.tencent.supersonic.common.pojo.enums.TimeMode; import com.tencent.supersonic.headless.api.pojo.TimeDefaultConfig; import com.tencent.supersonic.headless.chat.corrector.S2SqlDateHelper; @@ -13,14 +13,14 @@ class S2SqlDateHelperTest { void testCurrentTimeMode() { TimeDefaultConfig timeDefaultConfig = new TimeDefaultConfig(); timeDefaultConfig.setTimeMode(TimeMode.CURRENT); - timeDefaultConfig.setPeriod(Constants.MONTH); + timeDefaultConfig.setPeriod(DatePeriodEnum.MONTH); Pair dateRange = S2SqlDateHelper.calculateDateRange("2024-09-21", timeDefaultConfig, "yyyy-MM-dd"); assert dateRange.getLeft().equals("2024-09-01"); assert dateRange.getRight().equals("2024-09-21"); - timeDefaultConfig.setPeriod(Constants.YEAR); + timeDefaultConfig.setPeriod(DatePeriodEnum.YEAR); dateRange = S2SqlDateHelper.calculateDateRange("2024-09-21", timeDefaultConfig, "yyyy-MM-dd"); assert dateRange.getLeft().equals("2024-01-01"); @@ -32,20 +32,20 @@ class S2SqlDateHelperTest { TimeDefaultConfig timeDefaultConfig = new TimeDefaultConfig(); timeDefaultConfig.setTimeMode(TimeMode.RECENT); timeDefaultConfig.setUnit(3); - timeDefaultConfig.setPeriod(Constants.DAY); + timeDefaultConfig.setPeriod(DatePeriodEnum.DAY); Pair dateRange = S2SqlDateHelper.calculateDateRange("2024-09-21", timeDefaultConfig, "yyyy-MM-dd"); assert dateRange.getLeft().equals("2024-09-18"); assert dateRange.getRight().equals("2024-09-21"); - timeDefaultConfig.setPeriod(Constants.MONTH); + timeDefaultConfig.setPeriod(DatePeriodEnum.MONTH); dateRange = S2SqlDateHelper.calculateDateRange("2024-09-21", timeDefaultConfig, "yyyy-MM-dd"); assert dateRange.getLeft().equals("2024-06-21"); assert dateRange.getRight().equals("2024-09-21"); - timeDefaultConfig.setPeriod(Constants.YEAR); + timeDefaultConfig.setPeriod(DatePeriodEnum.YEAR); dateRange = S2SqlDateHelper.calculateDateRange("2024-09-21", timeDefaultConfig, "yyyy-MM-dd"); assert dateRange.getLeft().equals("2021-09-21"); @@ -57,20 +57,20 @@ class S2SqlDateHelperTest { TimeDefaultConfig timeDefaultConfig = new TimeDefaultConfig(); timeDefaultConfig.setTimeMode(TimeMode.LAST); timeDefaultConfig.setUnit(3); - timeDefaultConfig.setPeriod(Constants.DAY); + timeDefaultConfig.setPeriod(DatePeriodEnum.DAY); Pair dateRange = S2SqlDateHelper.calculateDateRange("2024-09-21", timeDefaultConfig, "yyyy-MM-dd"); assert dateRange.getLeft().equals("2024-09-18"); assert dateRange.getRight().equals("2024-09-18"); - timeDefaultConfig.setPeriod(Constants.MONTH); + timeDefaultConfig.setPeriod(DatePeriodEnum.MONTH); dateRange = S2SqlDateHelper.calculateDateRange("2024-09-21", timeDefaultConfig, "yyyy-MM-dd"); assert dateRange.getLeft().equals("2024-06-21"); assert dateRange.getRight().equals("2024-06-21"); - timeDefaultConfig.setPeriod(Constants.YEAR); + timeDefaultConfig.setPeriod(DatePeriodEnum.YEAR); dateRange = S2SqlDateHelper.calculateDateRange("2024-09-21", timeDefaultConfig, "yyyy-MM-dd"); assert dateRange.getLeft().equals("2021-09-21"); diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/config/DefaultMetricInfo.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/config/DefaultMetricInfo.java index 262d58b62..f96b5e7cd 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/config/DefaultMetricInfo.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/config/DefaultMetricInfo.java @@ -1,6 +1,6 @@ package com.tencent.supersonic.headless.core.config; -import com.tencent.supersonic.common.pojo.Constants; +import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum; import lombok.Data; import lombok.ToString; @@ -16,5 +16,5 @@ public class DefaultMetricInfo { private Integer unit = 1; /** default time type: day DAY, WEEK, MONTH, YEAR */ - private String period = Constants.DAY; + private DatePeriodEnum period = DatePeriodEnum.DAY; } diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/converter/CalculateAggConverter.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/converter/CalculateAggConverter.java index 1739b6b0c..9af33b291 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/converter/CalculateAggConverter.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/converter/CalculateAggConverter.java @@ -1,8 +1,8 @@ package com.tencent.supersonic.headless.core.translator.converter; import com.tencent.supersonic.common.pojo.Aggregator; -import com.tencent.supersonic.common.pojo.Constants; import com.tencent.supersonic.common.pojo.enums.AggOperatorEnum; +import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum; import com.tencent.supersonic.common.util.ContextUtils; import com.tencent.supersonic.common.util.DateModeUtils; import com.tencent.supersonic.headless.api.pojo.MetricTable; @@ -214,13 +214,13 @@ public class CalculateAggConverter implements QueryConverter { public String getTimeSpan(QueryParam queryParam, boolean isOver, boolean isAdd) { if (Objects.nonNull(queryParam.getDateInfo())) { String addStr = isAdd ? "" : "-"; - if (queryParam.getDateInfo().getPeriod().equalsIgnoreCase(Constants.DAY)) { + if (queryParam.getDateInfo().getPeriod().equals(DatePeriodEnum.DAY)) { return "day," + (isOver ? addStr + "7" : addStr + "1"); } - if (queryParam.getDateInfo().getPeriod().equalsIgnoreCase(Constants.WEEK)) { + if (queryParam.getDateInfo().getPeriod().equals(DatePeriodEnum.MONTH)) { return isOver ? "month," + addStr + "1" : "day," + addStr + "7"; } - if (queryParam.getDateInfo().getPeriod().equalsIgnoreCase(Constants.MONTH)) { + if (queryParam.getDateInfo().getPeriod().equals(DatePeriodEnum.MONTH.MONTH)) { return isOver ? "year," + addStr + "1" : "month," + addStr + "1"; } } @@ -240,7 +240,7 @@ public class CalculateAggConverter implements QueryConverter { if (queryParam .getDateInfo() .getPeriod() - .equals(Constants.MONTH)) { + .equals(DatePeriodEnum.MONTH)) { return String.format( "%s is not null and %s = FORMATDATETIME(DATEADD(%s,CONCAT(%s,'-01')),'yyyy-MM') ", aliasRight + timeDim, @@ -251,7 +251,7 @@ public class CalculateAggConverter implements QueryConverter { if (queryParam .getDateInfo() .getPeriod() - .equals(Constants.WEEK) + .equals(DatePeriodEnum.WEEK) && isOver) { return String.format( " DATE_TRUNC('week',DATEADD(%s,%s) ) = %s ", @@ -313,7 +313,7 @@ public class CalculateAggConverter implements QueryConverter { if (queryParam .getDateInfo() .getPeriod() - .equals(Constants.MONTH)) { + .equals(DatePeriodEnum.MONTH)) { return String.format( "toDate(CONCAT(%s,'-01')) = date_add(toDate(CONCAT(%s,'-01')),%s) ", aliasLeft + timeDim, @@ -323,7 +323,7 @@ public class CalculateAggConverter implements QueryConverter { if (queryParam .getDateInfo() .getPeriod() - .equals(Constants.WEEK) + .equals(DatePeriodEnum.WEEK) && isOver) { return String.format( "toMonday(date_add(%s ,INTERVAL %s) ) = %s", @@ -386,13 +386,13 @@ public class CalculateAggConverter implements QueryConverter { public String getTimeSpan(QueryParam queryParam, boolean isOver, boolean isAdd) { if (Objects.nonNull(queryParam.getDateInfo())) { String addStr = isAdd ? "" : "-"; - if (queryParam.getDateInfo().getPeriod().equalsIgnoreCase(Constants.DAY)) { + if (queryParam.getDateInfo().getPeriod().equals(DatePeriodEnum.DAY)) { return isOver ? addStr + "7 day" : addStr + "1 day"; } - if (queryParam.getDateInfo().getPeriod().equalsIgnoreCase(Constants.WEEK)) { + if (queryParam.getDateInfo().getPeriod().equals(DatePeriodEnum.WEEK)) { return isOver ? addStr + "1 month" : addStr + "7 day"; } - if (queryParam.getDateInfo().getPeriod().equalsIgnoreCase(Constants.MONTH)) { + if (queryParam.getDateInfo().getPeriod().equals(DatePeriodEnum.MONTH)) { return isOver ? addStr + "1 year" : addStr + "1 month"; } } @@ -438,7 +438,7 @@ public class CalculateAggConverter implements QueryConverter { if (queryParam .getDateInfo() .getPeriod() - .equals(Constants.MONTH)) { + .equals(DatePeriodEnum.MONTH)) { return String.format( "%s = DATE_FORMAT(date_add(CONCAT(%s,'-01'), %s),'%%Y-%%m') ", aliasLeft + timeDim, @@ -448,7 +448,7 @@ public class CalculateAggConverter implements QueryConverter { if (queryParam .getDateInfo() .getPeriod() - .equals(Constants.WEEK) + .equals(DatePeriodEnum.WEEK) && isOver) { return String.format( "to_monday(date_add(%s ,INTERVAL %s) ) = %s", diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/utils/DataTransformUtils.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/utils/DataTransformUtils.java index 44be9f2b4..691e097b7 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/utils/DataTransformUtils.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/utils/DataTransformUtils.java @@ -1,8 +1,8 @@ package com.tencent.supersonic.headless.core.utils; import com.google.common.collect.Lists; -import com.tencent.supersonic.common.pojo.Constants; import com.tencent.supersonic.common.pojo.DateConf; +import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum; import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum; import org.apache.commons.lang3.StringUtils; @@ -66,9 +66,9 @@ public class DataTransformUtils { } private static String getTimeDimension(DateConf dateConf) { - if (Constants.MONTH.equals(dateConf.getPeriod())) { + if (DatePeriodEnum.MONTH.equals(dateConf.getPeriod())) { return TimeDimensionEnum.MONTH.getName(); - } else if (Constants.WEEK.equals(dateConf.getPeriod())) { + } else if (DatePeriodEnum.WEEK.equals(dateConf.getPeriod())) { return TimeDimensionEnum.WEEK.getName(); } else { return TimeDimensionEnum.DAY.getName(); diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/utils/SqlGenerateUtils.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/utils/SqlGenerateUtils.java index e17ff2ce8..cb2bbb5e6 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/utils/SqlGenerateUtils.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/utils/SqlGenerateUtils.java @@ -39,12 +39,9 @@ import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; -import static com.tencent.supersonic.common.pojo.Constants.DAY; import static com.tencent.supersonic.common.pojo.Constants.DAY_FORMAT; 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; /** tools functions to analyze queryStructReq */ @Component diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/facade/service/impl/S2SemanticLayerService.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/facade/service/impl/S2SemanticLayerService.java index de6badf21..2c5c56903 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/facade/service/impl/S2SemanticLayerService.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/facade/service/impl/S2SemanticLayerService.java @@ -574,7 +574,7 @@ public class S2SemanticLayerService implements SemanticLayerService { TimeDefaultConfig timeDefaultConfig = dataSetSchema.getTagTypeTimeDefaultConfig(); if (Objects.nonNull(timeDefaultConfig)) { unit = timeDefaultConfig.getUnit(); - String date = LocalDate.now().plusDays(-unit).toString(); + String date = LocalDate.now().minusDays(unit).toString(); dateInfo.setDateMode(DateConf.DateMode.BETWEEN); dateInfo.setStartDate(date); dateInfo.setEndDate(date); diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DownloadServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DownloadServiceImpl.java index 26fde97d0..9dfd0bb6f 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DownloadServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DownloadServiceImpl.java @@ -9,9 +9,9 @@ import com.alibaba.excel.write.metadata.WriteSheet; import com.google.common.collect.Lists; import com.tencent.supersonic.auth.api.authentication.pojo.User; 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.QueryColumn; +import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum; import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum; import com.tencent.supersonic.common.util.DateUtils; import com.tencent.supersonic.headless.api.pojo.DrillDownDimension; @@ -298,9 +298,9 @@ public class DownloadServiceImpl implements DownloadService { } private String getTimeDimension(DateConf dateConf) { - if (Constants.MONTH.equals(dateConf.getPeriod())) { + if (DatePeriodEnum.MONTH.equals(dateConf.getPeriod())) { return TimeDimensionEnum.MONTH.getName(); - } else if (Constants.WEEK.equals(dateConf.getPeriod())) { + } else if (DatePeriodEnum.WEEK.equals(dateConf.getPeriod())) { return TimeDimensionEnum.WEEK.getName(); } else { return TimeDimensionEnum.DAY.getName(); diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/QueryStructUtils.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/QueryStructUtils.java index 30443f465..beae71c57 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/QueryStructUtils.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/QueryStructUtils.java @@ -6,6 +6,7 @@ import com.tencent.supersonic.common.pojo.Aggregator; import com.tencent.supersonic.common.pojo.DateConf; import com.tencent.supersonic.common.pojo.DateConf.DateMode; import com.tencent.supersonic.common.pojo.ItemDateResp; +import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum; import com.tencent.supersonic.common.pojo.enums.TypeEnums; import com.tencent.supersonic.common.util.DateModeUtils; import com.tencent.supersonic.common.util.SqlFilterUtils; @@ -40,10 +41,7 @@ import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; -import static com.tencent.supersonic.common.pojo.Constants.DAY; import static com.tencent.supersonic.common.pojo.Constants.DAY_FORMAT; -import static com.tencent.supersonic.common.pojo.Constants.MONTH; -import static com.tencent.supersonic.common.pojo.Constants.WEEK; @Slf4j @Component @@ -236,7 +234,7 @@ public class QueryStructUtils { Set dateList = new HashSet<>(); String startDate = ""; String endDate = ""; - String period = ""; + DatePeriodEnum period = null; for (FieldExpression f : fieldExpressions) { if (Objects.isNull(f.getFieldName()) || !internalCols.contains(f.getFieldName().toLowerCase())) { @@ -247,7 +245,7 @@ public class QueryStructUtils { continue; } period = dateModeUtils.getPeriodByCol(f.getFieldName().toLowerCase()); - if ("".equals(period)) { + if (period == null) { continue; } if ("=".equals(f.getOperator())) { @@ -263,7 +261,7 @@ public class QueryStructUtils { } } } - if (!"".equals(period)) { + if (period != null) { DateConf dateConf = new DateConf(); dateConf.setPeriod(period); if (!CollectionUtils.isEmpty(dateList)) { diff --git a/launchers/standalone/src/test/java/com/tencent/supersonic/chat/BaseTest.java b/launchers/standalone/src/test/java/com/tencent/supersonic/chat/BaseTest.java index 631702de5..7ba9527f3 100644 --- a/launchers/standalone/src/test/java/com/tencent/supersonic/chat/BaseTest.java +++ b/launchers/standalone/src/test/java/com/tencent/supersonic/chat/BaseTest.java @@ -6,6 +6,7 @@ import com.tencent.supersonic.chat.api.pojo.request.ChatParseReq; import com.tencent.supersonic.chat.api.pojo.response.QueryResult; import com.tencent.supersonic.chat.server.service.AgentService; import com.tencent.supersonic.chat.server.service.ChatQueryService; +import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum; import com.tencent.supersonic.headless.api.pojo.SchemaElement; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; import com.tencent.supersonic.headless.api.pojo.response.ParseResp; @@ -22,9 +23,9 @@ import static org.junit.Assert.assertEquals; public class BaseTest extends BaseApplication { protected final int unit = 7; - protected final String startDay = LocalDate.now().plusDays(-unit).toString(); - protected final String endDay = LocalDate.now().plusDays(-1).toString(); - protected final String period = "DAY"; + protected final String startDay = LocalDate.now().minusDays(unit).toString(); + protected final String endDay = LocalDate.now().toString(); + protected final DatePeriodEnum period = DatePeriodEnum.DAY; @Autowired protected ChatQueryService chatQueryService; @Autowired protected AgentService agentService; diff --git a/launchers/standalone/src/test/java/com/tencent/supersonic/chat/MetricTest.java b/launchers/standalone/src/test/java/com/tencent/supersonic/chat/MetricTest.java index 0689b6726..dfe81272b 100644 --- a/launchers/standalone/src/test/java/com/tencent/supersonic/chat/MetricTest.java +++ b/launchers/standalone/src/test/java/com/tencent/supersonic/chat/MetricTest.java @@ -2,13 +2,13 @@ package com.tencent.supersonic.chat; import com.tencent.supersonic.chat.api.pojo.response.QueryResult; import com.tencent.supersonic.common.pojo.DateConf; +import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum; import com.tencent.supersonic.common.pojo.enums.FilterOperatorEnum; import com.tencent.supersonic.common.pojo.enums.QueryType; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; import com.tencent.supersonic.headless.api.pojo.request.QueryFilter; import com.tencent.supersonic.headless.chat.query.rule.metric.MetricFilterQuery; import com.tencent.supersonic.headless.chat.query.rule.metric.MetricGroupByQuery; -import com.tencent.supersonic.headless.chat.query.rule.metric.MetricModelQuery; import com.tencent.supersonic.headless.chat.query.rule.metric.MetricTopNQuery; import com.tencent.supersonic.util.DataUtils; import org.junit.jupiter.api.Order; @@ -45,25 +45,7 @@ public class MetricTest extends BaseTest { "user_name", FilterOperatorEnum.EQUALS, "alice", "用户", 2L)); expectedParseInfo.setDateInfo( - DataUtils.getDateConf(DateConf.DateMode.RECENT, unit, period, startDay, endDay)); - expectedParseInfo.setQueryType(QueryType.METRIC); - - assertQueryResult(expectedResult, actualResult); - } - - // @Test - public void testMetricDomain() throws Exception { - QueryResult actualResult = submitNewChat("超音数总访问次数", DataUtils.metricAgentId); - - QueryResult expectedResult = new QueryResult(); - SemanticParseInfo expectedParseInfo = new SemanticParseInfo(); - expectedResult.setChatContext(expectedParseInfo); - - expectedResult.setQueryMode(MetricModelQuery.QUERY_MODE); - expectedParseInfo.setAggType(NONE); - expectedParseInfo.getMetrics().add(DataUtils.getSchemaElement("访问次数")); - expectedParseInfo.setDateInfo( - DataUtils.getDateConf(DateConf.DateMode.RECENT, unit, period, startDay, endDay)); + DataUtils.getDateConf(DateConf.DateMode.BETWEEN, unit, period, startDay, endDay)); expectedParseInfo.setQueryType(QueryType.METRIC); assertQueryResult(expectedResult, actualResult); @@ -84,7 +66,8 @@ public class MetricTest extends BaseTest { expectedParseInfo.getDimensions().add(DataUtils.getSchemaElement("部门")); expectedParseInfo.setDateInfo( - DataUtils.getDateConf(DateConf.DateMode.RECENT, unit, period, startDay, endDay)); + DataUtils.getDateConf( + DateConf.DateMode.BETWEEN, 7, DatePeriodEnum.DAY, startDay, endDay)); expectedParseInfo.setQueryType(QueryType.METRIC); assertQueryResult(expectedResult, actualResult); @@ -110,7 +93,7 @@ public class MetricTest extends BaseTest { expectedParseInfo.getDimensionFilters().add(dimensionFilter); expectedParseInfo.setDateInfo( - DataUtils.getDateConf(DateConf.DateMode.RECENT, unit, period, startDay, endDay)); + DataUtils.getDateConf(DateConf.DateMode.BETWEEN, unit, period, startDay, endDay)); expectedParseInfo.setQueryType(QueryType.METRIC); assertQueryResult(expectedResult, actualResult); @@ -131,7 +114,8 @@ public class MetricTest extends BaseTest { expectedParseInfo.getMetrics().add(DataUtils.getSchemaElement("访问次数")); expectedParseInfo.getDimensions().add(DataUtils.getSchemaElement("用户")); - expectedParseInfo.setDateInfo(DataUtils.getDateConf(3, DateConf.DateMode.RECENT, "DAY")); + expectedParseInfo.setDateInfo( + DataUtils.getDateConf(3, DateConf.DateMode.BETWEEN, DatePeriodEnum.DAY)); expectedParseInfo.setQueryType(QueryType.METRIC); assertQueryResult(expectedResult, actualResult); @@ -151,7 +135,7 @@ public class MetricTest extends BaseTest { expectedParseInfo.getDimensions().add(DataUtils.getSchemaElement("部门")); expectedParseInfo.setDateInfo( - DataUtils.getDateConf(DateConf.DateMode.RECENT, unit, period, startDay, endDay)); + DataUtils.getDateConf(DateConf.DateMode.BETWEEN, unit, period, startDay, endDay)); expectedParseInfo.setQueryType(QueryType.METRIC); assertQueryResult(expectedResult, actualResult); diff --git a/launchers/standalone/src/test/java/com/tencent/supersonic/chat/MultiTurnsTest.java b/launchers/standalone/src/test/java/com/tencent/supersonic/chat/MultiTurnsTest.java index 0b96a6e8d..2ceb3af2b 100644 --- a/launchers/standalone/src/test/java/com/tencent/supersonic/chat/MultiTurnsTest.java +++ b/launchers/standalone/src/test/java/com/tencent/supersonic/chat/MultiTurnsTest.java @@ -37,7 +37,7 @@ public class MultiTurnsTest extends BaseTest { "user_name", FilterOperatorEnum.EQUALS, "alice", "用户", 2L)); expectedParseInfo.setDateInfo( - DataUtils.getDateConf(DateConf.DateMode.RECENT, unit, period, startDay, endDay)); + DataUtils.getDateConf(DateConf.DateMode.BETWEEN, unit, period, startDay, endDay)); expectedParseInfo.setQueryType(QueryType.METRIC); assertQueryResult(expectedResult, actualResult); @@ -66,7 +66,7 @@ public class MultiTurnsTest extends BaseTest { "user_name", FilterOperatorEnum.EQUALS, "alice", "用户", 2L)); expectedParseInfo.setDateInfo( - DataUtils.getDateConf(DateConf.DateMode.RECENT, unit, period, startDay, endDay)); + DataUtils.getDateConf(DateConf.DateMode.BETWEEN, unit, period, startDay, endDay)); expectedParseInfo.setQueryType(QueryType.METRIC); assertQueryResult(expectedResult, actualResult); @@ -93,7 +93,7 @@ public class MultiTurnsTest extends BaseTest { .add(DataUtils.getFilter("user_name", FilterOperatorEnum.EQUALS, "lucy", "用户", 2L)); expectedParseInfo.setDateInfo( - DataUtils.getDateConf(DateConf.DateMode.RECENT, unit, period, startDay, endDay)); + DataUtils.getDateConf(DateConf.DateMode.BETWEEN, unit, period, startDay, endDay)); expectedParseInfo.setQueryType(QueryType.METRIC); assertQueryResult(expectedResult, actualResult); diff --git a/launchers/standalone/src/test/java/com/tencent/supersonic/util/DataUtils.java b/launchers/standalone/src/test/java/com/tencent/supersonic/util/DataUtils.java index e4c3aa80c..68b007e4a 100644 --- a/launchers/standalone/src/test/java/com/tencent/supersonic/util/DataUtils.java +++ b/launchers/standalone/src/test/java/com/tencent/supersonic/util/DataUtils.java @@ -1,15 +1,9 @@ package com.tencent.supersonic.util; -import com.alibaba.fastjson.JSONObject; -import com.google.common.collect.Lists; import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.chat.api.pojo.request.ChatParseReq; -import com.tencent.supersonic.chat.server.agent.Agent; -import com.tencent.supersonic.chat.server.agent.AgentConfig; -import com.tencent.supersonic.chat.server.agent.AgentToolType; -import com.tencent.supersonic.chat.server.agent.PluginTool; -import com.tencent.supersonic.chat.server.agent.RuleParserTool; import com.tencent.supersonic.common.pojo.DateConf; +import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum; import com.tencent.supersonic.common.pojo.enums.FilterOperatorEnum; import com.tencent.supersonic.headless.api.pojo.SchemaElement; import com.tencent.supersonic.headless.api.pojo.request.QueryFilter; @@ -51,15 +45,6 @@ public class DataUtils { return chatParseReq; } - public static ChatParseReq getChatParseReqWithAgent(Integer id, String query, Integer agentId) { - ChatParseReq queryReq = new ChatParseReq(); - queryReq.setQueryText(query); - queryReq.setChatId(id); - queryReq.setUser(user_test); - queryReq.setAgentId(agentId); - return queryReq; - } - public static SchemaElement getSchemaElement(String name) { return SchemaElement.builder().name(name).build(); } @@ -79,20 +64,21 @@ public class DataUtils { return filter; } - public static DateConf getDateConf(Integer unit, DateConf.DateMode dateMode, String period) { + public static DateConf getDateConf( + Integer unit, DateConf.DateMode dateMode, DatePeriodEnum period) { DateConf dateInfo = new DateConf(); dateInfo.setUnit(unit); dateInfo.setDateMode(dateMode); dateInfo.setPeriod(period); - dateInfo.setStartDate(now().plusDays(-unit).toString()); - dateInfo.setEndDate(now().plusDays(-1).toString()); + dateInfo.setStartDate(now().minusDays(unit).toString()); + dateInfo.setEndDate(now().toString()); return dateInfo; } public static DateConf getDateConf( DateConf.DateMode dateMode, Integer unit, - String period, + DatePeriodEnum period, String startDate, String endDate) { DateConf dateInfo = new DateConf(); @@ -104,69 +90,6 @@ public class DataUtils { return dateInfo; } - public static DateConf getDateConf( - DateConf.DateMode dateMode, String startDate, String endDate) { - DateConf dateInfo = new DateConf(); - dateInfo.setDateMode(dateMode); - dateInfo.setStartDate(startDate); - dateInfo.setEndDate(endDate); - return dateInfo; - } - - public static DateConf getDateConf( - DateConf.DateMode dateMode, String startDate, String endDate, int unit) { - DateConf dateInfo = new DateConf(); - dateInfo.setDateMode(dateMode); - dateInfo.setStartDate(startDate); - dateInfo.setEndDate(endDate); - dateInfo.setUnit(unit); - return dateInfo; - } - - public static Agent getMetricAgent() { - Agent agent = new Agent(); - agent.setId(1); - agent.setName("查信息"); - agent.setDescription("查信息"); - AgentConfig agentConfig = new AgentConfig(); - agentConfig.getTools().add(getRuleQueryTool()); - agent.setAgentConfig(JSONObject.toJSONString(agentConfig)); - return agent; - } - - public static Agent getTagAgent() { - Agent agent = new Agent(); - agent.setId(2); - agent.setName("标签圈选"); - agent.setDescription("标签圈选"); - AgentConfig agentConfig = new AgentConfig(); - agentConfig.getTools().add(getRuleQueryTool()); - agent.setAgentConfig(JSONObject.toJSONString(agentConfig)); - return agent; - } - - private static RuleParserTool getRuleQueryTool() { - RuleParserTool ruleQueryTool = new RuleParserTool(); - ruleQueryTool.setType(AgentToolType.NL2SQL_RULE); - ruleQueryTool.setDataSetIds(Lists.newArrayList(-1L)); - ruleQueryTool.setQueryModes( - Lists.newArrayList( - "METRIC_ID", - "METRIC_FILTER", - "METRIC_MODEL", - "TAG_DETAIL", - "TAG_LIST_FILTER", - "TAG_ID")); - return ruleQueryTool; - } - - private static PluginTool getPluginTool() { - PluginTool pluginTool = new PluginTool(); - pluginTool.setType(AgentToolType.PLUGIN); - pluginTool.setPlugins(Lists.newArrayList(1L)); - return pluginTool; - } - public static Set getMetricAgentIModelIds() { Set result = new HashSet<>(); result.add(1L);