diff options
| author | wangwei <[email protected]> | 2021-08-31 17:54:47 +0800 |
|---|---|---|
| committer | wangwei <[email protected]> | 2021-08-31 17:54:47 +0800 |
| commit | 4a6669c45a9c0ede5ad22b5005d1d32353aca631 (patch) | |
| tree | 340c22e774b34bd8d1e90b6ed293b0ff4dd2cbe0 | |
| parent | e56574ff6734640cc71a9f7aa107dac2e7c43bf9 (diff) | |
fix(Diagnosis): 修复metadata校验失败bug, 完善代码
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); } |
