summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwangwei <[email protected]>2021-08-31 17:54:47 +0800
committerwangwei <[email protected]>2021-08-31 17:54:47 +0800
commit4a6669c45a9c0ede5ad22b5005d1d32353aca631 (patch)
tree340c22e774b34bd8d1e90b6ed293b0ff4dd2cbe0
parente56574ff6734640cc71a9f7aa107dac2e7c43bf9 (diff)
fix(Diagnosis): 修复metadata校验失败bug, 完善代码
-rw-r--r--src/main/java/com/mesalab/common/enums/DiagnosisOptionEnum.java30
-rw-r--r--src/main/java/com/mesalab/qgw/controller/DiagnosisController.java12
-rw-r--r--src/main/java/com/mesalab/qgw/service/impl/DiagnosisServiceImpl.java29
3 files changed, 49 insertions, 22 deletions
diff --git a/src/main/java/com/mesalab/common/enums/DiagnosisOptionEnum.java b/src/main/java/com/mesalab/common/enums/DiagnosisOptionEnum.java
new file mode 100644
index 00000000..eb5c35c9
--- /dev/null
+++ b/src/main/java/com/mesalab/common/enums/DiagnosisOptionEnum.java
@@ -0,0 +1,30 @@
+package com.mesalab.common.enums;
+
+import lombok.Getter;
+
+/**
+ * TODO
+ *
+ * @Classname DiagnosisOptionEnum
+ * @Date 2021/8/31 11:44 上午
+ * @Author wWei
+ */
+@Getter
+public enum DiagnosisOptionEnum {
+
+ /**
+ * 验证SQL测试集,对数据源进行功能诊断
+ */
+ VALIDATION("validation"),
+ /**
+ * 执行SQL测试集,对数据源进行POC测试
+ */
+ EXECUTION("execution");
+
+ private String value;
+
+ DiagnosisOptionEnum(String value) {
+ this.value = value;
+ }
+
+}
diff --git a/src/main/java/com/mesalab/qgw/controller/DiagnosisController.java b/src/main/java/com/mesalab/qgw/controller/DiagnosisController.java
index db7f15e0..8dacd3ca 100644
--- a/src/main/java/com/mesalab/qgw/controller/DiagnosisController.java
+++ b/src/main/java/com/mesalab/qgw/controller/DiagnosisController.java
@@ -2,13 +2,10 @@ package com.mesalab.qgw.controller;
import cn.hutool.http.HttpStatus;
import com.mesalab.common.base.BaseResult;
-import com.mesalab.common.base.BaseResultGenerator;
+import com.mesalab.common.enums.DiagnosisOptionEnum;
import com.mesalab.common.enums.ResultCodeEnum;
import com.mesalab.common.exception.BusinessException;
-import com.mesalab.qgw.model.api.ApiParam;
import com.mesalab.qgw.service.DiagnosisService;
-import com.mesalab.qgw.service.impl.DiagnosisServiceImpl;
-import com.zdjizhi.utils.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
@@ -16,6 +13,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
+import java.util.Arrays;
+
/**
* Galaxy日志自动诊断接口
*/
@@ -39,10 +38,9 @@ public class DiagnosisController {
@RequestMapping(value = "/runSql")
public BaseResult executePocSql(String isSaved, @RequestParam(defaultValue = "validation") String option) throws BusinessException {
- if (!option.equals("validation") && !option.equals("execution")) {
+ if (Arrays.stream(DiagnosisOptionEnum.values()).noneMatch(o -> o.getValue().equalsIgnoreCase(option))) {
throw new BusinessException(HttpStatus.HTTP_BAD_REQUEST, ResultCodeEnum.PARAM_SYNTAX_ERROR.getCode(),
- "The option parameter must be either validation or execution");
-
+ "Param Syntax Error: The option must be either validation or execution");
}
return diagnosisService.runPocSQL(Boolean.parseBoolean(isSaved), option);
}
diff --git a/src/main/java/com/mesalab/qgw/service/impl/DiagnosisServiceImpl.java b/src/main/java/com/mesalab/qgw/service/impl/DiagnosisServiceImpl.java
index 59bd8b4e..b808333b 100644
--- a/src/main/java/com/mesalab/qgw/service/impl/DiagnosisServiceImpl.java
+++ b/src/main/java/com/mesalab/qgw/service/impl/DiagnosisServiceImpl.java
@@ -4,7 +4,9 @@ import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.file.FileReader;
import cn.hutool.core.io.file.FileWriter;
import cn.hutool.core.net.NetUtil;
+import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.URLUtil;
import cn.hutool.log.Log;
import cn.hutool.log.LogFactory;
@@ -225,16 +227,17 @@ public class DiagnosisServiceImpl implements DiagnosisService {
private Map<String, Map<String, String>> executePocSqlByDatasource(Optional<File> file, boolean isSaved, String option) {
Map<String, Map<String, String>> resultMap = Maps.newLinkedHashMap();
Map<String, String> infoMap = Maps.newLinkedHashMap();
- ApiParam apiParam = new ApiParam();
- if (option.equals("validation")) {
- apiParam.setOption(QueryOptionEnum.SYNTAX_VALIDATION.getValue());
- } else if (option.equals("execution")) {
- apiParam.setOption(QueryOptionEnum.REAL_TIME.getValue());
+ Map<String, Object> paramMap = Maps.newHashMap();
+ if (DiagnosisOptionEnum.VALIDATION.getValue().equalsIgnoreCase(option)) {
+ paramMap.put("option", QueryOptionEnum.SYNTAX_VALIDATION.getValue());
+ } else if (DiagnosisOptionEnum.EXECUTION.getValue().equalsIgnoreCase(option)) {
+ paramMap.put("option", QueryOptionEnum.REAL_TIME.getValue());
}
- List<String> rawLines = new FileReader(file.get()).readLines();
+ paramMap.put("format", QueryFormatEnum.CSV.getValue());
FileWriter writer = null;
int index = 0;
if (file.isPresent() && file.get().isFile()) {
+ List<String> rawLines = new FileReader(file.get()).readLines();
if (isSaved) {
writer = new FileWriter(file.get().getAbsolutePath() + "." + IdUtil.simpleUUID() + ".dat");
}
@@ -243,8 +246,8 @@ public class DiagnosisServiceImpl implements DiagnosisService {
if (Strings.isNullOrEmpty(line)) {
continue;
}
- Map<String, String> queryResult = executeQuery(line, apiParam);
- int statusCode = Integer.valueOf(queryResult.get("status").trim());
+ Map<String, String> queryResult = executeQuery(line, paramMap);
+ int statusCode = Integer.parseInt(queryResult.get("status").trim());
if (statusCode == HttpStatus.SC_OK) {
if (writer != null) {
@@ -346,21 +349,17 @@ public class DiagnosisServiceImpl implements DiagnosisService {
}
- private Map<String, String> executeQuery(String sql, ApiParam apiParam) {
+ private Map<String, String> executeQuery(String sql, Map<String, Object> urlParam) {
Map<String, String> resultMap = Maps.newHashMap();
try {
if (serverPort == 0) {
serverPort = DEFAULT_SERVER_PORT;
}
- String optionDiaWay = apiParam.getOption();
- if (StringUtil.isBlank(apiParam.getFormat())) {
- apiParam.setFormat(QueryFormatEnum.JSON.getValue());
- }
- String format = apiParam.getFormat();
+ String param = URLUtil.buildQuery(urlParam, CharsetUtil.CHARSET_UTF_8);
sql = URLEncoder.encode(sql, "utf-8").replaceAll("\\+", "%20");
String queryURL = URLUtil.normalize(localHostAddress + ":" + serverPort + "/?query=");
int socketTimeOut = httpConfig.getServerResponseTimeOut();
- resultMap = httpClientService.httpGet(queryURL + sql + "&option=" + optionDiaWay + "&format=" + format, socketTimeOut);
+ resultMap = httpClientService.httpGet(queryURL + sql + (StrUtil.isBlank(param) ? "" : "&" + param), socketTimeOut);
} catch (UnsupportedEncodingException e) {
log.error("Unsupported Encoding error: ", e);
}