diff options
| author | LAPTOP-CUUVN8AS\wk <[email protected]> | 2021-03-23 09:39:46 +0800 |
|---|---|---|
| committer | LAPTOP-CUUVN8AS\wk <[email protected]> | 2021-03-23 09:39:46 +0800 |
| commit | 4d906338aee93da3121558c15ef8990c538bdcbd (patch) | |
| tree | 0e4e1d78784b718564e3a8731660539ba46e6dbb /src | |
| parent | 1421e9d5a7ea607c6d126b201b77c1c754b02504 (diff) | |
md5加密以及MD5不变
Diffstat (limited to 'src')
19 files changed, 84 insertions, 1315 deletions
diff --git a/src/main/java/com/mesa/reportservice/configuration/ClickhouseConfig.java b/src/main/java/com/mesa/reportservice/configuration/ClickhouseConfig.java index 43491dc..e1bbe6d 100644 --- a/src/main/java/com/mesa/reportservice/configuration/ClickhouseConfig.java +++ b/src/main/java/com/mesa/reportservice/configuration/ClickhouseConfig.java @@ -1,6 +1,5 @@ package com.mesa.reportservice.configuration; -import com.mesa.reportservice.util.Logs; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/mesa/reportservice/configuration/HbaseConfig.java b/src/main/java/com/mesa/reportservice/configuration/HbaseConfig.java index 2288bd4..fcf6df2 100644 --- a/src/main/java/com/mesa/reportservice/configuration/HbaseConfig.java +++ b/src/main/java/com/mesa/reportservice/configuration/HbaseConfig.java @@ -5,6 +5,8 @@ import com.mesa.reportservice.util.StringUtil; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; +import java.net.URL; + /** * Created by wk1 on 2019/5/27. */ @@ -23,24 +25,6 @@ public class HbaseConfig { private static String colume_exception; private static String colume_sql; - public static String getHbaseJson(String hbaseid, String responsebody, JobEntity job) { - - String hbasejson = ""; - if (job.getStatus() == 2) { - hbasejson = "{\"Row\":[{\"key\":\"" + StringUtil.getBase64(hbaseid) + "\", \"Cell\": [{\"column\":\"" + StringUtil.getBase64(columefamily.trim()) + "\",\"$\":\"" + StringUtil.getBase64(responsebody.trim()) + "\"},{\"column\":\"" + StringUtil.getBase64(colume_job_id.trim()) + "\", \"$\":\"" + StringUtil.getBase64(String.valueOf(job.getResultId())) + "\"},{\"column\":\"" + StringUtil.getBase64(colume_query_id.trim()) + "\", \"$\":\"" + StringUtil.getBase64(job.getQuery_id().trim()) + "\"},{\"column\":\"" + StringUtil.getBase64(colume_query_duration_ms.trim()) + "\", \"$\":\"" + StringUtil.getBase64(job.getQuery_duration_ms().trim()) + "\"},{\"column\":\"" + StringUtil.getBase64(colume_read_rows.trim()) + "\", \"$\":\"" + StringUtil.getBase64(String.valueOf(job.getResultRows())) + "\"},{\"column\":\"" + StringUtil.getBase64(colume_memory_usage.trim()) + "\", \"$\":\"" + StringUtil.getBase64(job.getMemory_usage().trim()) + "\"}]}]}"; - } else { - hbasejson = "{\"Row\":[{\"key\":\"" + StringUtil.getBase64(hbaseid) + "\", \"Cell\": [{\"column\":\"" + StringUtil.getBase64(columefamily.trim()) + "\",\"$\":\"" + StringUtil.getBase64(responsebody.trim()) + "\"},{\"column\":\"" + StringUtil.getBase64(colume_sql.trim()) + "\", \"$\":\"" + StringUtil.getBase64(String.valueOf(job.getQuerySql())) + "\"},{\"column\":\"" + StringUtil.getBase64(colume_exception.trim()) + "\", \"$\":\"" + StringUtil.getBase64(job.getExcuteDetail().trim()) + "\"}]}]}"; - - } - return hbasejson; - } - - public static String getHbasePostUrl() { - - String hbaseurl = "http://" + url + "/" + table + "/rssss"; - - return hbaseurl; - } public void setColumefamily(String columefamily) { HbaseConfig.columefamily = columefamily; diff --git a/src/main/java/com/mesa/reportservice/configuration/HbaseFactory.java b/src/main/java/com/mesa/reportservice/configuration/HbaseFactory.java index 9e4ef1c..3a63bdc 100644 --- a/src/main/java/com/mesa/reportservice/configuration/HbaseFactory.java +++ b/src/main/java/com/mesa/reportservice/configuration/HbaseFactory.java @@ -1,5 +1,6 @@ package com.mesa.reportservice.configuration; +import cn.hutool.log.Log; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.client.*; import org.springframework.beans.factory.annotation.Autowired; @@ -20,7 +21,7 @@ import java.util.concurrent.Executors; public class HbaseFactory { private final HbaseProperties hbproperties; - private final org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(this.getClass()); + Log logger = Log.get(); @Autowired public HbaseFactory(HbaseProperties hbproperties) { diff --git a/src/main/java/com/mesa/reportservice/configuration/HttpClientPool.java b/src/main/java/com/mesa/reportservice/configuration/HttpClientPool.java index 28d408b..9188db7 100644 --- a/src/main/java/com/mesa/reportservice/configuration/HttpClientPool.java +++ b/src/main/java/com/mesa/reportservice/configuration/HttpClientPool.java @@ -1,6 +1,5 @@ package com.mesa.reportservice.configuration; -import com.mesa.reportservice.util.Logs; import org.apache.http.client.config.RequestConfig; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; @@ -139,7 +138,6 @@ public class HttpClientPool { */ @Bean(name = "RequestLongConfig") public RequestConfig getRequestConfig(@Qualifier("builder") RequestConfig.Builder builder) { - Logs.debug("httpclient success"); return builder.build(); } @@ -152,7 +150,6 @@ public class HttpClientPool { */ @Bean(name = "RequestShortConfig") public RequestConfig getRequestShortConfig(@Qualifier("builderShort") RequestConfig.Builder builder) { - Logs.debug("httpclientshort success"); return builder.build(); } diff --git a/src/main/java/com/mesa/reportservice/configuration/ZkConfig.java b/src/main/java/com/mesa/reportservice/configuration/ZkConfig.java index 4bedaf1..ed09cfa 100644 --- a/src/main/java/com/mesa/reportservice/configuration/ZkConfig.java +++ b/src/main/java/com/mesa/reportservice/configuration/ZkConfig.java @@ -1,6 +1,6 @@ package com.mesa.reportservice.configuration; -import com.mesa.reportservice.util.Logs; +import cn.hutool.log.Log; import org.apache.curator.RetryPolicy; import org.apache.curator.framework.CuratorFramework; import org.apache.curator.framework.CuratorFrameworkFactory; @@ -19,6 +19,7 @@ import org.springframework.context.annotation.Configuration; public class ZkConfig { private final ZkProperties zkproperties; + Log logger = Log.get(); @Autowired public ZkConfig(ZkProperties zkproperties) { @@ -41,7 +42,7 @@ public class ZkConfig { if (zkproperties.getOpen() == 0) { client.start(); } else { - Logs.info("repoertservice start local"); + logger.info("repoertservice start local"); } return client; diff --git a/src/main/java/com/mesa/reportservice/controller/MonitorController.java b/src/main/java/com/mesa/reportservice/controller/MonitorController.java index 91ccabd..73ecc0f 100644 --- a/src/main/java/com/mesa/reportservice/controller/MonitorController.java +++ b/src/main/java/com/mesa/reportservice/controller/MonitorController.java @@ -1,5 +1,6 @@ package com.mesa.reportservice.controller; +import cn.hutool.log.Log; import com.alibaba.fastjson.JSONArray; import com.mesa.reportservice.bean.MonitorEntity; import com.mesa.reportservice.configuration.GlobelConfig; @@ -19,11 +20,11 @@ import java.util.Map; @Component public class MonitorController { - private final org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(this.getClass()); @Autowired private MysqlService mysqlService; @Autowired private ZkService zs; + Log logger = Log.get(); @GetMapping(value = "/monitor") diff --git a/src/main/java/com/mesa/reportservice/controller/ScheduledResultController.java b/src/main/java/com/mesa/reportservice/controller/ScheduledResultController.java index 7012dac..041a0bd 100644 --- a/src/main/java/com/mesa/reportservice/controller/ScheduledResultController.java +++ b/src/main/java/com/mesa/reportservice/controller/ScheduledResultController.java @@ -1,5 +1,6 @@ package com.mesa.reportservice.controller; +import cn.hutool.log.Log; import com.mesa.reportservice.bean.JobEntity; import com.mesa.reportservice.configuration.GlobelConfig; import com.mesa.reportservice.configuration.HttpClientPool; @@ -23,7 +24,7 @@ import java.util.concurrent.Executors; @EnableScheduling public class ScheduledResultController { - private final org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(this.getClass()); + Log logger = Log.get(); protected static ExecutorService pool = Executors.newFixedThreadPool(30); @Autowired @@ -102,9 +103,6 @@ public class ScheduledResultController { sql = sql.replace("$start_time", "toDateTime('" + job.getStartTime().trim() + "')"); sql = sql.replace("$end_time", "toDateTime('" + job.getEndTime().trim() + "')"); job.setQuerySql(sql); - String queryid = cs.getQueryId(job.getResultId().toString(),sql); - job.setQuery_id(queryid); - job.setQuerySql(sql); job.setStatus(1); job.setExcute_status(1); job.setExcuteDetail("EXECUTING"); @@ -112,20 +110,39 @@ public class ScheduledResultController { job.setExcuteTime(0); job.setExcuteProcess(0); job.setResultRows(0); - if(ms.updateProcesses(job)!=0){ - GlobelConfig.mapresult.put(queryid, job); - pool.execute(new Runnable() { - @Override - public void run() { - es.excuteCkTask(job); - } - }); - }else{ - logger.error("更新数据库状态失败"); - + String queryid=""; + try { + queryid = cs.getQueryId(job.getResultId().toString(), sql); + } + catch (Exception e){ + job.setExcute_status(0); + job.setStatus(7); + job.setExcuteDetail("Unknow Error"); } + job.setQuery_id(queryid); + + if(job.getStatus()==1){ + if(ms.updateProcesses(job)!=0){ + GlobelConfig.mapresult.put(queryid, job); + pool.execute(new Runnable() { + @Override + public void run() { + es.excuteCkTask(job); + } + }); + }else{ + logger.error("更新数据库状态失败"); + } + } + else{ + if(ms.updateProcesses(job)!=0){ + logger.error("任务不能执行"); + }else{ + logger.error("更新数据库状态失败"); + } + } } } else { logger.info("无待执行任务"); diff --git a/src/main/java/com/mesa/reportservice/service/impl/ClickhouseServiceImpl.java b/src/main/java/com/mesa/reportservice/service/impl/ClickhouseServiceImpl.java index 742e352..344e75f 100644 --- a/src/main/java/com/mesa/reportservice/service/impl/ClickhouseServiceImpl.java +++ b/src/main/java/com/mesa/reportservice/service/impl/ClickhouseServiceImpl.java @@ -1,11 +1,12 @@ package com.mesa.reportservice.service.impl; +import cn.hutool.core.util.URLUtil; +import cn.hutool.log.Log; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.mesa.reportservice.bean.HttpResult; import com.mesa.reportservice.configuration.ClickhouseConfig; import com.mesa.reportservice.service.ClickhouseService; -import com.mesa.reportservice.util.Logs; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpDelete; @@ -44,14 +45,14 @@ public class ClickhouseServiceImpl implements ClickhouseService { @Autowired @Qualifier("RequestLongConfig") private RequestConfig RequestLongConfig; - private final org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(this.getClass()); + Log logger = Log.get(); @Override public String getQueryId(String resultId, String query) throws Exception { - String url = "http://" + clickhouseConfig.getGateway_ip().trim() + "/sys/engine/queryIds?resultId=" + resultId + "&query="; + String url = URLUtil.normalize(clickhouseConfig.getGateway_ip().trim() + "/sys/engine/queryIds?resultId=" + resultId + "&query="); String sql = URLEncoder.encode(query, "utf8").replaceAll("\\+", "%20"); url = url+sql; HttpGet httpGet = new HttpGet(url); @@ -70,7 +71,7 @@ public class ClickhouseServiceImpl implements ClickhouseService { } }catch (Exception e){ - logger.error(e.toString()); + logger.error("获取queryid失败"+e.toString()); throw new Exception(); } } @@ -85,7 +86,7 @@ public class ClickhouseServiceImpl implements ClickhouseService { public HttpResult queryForExcute(String resultId, String query) throws Exception,OutOfMemoryError{ // 声明httpPost请求 - String url = "http://" + clickhouseConfig.getGateway_ip().trim() + "/?option=long-term&resultId=" + resultId + "&query="; + String url = URLUtil.normalize(clickhouseConfig.getGateway_ip().trim() + "/?option=long-term&resultId=" + resultId + "&query="); query = URLEncoder.encode(query , "utf8").replaceAll("\\+", "%20"); String jobsql = url + query; HttpGet httpGet = new HttpGet(jobsql); @@ -111,7 +112,7 @@ public class ClickhouseServiceImpl implements ClickhouseService { @Override public HttpResult queryForProcess(String queryId) throws Exception { // 声明httpPost请求 - String url = "http://" + clickhouseConfig.getGateway_ip().trim() + "/sys/engine/processes/"+queryId; + String url = URLUtil.normalize( clickhouseConfig.getGateway_ip().trim() + "/sys/engine/processes/"+queryId); HttpGet httpGet = new HttpGet(url); // 加入配置信息 @@ -137,7 +138,7 @@ public class ClickhouseServiceImpl implements ClickhouseService { @Override public HttpResult queryForCancel(String queryId) throws Exception { - String url = "http://" + clickhouseConfig.getGateway_ip().trim() + "/sys/engine/tasks/"+queryId; + String url = URLUtil.normalize(clickhouseConfig.getGateway_ip().trim() + "/sys/engine/tasks/"+queryId); // 声明httpPost请求 HttpDelete HttpDelete = new HttpDelete(url); // 加入配置信息 diff --git a/src/main/java/com/mesa/reportservice/service/impl/ExcuteProcessServiceImpl.java b/src/main/java/com/mesa/reportservice/service/impl/ExcuteProcessServiceImpl.java index cee4af7..604dd20 100644 --- a/src/main/java/com/mesa/reportservice/service/impl/ExcuteProcessServiceImpl.java +++ b/src/main/java/com/mesa/reportservice/service/impl/ExcuteProcessServiceImpl.java @@ -1,5 +1,6 @@ package com.mesa.reportservice.service.impl; +import cn.hutool.log.Log; import com.alibaba.fastjson.JSON; import com.mesa.reportservice.bean.HttpResult; import com.mesa.reportservice.bean.JobEntity; @@ -18,7 +19,7 @@ import java.util.Map; @Service public class ExcuteProcessServiceImpl implements ExcuteProcessService { - private final org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(this.getClass()); + Log logger = Log.get(); @Autowired diff --git a/src/main/java/com/mesa/reportservice/service/impl/ExcuteserviceImpl.java b/src/main/java/com/mesa/reportservice/service/impl/ExcuteserviceImpl.java index 314320f..aa50055 100644 --- a/src/main/java/com/mesa/reportservice/service/impl/ExcuteserviceImpl.java +++ b/src/main/java/com/mesa/reportservice/service/impl/ExcuteserviceImpl.java @@ -1,5 +1,6 @@ package com.mesa.reportservice.service.impl; +import cn.hutool.log.Log; import com.alibaba.fastjson.JSON; import com.mesa.reportservice.bean.HttpResult; import com.mesa.reportservice.bean.JobEntity; @@ -23,7 +24,7 @@ import java.util.Map; */ @Service public class ExcuteserviceImpl implements ExcuteService { - private final org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(this.getClass()); + Log logger = Log.get(); @Autowired diff --git a/src/main/java/com/mesa/reportservice/service/impl/HbaseServiceImpl.java b/src/main/java/com/mesa/reportservice/service/impl/HbaseServiceImpl.java index 88369d6..708522f 100644 --- a/src/main/java/com/mesa/reportservice/service/impl/HbaseServiceImpl.java +++ b/src/main/java/com/mesa/reportservice/service/impl/HbaseServiceImpl.java @@ -1,10 +1,10 @@ package com.mesa.reportservice.service.impl; +import cn.hutool.log.Log; import com.mesa.reportservice.bean.HttpResult; import com.mesa.reportservice.bean.JobEntity; import com.mesa.reportservice.configuration.HbaseProperties; import com.mesa.reportservice.service.HbaseService; -import com.mesa.reportservice.util.Logs; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.*; import org.apache.hadoop.hbase.util.Bytes; @@ -24,6 +24,22 @@ public class HbaseServiceImpl implements HbaseService { @Autowired private HbaseProperties hbproperties; + Log logger = Log.get(); + + + private String getRowKey(String query_id){ + + String rowKey = query_id; + try { + String[] queryIdArray = query_id.split(":"); + rowKey=queryIdArray[1]; + } + catch (Exception e){ + logger.error(e.toString()); + } + return rowKey; + + } @Override public Boolean put(JobEntity jobEntity) throws Exception { @@ -31,7 +47,7 @@ public class HbaseServiceImpl implements HbaseService { Boolean status = false; try(Table table =hbaseConnection.getTable(TableName.valueOf(hbproperties.getTable()))) { - Put put = new Put(Bytes.toBytes(jobEntity.getQuery_id())); + Put put = new Put(Bytes.toBytes(getRowKey(jobEntity.getQuery_id()))); put.addColumn(Bytes.toBytes("response"), Bytes.toBytes("result"), Bytes.toBytes(jobEntity.getResult())); put.addColumn(Bytes.toBytes("detail"), Bytes.toBytes("result_id"), Bytes.toBytes(jobEntity.getResultId())); @@ -50,9 +66,11 @@ public class HbaseServiceImpl implements HbaseService { table.put(put); status =true; }catch(Exception e) { - Logs.error(e.toString()); + logger.error(e.toString()); } return status; - } +} + + } diff --git a/src/main/java/com/mesa/reportservice/service/impl/MonitorServiceImpl.java b/src/main/java/com/mesa/reportservice/service/impl/MonitorServiceImpl.java index 2ab4170..a36433e 100644 --- a/src/main/java/com/mesa/reportservice/service/impl/MonitorServiceImpl.java +++ b/src/main/java/com/mesa/reportservice/service/impl/MonitorServiceImpl.java @@ -1,10 +1,10 @@ package com.mesa.reportservice.service.impl; +import cn.hutool.log.Log; import com.mesa.reportservice.configuration.GlobelConfig; import com.mesa.reportservice.configuration.ZkProperties; import com.mesa.reportservice.service.MonitorService; import com.mesa.reportservice.service.ZkService; -import com.mesa.reportservice.util.Logs; import io.micrometer.core.instrument.*; import org.apache.commons.collections.map.HashedMap; import org.apache.curator.framework.CuratorFramework; @@ -26,7 +26,7 @@ import java.util.Map; @Service public class MonitorServiceImpl implements MonitorService { - private final org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(this.getClass()); + Log logger = Log.get(); @Autowired MeterRegistry registry; diff --git a/src/main/java/com/mesa/reportservice/service/impl/MysqlServiceImpl.java b/src/main/java/com/mesa/reportservice/service/impl/MysqlServiceImpl.java index 534a90e..fdc5cc7 100644 --- a/src/main/java/com/mesa/reportservice/service/impl/MysqlServiceImpl.java +++ b/src/main/java/com/mesa/reportservice/service/impl/MysqlServiceImpl.java @@ -1,10 +1,10 @@ package com.mesa.reportservice.service.impl; +import cn.hutool.log.Log; import com.mesa.reportservice.bean.JobEntity; import com.mesa.reportservice.mapper.ReportResultMapper; import com.mesa.reportservice.service.MysqlService; import com.mesa.reportservice.util.DateUtil; -import com.mesa.reportservice.util.Logs; import com.mesa.reportservice.util.StringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -20,7 +20,7 @@ import java.util.Map; */ @Service public class MysqlServiceImpl implements MysqlService { - private final org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(this.getClass()); + Log logger = Log.get(); @Autowired public ReportResultMapper rrm; diff --git a/src/main/java/com/mesa/reportservice/service/impl/ZkServiceImpl.java b/src/main/java/com/mesa/reportservice/service/impl/ZkServiceImpl.java index dc40104..1136087 100644 --- a/src/main/java/com/mesa/reportservice/service/impl/ZkServiceImpl.java +++ b/src/main/java/com/mesa/reportservice/service/impl/ZkServiceImpl.java @@ -1,9 +1,9 @@ package com.mesa.reportservice.service.impl; +import cn.hutool.log.Log; import com.mesa.reportservice.configuration.GlobelConfig; import com.mesa.reportservice.configuration.ZkProperties; import com.mesa.reportservice.service.ZkService; -import com.mesa.reportservice.util.Logs; import org.apache.curator.framework.CuratorFramework; import org.apache.curator.framework.api.ExistsBuilder; import org.apache.zookeeper.CreateMode; @@ -22,6 +22,7 @@ public class ZkServiceImpl implements ZkService { private CuratorFramework curatorConnect; @Autowired private ZkProperties zp; + Log logger = Log.get(); @Override @@ -55,7 +56,7 @@ public class ZkServiceImpl implements ZkService { return true; } else { - Logs.debug("不是主节点"); + logger.debug("不是主节点"); return false; } } @@ -63,7 +64,7 @@ public class ZkServiceImpl implements ZkService { return true; } } catch (Exception e) { - Logs.error(e.toString()); + logger.error(e.toString()); return true; } } diff --git a/src/main/java/com/mesa/reportservice/util/Logs.java b/src/main/java/com/mesa/reportservice/util/Logs.java deleted file mode 100644 index 3c471da..0000000 --- a/src/main/java/com/mesa/reportservice/util/Logs.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.mesa.reportservice.util; - -/** - * Created by wk1 on 2019/5/23. - */ - -import org.apache.log4j.Logger; - -public class Logs { - private static Logger logger = Logger.getLogger(Logs.class); - - //debug方法,其他error、warn类似定义 - public static void debug(Object obj) { - //如果更改日志出工工具,只需修改该行代码即可。如:可改为 System.out.println(obj); - logger.debug(obj); - } - - public static void error(Object obj) { - //如果更改日志出工工具,只需修改该行代码即可。如:可改为 System.out.println(obj); - logger.error(obj); - } - - public static void info(Object obj) { - //如果更改日志出工工具,只需修改该行代码即可。如:可改为 System.out.println(obj); - logger.info(obj); - } -} diff --git a/src/main/java/com/mesa/reportservice/util/SQLDateFunctionUtil.java b/src/main/java/com/mesa/reportservice/util/SQLDateFunctionUtil.java deleted file mode 100644 index 202d6f8..0000000 --- a/src/main/java/com/mesa/reportservice/util/SQLDateFunctionUtil.java +++ /dev/null @@ -1,1012 +0,0 @@ -package com.mesa.reportservice.util; - -import com.mesa.reportservice.bean.DBTypeEnum; - -import java.util.ArrayList; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * @author GouGe - * @data 2019/8/1 10:13 - */ -public class SQLDateFunctionUtil { - public static Pattern pDateFormat = Pattern.compile("\\W(FROM_UNIXTIME|DATE_FORMAT|STR_TO_DATE)\\s*\\(", Pattern.CASE_INSENSITIVE); - public static Pattern pGroupByFormat = Pattern.compile("(SELECT\\s+|GROUP\\s*BY\\s+|,\\s*)(FROM_UNIXTIME|DATE_FORMAT|STR_TO_DATE)\\s*\\(", Pattern.CASE_INSENSITIVE); - public static Pattern pDateRelative = Pattern.compile("\\W(ADDDATE|DATE_ADD|DATE_SUB|SUBDATE)\\s*\\(", Pattern.CASE_INSENSITIVE); - public static Pattern pIntervalNumUnit = Pattern.compile("INTERVAL(.*?)(YEAR|QUARTER|MONTH|WEEK|DAY|HOUR|MINUTE|SECOND)$", Pattern.CASE_INSENSITIVE); - public static Pattern pUnixTime = Pattern.compile("\\WUNIX_TIMESTAMP\\s*\\(", Pattern.CASE_INSENSITIVE); - public static Pattern pDate = Pattern.compile("\\W(DATE)\\s*\\(", Pattern.CASE_INSENSITIVE); - public static Pattern pDateCalculateNum = Pattern.compile("\\(\\s*(DATE)\\s*\\(", Pattern.CASE_INSENSITIVE); - public static Pattern pUnitFuncGetNum = Pattern.compile("\\W(YEAR|QUARTER|MONTH|DAY|HOUR|MINUTE|SECOND|DAYOFYEAR|DAYOFMONTH|DAYOFWEEK)\\s*\\(", Pattern.CASE_INSENSITIVE); - public static Pattern pMarkDate = Pattern.compile("\\W(MAKEDATE)\\s*\\(", Pattern.CASE_INSENSITIVE); - public static Pattern pLastDateFunc = Pattern.compile("\\W(LAST_DAY)\\s*\\(", Pattern.CASE_INSENSITIVE); - public static Pattern pCKTimeStamp = Pattern.compile("\\s+TIMESTAMP\\s+([^'])", Pattern.CASE_INSENSITIVE); - public static Pattern pNow = Pattern.compile("NOW\\(\\s*\\)", Pattern.CASE_INSENSITIVE); - public static Pattern pStrDateTime = Pattern.compile("(<|>|=|between|and)\\s*('\\d{4}-\\d{2}-\\d{2}\\s*\\d{2}:\\d{2}:\\d{2}')", Pattern.CASE_INSENSITIVE); - - - /** - * 解析mysql函数替换为对应数据库类型函数 - * - * @param sql 要解析的sql - * @param dbType 数据库类型 - * @return - */ - public static String generateDateFunction(String sql, String dbType) { - sql = SQLDateFunctionUtil.parseMarkDate(sql, dbType); - sql = SQLDateFunctionUtil.parseDateCalculateNum(sql, dbType); - sql = SQLDateFunctionUtil.parseLastDayFunc(sql, dbType); - sql = SQLDateFunctionUtil.parseGroupByFormat(sql, dbType); - sql = SQLDateFunctionUtil.parseDateFormat(sql, dbType); - sql = SQLDateFunctionUtil.parseDateRelative(sql, dbType); - sql = SQLDateFunctionUtil.parseUnixTime(sql, dbType); - sql = SQLDateFunctionUtil.parseDate(sql, dbType); - sql = SQLDateFunctionUtil.parseUnitFuncGetNum(sql, dbType); - sql = SQLDateFunctionUtil.specialDisposeEnd(sql, dbType); - sql = SQLDateFunctionUtil.replaceMark(sql); - return sql; - } - - - /** - * 匹配范围:FROM_UNIXTIME(、DATE_FORMAT(、STR_TO_DATE( - * - * @param sql 需要解析的sql - * @param dbType - * @return - */ - public static String parseDateFormat(String sql, String dbType) { - int count = 0; - while (true) { - Matcher matcher = pDateFormat.matcher(sql); - if (!matcher.find() || count++ >= 40) { - return sql; - } - int start = matcher.start() + 1; - String sqlParse = sql.substring(start); - int[] bracketsMatch = StringUtil.getBracketsMatch(sqlParse, "(", false); - if (bracketsMatch[0] >= 1) { - --bracketsMatch[0]; - } - String str = dateFormatHavaMark(sqlParse, bracketsMatch[0], false, dbType); - sql = sql.substring(0, start) + str; - } - } - - /** - * 匹配格式化 FROM_UNIXTIME(、DATE_FORMAT(、STR_TO_DATE( - * - * @param sql - * @param dbType - * @return - */ - public static String parseGroupByFormat(String sql, String dbType) { - int count = 0; - while (true) { - Matcher matcher = pGroupByFormat.matcher(sql); - if (!matcher.find() || count++ >= 30) { - return sql; - } - int start = matcher.start(); - String sqlParse = sql.substring(start); - int[] bracketsMatch = StringUtil.getBracketsMatch(sqlParse, "(", false); - if (bracketsMatch[0] >= 1) { - --bracketsMatch[0]; - } - String str = dateFormatHavaMark(sqlParse, bracketsMatch[0], true, dbType); - sql = sql.substring(0, start) + str; - } - } - - /** - * 匹配 SUBDATE(、SUBDATE(、SUBDATE(、ADDDATE(、DATE_SUB(、DATE_ADD( - * - * @param sql - * @param dbType - * @return - */ - public static String parseDateRelative(String sql, String dbType) { - int count = 0; - while (true) { - Matcher matcher = pDateRelative.matcher(sql); - if (!matcher.find() || count++ >= 30) { - return sql; - } - int start = matcher.start() + 1; - String sqlParse = sql.substring(start); - int[] bracketsMatch = StringUtil.getBracketsMatch(sqlParse, null, false); - if (bracketsMatch[0] >= 1) { - --bracketsMatch[0]; - } - String str = dateRelativeHaveMark(sqlParse, bracketsMatch[0], dbType); - sql = sql.substring(0, start) + str; - } - } - - /** - * 匹配 UNIX_TIMESTAMP( - * - * @param sql - * @param dbType - * @return - */ - public static String parseUnixTime(String sql, String dbType) { - int count = 0; - while (true) { - Matcher matcher = pUnixTime.matcher(sql); - if (!matcher.find() || count++ == 30) { - return sql; - } - int start = matcher.start() + 1; - String sqlParse = sql.substring(start); - int[] bracketsMatch = StringUtil.getBracketsMatch(sqlParse, null, false); - if (bracketsMatch[0] >= 1) { - --bracketsMatch[0]; - } - String str = parseUnixTimeHavaMark(sqlParse, bracketsMatch[0], dbType); - sql = sql.substring(0, start) + str; - } - } - - /** - * 匹配 DATE( - * - * @param sql - * @param dbType - * @return - */ - public static String parseDate(String sql, String dbType) { - int count = 0; - while (true) { - Matcher matcher = pDate.matcher(sql); - if (!matcher.find() || count++ >= 30) { - return sql; - } - int start = matcher.start() + 1; - String sqlParse = sql.substring(start); - int[] bracketsMatch = StringUtil.getBracketsMatch(sqlParse, "(", false); - if (bracketsMatch[0] >= 1) { - --bracketsMatch[0]; - } - String str = parseDateHavaMark(sqlParse, bracketsMatch[0], dbType); - sql = sql.substring(0, start) + str; - } - } - - /** - * 匹配 YEAR(、QUARTER(、MONTH(、DAY(、HOUR(、MINUTE(、SECOND、DAYOFYEAR(、DAYOFMONTH(、DAYOFWEEK( - * - * @param sql - * @param dbType - * @return - */ - public static String parseUnitFuncGetNum(String sql, String dbType) { - int count = 0; - while (true) { - Matcher matcher = pUnitFuncGetNum.matcher(sql); - if (!matcher.find() || count++ >= 30) { - return sql; - } - int start = matcher.start() + 1; - String sqlParse = sql.substring(start); - int[] bracketsMatch = StringUtil.getBracketsMatch(sqlParse, "(", false); - if (bracketsMatch[0] >= 1) { - --bracketsMatch[0]; - } - String str = parseUnitFuncGetNumHaveMark(sqlParse, bracketsMatch[0], dbType); - sql = sql.substring(0, start) + str; - } - } - - /** - * 匹配 pMarkDate( - * - * @param sql - * @param dbType - * @return - */ - public static String parseMarkDate(String sql, String dbType) { - int count = 0; - while (true) { - Matcher matcher = pMarkDate.matcher(sql); - if (!matcher.find() || count++ >= 30) { - return sql; - } - int start = matcher.start() + 1; - String sqlParse = sql.substring(start); - int[] bracketsMatch = StringUtil.getBracketsMatch(sqlParse, "(", false); - if (bracketsMatch[0] >= 1) { - --bracketsMatch[0]; - } - String str = parseMarkDateHaveMark(sqlParse, bracketsMatch[0], dbType); - sql = sql.substring(0, start) + str; - } - } - - /** - * 匹配 LAST_DAY( - * - * @param sql - * @param dbType - * @return - */ - public static String parseLastDayFunc(String sql, String dbType) { - int count = 0; - while (true) { - Matcher matcher = pLastDateFunc.matcher(sql); - if (!matcher.find() || count++ >= 30) { - return sql; - } - int start = matcher.start() + 1; - String sqlParse = sql.substring(start); - int[] bracketsMatch = StringUtil.getBracketsMatch(sqlParse, "(", false); - if (bracketsMatch[0] >= 1) { - --bracketsMatch[0]; - } - String str = parseLastDayFuncHaveMark(sqlParse, bracketsMatch[0], dbType); - sql = sql.substring(0, start) + str; - } - } - - /** - * 匹配 涉及DATE()-、DATE()+ - * - * @param sql - * @param dbType - * @return - */ - public static String parseDateCalculateNum(String sql, String dbType) { - int count = 0; - String sqlTmp = ""; - while (true) { - Matcher matcher = pDateCalculateNum.matcher(sql); - if (!matcher.find() || count++ >= 30) { - sql = sql.replace("##", "("); - return sql; - } - String sqlParse = sql.substring(matcher.start()); - if (sqlTmp.equals(sqlParse)) { - sqlParse = "##" + sqlParse.substring(1); - sql = sql.substring(0, matcher.start()) + sqlParse; - continue; - } - sqlTmp = sqlParse; - int[] bracketsMatch = StringUtil.getBracketsMatch(sqlParse, "(", false); - if (bracketsMatch[0] >= 1) { - --bracketsMatch[0]; - } - String sqlParse2 = sql.substring(matcher.start() + 1); - int[] bracketsMatch2 = StringUtil.getBracketsMatch(sqlParse2, "(", false); - if (bracketsMatch2[0] >= 1) { - --bracketsMatch2[0]; - } - String str = parseDateCalculateNumHaveMark(sqlParse, bracketsMatch[0], bracketsMatch2[0], dbType); - sql = sql.substring(0, matcher.start()) + str; - } - } - - /** - * 替换 涉及DATE()-、DATE()+ - * - * @param sqlParse - * @param num 括号总个数 - * @param num2 date函数内括号数 - * @param dbType - * @return - */ - private static String parseDateCalculateNumHaveMark(String sqlParse, int num, int num2, String dbType) { - Pattern pDateCalculateNumParse = Pattern.compile("(DATE)\\s*\\((.*?(.*?\\).*?){" + num2 + "})\\)(.*?(.*?\\).*?){" + (num - num2 - 1) + "})\\)", Pattern.CASE_INSENSITIVE); - StringBuffer sb = new StringBuffer(); - Matcher mDateCalculateNumParse = pDateCalculateNumParse.matcher(sqlParse); - if (mDateCalculateNumParse.find() && (mDateCalculateNumParse.group(4).trim().startsWith("+") || mDateCalculateNumParse.group(4).trim().startsWith("-"))) { - String group0 = mDateCalculateNumParse.group(0); - String group2 = mDateCalculateNumParse.group(2); - String group4 = mDateCalculateNumParse.group(4); - if (StringUtil.getBracketsMatch(group0.substring(0, group0.length() - 1), "(", true)[0] == num) { - String[] split = group4.split(","); - String replaceValue = ""; - if (DBTypeEnum.CLICKHOUSE.getValue().equals(dbType)) { - if (split.length == 1) { - replaceValue = "toStartOfDay#[toDateTime#[" + group2 + "]]+[" + group4 + "]*86400 )"; - } else if (split.length == 2) { - replaceValue = "toStartOfDay#[toDateTime#[" + group2 + "]]+[" + split[0] + "]*86400 ," + split[1] + ")"; - } - } else if (DBTypeEnum.DRUID.getValue().equals(dbType)) { - if (split.length == 1) { - replaceValue = "TIME_SHIFT#[FLOOR#[ TIMESTAMP " + group2 + " to day],'P1D'," + group4 + "])"; - } else if (split.length == 2) { - replaceValue = "TIME_SHIFT#[FLOOR#[ TIMESTAMP " + group2 + "to day],'P1D'," + split[0] + "]," + split[1] + ")"; - } - } - mDateCalculateNumParse.appendReplacement(sb, replaceValue); - } - } - mDateCalculateNumParse.appendTail(sb); - return sb.toString(); - } - - - /** - * 替换 LAST_DAY(date) - * - * @param sqlParse - * @param num 包含括号个数 - * @param dbType - * @return - */ - public static String parseLastDayFuncHaveMark(String sqlParse, int num, String dbType) { - Pattern pLastDayParse = Pattern.compile("(LAST_DAY)\\s*\\((.*?(.*?\\).*?){" + num + "})\\)", Pattern.CASE_INSENSITIVE); - StringBuffer sb = new StringBuffer(); - Matcher mLastDayParse = pLastDayParse.matcher(sqlParse); - if (mLastDayParse.find()) { - String replaceValue = lastDayRealize(mLastDayParse.group(1), mLastDayParse.group(2), dbType); - mLastDayParse.appendReplacement(sb, replaceValue); - } - mLastDayParse.appendTail(sb); - return sb.toString(); - } - - /** - * 实现替换:LAST_DAY(date) - * - * @param unit - * @param param - * @param dbType - * @return - */ - private static String lastDayRealize(String unit, String param, String dbType) { - String replaceValue = null; - if ("LAST_DAY".equals(unit.toUpperCase())) { - if (DBTypeEnum.CLICKHOUSE.getValue().equals(dbType)) { - replaceValue = "addDays#[addMonths#[toStartOfMonth#[toDateTime#[" + param + "]],1],-1]"; - } else if (DBTypeEnum.DRUID.getValue().equals(dbType)) { - replaceValue = "TIME_SHIFT#[FLOOR#[TIME_SHIFT#[ TIMESTAMP " + param + ", 'P1M', 1] to month], 'P1D', -1]"; - } - } - return replaceValue; - } - - /** - * 替换:MAKEDATE(year,dayofyear) - * - * @param sqlParse - * @param num 函数参数包含括号的个数 - * @param dbType - * @return - */ - public static String parseMarkDateHaveMark(String sqlParse, int num, String dbType) { - Pattern pMarkDateParse = Pattern.compile("(MAKEDATE)\\s*\\((.*?(.*?\\).*?){" + num + "})\\)", Pattern.CASE_INSENSITIVE); - StringBuffer sb = new StringBuffer(); - Matcher mMarkDateParse = pMarkDateParse.matcher(sqlParse); - if (mMarkDateParse.find()) { - String replaceValue = markDateRealize(mMarkDateParse.group(1), mMarkDateParse.group(2), dbType); - mMarkDateParse.appendReplacement(sb, replaceValue); - } - mMarkDateParse.appendTail(sb); - return sb.toString(); - } - - /** - * 实现替换:MAKEDATE(year,dayofyear) - * - * @param func - * @param expr - * @param dbType - * @return - */ - private static String markDateRealize(String func, String expr, String dbType) { - String replaceValue = null; - List<String> params = diviParam(expr, ","); - if ("MAKEDATE".equals(func.toUpperCase()) && params.size() == 2) { - Pattern pYearFunNum = Pattern.compile("(YEAR)\\s*\\(", Pattern.CASE_INSENSITIVE); - Matcher matcher = pYearFunNum.matcher(expr); - if (matcher.find() && "YEAR".equals(matcher.group(1).toUpperCase())) { - String temp = expr.substring(matcher.start()); - int[] bracketsMatch = StringUtil.getBracketsMatch(temp, "(", false); - if (bracketsMatch[0] >= 1) { - --bracketsMatch[0]; - } - Pattern pYear = Pattern.compile("^(.*?)(YEAR)\\s*\\((.*?(.*?\\).*?){" + bracketsMatch[0] + "})\\)(.*?)$", Pattern.CASE_INSENSITIVE); - Matcher mYear = pYear.matcher(params.get(0)); - if (mYear.find()) { - String group1 = mYear.group(1); - String group5 = mYear.group(5); - if (DBTypeEnum.CLICKHOUSE.getValue().equals(dbType)) { - if (group1 != null && !"".equals(group1.trim()) && group5 != null && !"".equals(group5.trim())) { - replaceValue = "toDateTime#[addDays#[addYears#[toStartOfYear#[toDateTime#[" + mYear.group(3) + "]]," + group1 + " " + group5 + "]," + params.get(1) + " -1 ]]"; - } else if (group5 != null && !"".equals(group5.trim())) { - replaceValue = "toDateTime#[addDays#[addYears#[toStartOfYear#[toDateTime#[" + mYear.group(3) + "]]," + group5 + "]," + params.get(1) + " -1 ]]"; - } else if (group1 != null && !"".equals(group1.trim())) { - replaceValue = "toDateTime#[addDays#[addYears#[toStartOfYear#[toDateTime#[" + mYear.group(3) + "]]," + group1 + "0 ]," + params.get(1) + " -1 ]]"; - } else { - replaceValue = "toDateTime#[addDays#[toStartOfYear#[toDateTime#[" + mYear.group(3) + "]]," + params.get(1) + " -1 ]]"; - } - } else if (DBTypeEnum.DRUID.getValue().equals(dbType)) { - if (group1 != null && !"".equals(group1.trim()) && group5 != null && !"".equals(group5.trim())) { - replaceValue = "TIME_SHIFT#[TIME_SHIFT#[FLOOR#[ TIMESTAMP " + mYear.group(3) + " to year],'P1Y'," + group1 + " " + group5 + " ],'P1D'," + params.get(1) + " -1 ]"; - } else if (group5 != null && !"".equals(group5.trim())) { - replaceValue = "TIME_SHIFT#[TIME_SHIFT#[FLOOR#[ TIMESTAMP " + mYear.group(3) + " to year],'P1Y'," + group5 + "],'P1D'," + params.get(1) + " -1 ]"; - } else if (group1 != null && !"".equals(group1.trim())) { - replaceValue = "TIME_SHIFT#[TIME_SHIFT#[FLOOR#[ TIMESTAMP " + mYear.group(3) + " to year],'P1Y'," + group1 + "0 ],'P1D'," + params.get(1) + " -1 ]"; - } else { - replaceValue = "TIME_SHIFT#[FLOOR#[ TIMESTAMP " + mYear.group(3) + " to year],'P1D'," + params.get(1) + "-1 ]"; - } - } - } - } - } - return replaceValue; - } - - /** - * 替换 YEAR(expr)、QUARTER(expr)、MONTH(expr)、DAY(expr)、HOUR(expr)、MINUTE(expr)、SECONDexpr)、DAYOFYEAR(expr)、DAYOFMONTH(expr)、DAYOFWEEK(expr) - * - * @param sqlParse - * @param num - * @param dbType - * @return - */ - private static String parseUnitFuncGetNumHaveMark(String sqlParse, int num, String dbType) { - Pattern pUnitFuncParse = Pattern.compile("(YEAR|QUARTER|MONTH|DAY|HOUR|MINUTE|SECOND|DAYOFYEAR|DAYOFMONTH|DAYOFWEEK)\\s*\\((.*?(.*?\\).*?){" + num + "})\\)", Pattern.CASE_INSENSITIVE); - StringBuffer sb = new StringBuffer(); - Matcher mUnitFuncParse = pUnitFuncParse.matcher(sqlParse); - if (mUnitFuncParse.find()) { - String replaceValue = unitFuncGetNumRealize(mUnitFuncParse.group(1), mUnitFuncParse.group(2), dbType); - mUnitFuncParse.appendReplacement(sb, replaceValue); - } - mUnitFuncParse.appendTail(sb); - return sb.toString(); - } - - /** - * 实现替换:YEAR(expr)、QUARTER(expr)、MONTH(expr)、DAY(expr)、HOUR(expr)、MINUTE(expr)、SECONDexpr)、DAYOFYEAR(expr)、DAYOFMONTH(expr)、DAYOFWEEK(expr) - * - * @param unit - * @param expr - * @param dbType - * @return - */ - private static String unitFuncGetNumRealize(String unit, String expr, String dbType) { - String replaceValue = null; - unit = unit.toUpperCase(); - if (DBTypeEnum.CLICKHOUSE.getValue().equals(dbType)) { - switch (unit) { - case "YEAR": - replaceValue = "toYear#[toDateTime#[" + expr + "]]"; - break; - case "QUARTER": - replaceValue = "toQuarter#[toDateTime#[" + expr + "]]"; - break; - case "MONTH": - replaceValue = "toMonth#[toDateTime#[" + expr + "]]"; - break; - case "DAY": - replaceValue = "toDayOfMonth#[toDateTime#[" + expr + "]]"; - break; - case "HOUR": - replaceValue = "toHour#[toDateTime#[" + expr + "]]"; - break; - case "MINUTE": - replaceValue = "toMinute#[toDateTime#[" + expr + "]]"; - break; - case "SECOND": - replaceValue = "toSecond#[toDateTime#[" + expr + "]]"; - break; - case "DAYOFYEAR": - replaceValue = "toDayOfYear#[toDateTime#[" + expr + "]]"; - break; - case "DAYOFMONTH": - replaceValue = "toDayOfMonth#[toDateTime#[" + expr + "]]"; - break; - case "DAYOFWEEK": - replaceValue = "toDayOfWeek#[addDays#[toDateTime#[" + expr + "],1]]"; - break; - default: - replaceValue = unit + "#[" + expr + "]"; - } - } else if (DBTypeEnum.DRUID.getValue().equals(dbType)) { - switch (unit) { - case "YEAR": - replaceValue = "TIME_EXTRACT#[TIME_SHIFT#[ TIMESTAMP " + expr + ",'PT1M',0], 'YEAR' ]"; - break; - case "QUARTER": - replaceValue = "TIME_EXTRACT#[TIME_SHIFT#[ TIMESTAMP " + expr + ",'PT1M',0], 'QUARTER' ]"; - break; - case "MONTH": - replaceValue = "TIME_EXTRACT#[TIME_SHIFT#[ TIMESTAMP " + expr + ",'PT1M',0], 'MONTH' ]"; - break; - case "DAY": - replaceValue = "TIME_EXTRACT#[TIME_SHIFT#[ TIMESTAMP " + expr + ",'PT1M',0], 'DAY' ]"; - break; - case "HOUR": - replaceValue = "TIME_EXTRACT#[TIME_SHIFT#[ TIMESTAMP " + expr + ",'PT1M',0], 'HOUR' ]"; - break; - case "MINUTE": - replaceValue = "TIME_EXTRACT#[TIME_SHIFT#[ TIMESTAMP " + expr + ",'PT1M',0], 'MINUTE' ]"; - break; - case "SECOND": - replaceValue = "TIME_EXTRACT#[TIME_SHIFT#[ TIMESTAMP " + expr + ",'PT1M',0], 'SECOND' ]"; - break; - case "DAYOFYEAR": - replaceValue = "TIME_EXTRACT#[TIME_SHIFT#[ TIMESTAMP " + expr + ",'PT1M',0], 'DOY' ]"; - break; - case "DAYOFMONTH": - replaceValue = "TIME_EXTRACT#[TIME_SHIFT#[ TIMESTAMP " + expr + ",'PT1M',0], 'DAY' ]"; - break; - case "DAYOFWEEK": - replaceValue = "TIME_EXTRACT#[TIME_SHIFT#[ TIMESTAMP " + expr + ",'P1D',1], 'DOW' ]"; - break; - default: - replaceValue = unit + "#[" + expr + "]"; - } - } - return replaceValue; - } - - /** - * 实现相对时间相关替换: - * - * @param params - * @param sign ADD相关为true,SUB相关为false; - * @param dbType - * @return - */ - private static String dateRelative(List<String> params, Boolean sign, String dbType) { - String replaceValue = ""; - if (params.size() == 2 && params.get(1).toUpperCase().contains("INTERVAL")) { - String param1 = params.get(0); - String param2 = params.get(1); - Matcher matcher = pIntervalNumUnit.matcher(param2); - if (matcher.find()) { - param2 = matcher.group(1); - if (!sign) { - param2 = "- #[" + param2 + "]"; - } - if (DBTypeEnum.CLICKHOUSE.getValue().equals(dbType)) { - switch (matcher.group(2).toUpperCase()) { - case "SECOND": - replaceValue = "toDateTime#[" + param1 + "]" + param2; - break; - case "MINUTE": - replaceValue = "toDateTime#[" + param1 + "]" + param2 + "*60"; - break; - case "HOUR": - replaceValue = "toDateTime#[" + param1 + "]" + param2 + "*3600"; - break; - case "DAY": - replaceValue = "toDateTime#[" + param1 + "]" + param2 + "*86400"; - break; - case "WEEK": - replaceValue = "toDateTime#[" + param1 + "]" + param2 + "*604800"; - break; - case "MONTH": - replaceValue = "addMonths#[toDateTime#[" + param1 + "] ," + param2 + "]"; - break; - case "QUARTER": - replaceValue = "addQuarter#[toDateTime#[" + param1 + "]," + param2 + "]"; - break; - case "YEAR": - replaceValue = "addYears#[toDateTime#[" + param1 + "]," + param2 + "]"; - break; - default: - replaceValue = param1 + param2; - break; - } - } else if (DBTypeEnum.DRUID.getValue().equals(dbType)) { - switch (matcher.group(2).toUpperCase()) { - case "SECOND": - replaceValue = "TIME_SHIFT#[ TIMESTAMP " + param1 + ",'PT1S'," + param2 + "]"; - break; - case "MINUTE": - replaceValue = "TIME_SHIFT#[ TIMESTAMP " + param1 + ",'PT1M'," + param2 + "]"; - break; - case "HOUR": - replaceValue = "TIME_SHIFT#[ TIMESTAMP " + param1 + ",'PT1H'," + param2 + "]"; - break; - case "DAY": - replaceValue = "TIME_SHIFT#[ TIMESTAMP " + param1 + ",'P1D'," + param2 + "]"; - break; - case "WEEK": - replaceValue = "TIME_SHIFT#[ TIMESTAMP " + param1 + ",'P1W'," + param2 + "]"; - break; - case "MONTH": - replaceValue = "TIME_SHIFT#[ TIMESTAMP " + param1 + ",'P1M'," + param2 + "]"; - break; - case "QUARTER": - replaceValue = "TIME_SHIFT#[ TIMESTAMP " + param1 + ",'P1M'," + param2 + "]"; - break; - case "YEAR": - replaceValue = "TIME_SHIFT#[ TIMESTAMP " + param1 + ",'P1Y'," + param2 + "]"; - break; - default: - replaceValue = param1 + param2; - break; - } - } - return replaceValue; - } - } else if (params.size() == 2) { - String param1 = params.get(0); - String param2 = params.get(1); - if (!sign) { - param2 = "- #[" + param2 + "]"; - } - if (DBTypeEnum.CLICKHOUSE.getValue().equals(dbType)) { - replaceValue = "addDays#[toDateTime#[" + param1 + "]," + param2 + "]"; - } else if (DBTypeEnum.DRUID.getValue().equals(dbType)) { - replaceValue = "TIME_SHIFT#[ TIMESTAMP " + param1 + ",'P1D'," + param2 + "]"; - } - } - return replaceValue; - } - - /** - * 实现替换:FROM_UNIXTIME(unix_timestamp)、FROM_UNIXTIME(date,format)、DATE_FORMAT(date,format)、STR_TO_DATE(date,format) - * - * @param func - * @param param - * @param dbType - * @return - */ - private static String dateFormatRealize(String func, String param, boolean bool, String dbType) { - List<String> params = diviParam(param, ","); - String param1 = params.get(0); - String replaceValue = null; - if ("FROM_UNIXTIME".equals(func.toUpperCase()) && params.size() == 1) { - if (DBTypeEnum.CLICKHOUSE.getValue().equals(dbType)) { - replaceValue = "toDateTime#[" + param + "]"; - } else if (DBTypeEnum.DRUID.getValue().equals(dbType) && !bool) { - replaceValue = "MILLIS_TO_TIMESTAMP#[ 1000 * [" + param + "]]"; - } else if (DBTypeEnum.DRUID.getValue().equals(dbType) && bool) { - replaceValue = "TIME_FORMAT#[MILLIS_TO_TIMESTAMP#[ 1000 * [" + param + "]],'YYYY-MM-dd HH:mm:ss']"; - } - } else if (func.contains("FROM_UNIXTIME") && DBTypeEnum.DRUID.getValue().equals(dbType) && "%Y-%m-%d %H:%i:%s".equals(params.get(1).replaceAll("\\'|\\\"", "").trim())) { - if (!bool) { - replaceValue = "MILLIS_TO_TIMESTAMP#[ 1000*[" + param1 + "]]"; - } else if (bool) { - replaceValue = "TIME_FORMAT#[MILLIS_TO_TIMESTAMP#[ 1000 * [" + param + "]],'YYYY-MM-dd HH:mm:ss']"; - } - } else { - String param2 = params.get(1).replaceAll("\\'|\\\"", "").trim(); - if (DBTypeEnum.CLICKHOUSE.getValue().equals(dbType) && bool) { - switch (param2) { - case "%Y-%m-%d %H:%i:%s": - replaceValue = "toDateTime#[" + param1 + "]"; - break; - case "%Y-%m-%d %H:%i:00": - replaceValue = "toStartOfMinute#[toDateTime#[" + param1 + "]]"; - break; - case "%Y-%m-%d %H:00:00": - replaceValue = "toStartOfHour#[toDateTime#[" + param1 + "]]"; - break; - case "%Y-%m-%d 00:00:00": - replaceValue = "toStartOfDay#[toDateTime#[" + param1 + "]]"; - break; - case "%Y-%m-01 00:00:00": - replaceValue = "toDateTime#[toStartOfMonth#[toDateTime#[" + param1 + "]]]"; - break; - case "%Y-01-01 00:00:00": - replaceValue = "toDateTime#[toStartOfYear#[toDateTime#[" + param1 + "]]]"; - break; - case "%Y-%m-%d": - replaceValue = "formatDateTime#[toDateTime#[" + param1 + "], '%Y-%m-%d]"; - break; - case "%Y-%m-01": - replaceValue = "formatDateTime#[toDateTime#[" + param1 + "], '%Y-%m-01]"; - break; - case "%Y-01-01": - replaceValue = "formatDateTime#[toDateTime#[" + param1 + "], '%Y-01-01]"; - break; - default: - replaceValue = "toDateTime#[" + param1 + "]"; - } - } else if (DBTypeEnum.CLICKHOUSE.getValue().equals(dbType) && !bool) { - switch (param2) { - case "%Y-%m-%d %H:%i:%s": - replaceValue = "toDateTime#[" + param1 + "]"; - break; - case "%Y-%m-%d %H:%i:00": - replaceValue = "toStartOfMinute#[toDateTime#[" + param1 + "]]"; - break; - case "%Y-%m-%d %H:00:00": - replaceValue = "toStartOfHour#[toDateTime#[" + param1 + "]]"; - break; - case "%Y-%m-%d 00:00:00": - replaceValue = "toStartOfDay#[toDateTime#[" + param1 + "]]"; - break; - case "%Y-%m-01 00:00:00": - replaceValue = "toDateTime#[toStartOfMonth#[toDateTime#[" + param1 + "]]]"; - break; - case "%Y-01-01 00:00:00": - replaceValue = "toDateTime#[toStartOfYear#[toDateTime#[" + param1 + "]]]"; - break; - case "%Y-%m-%d": - replaceValue = "toStartOfDay#[toDateTime#[" + param1 + "]]"; - break; - case "%Y-%m-01": - replaceValue = "toStartOfMonth#[toDateTime#[" + param1 + "]]"; - break; - case "%Y-01-01": - replaceValue = "toStartOfYear#[toDateTime#[" + param1 + "]]"; - break; - default: - replaceValue = "toDateTime#[" + param1 + "]"; - } - } else if (DBTypeEnum.DRUID.getValue().equals(dbType) && bool) { - switch (param2) { - case "%Y-%m-%d %H:%i:%s": - replaceValue = "TIME_FORMAT#[ TIMESTAMP " + param1 + ",'YYYY-MM-dd HH:mm:ss']"; - break; - case "%Y-%m-%d %H:%i:00": - replaceValue = "TIME_FORMAT#[ TIMESTAMP " + param1 + ",'YYYY-MM-dd HH:mm:00']"; - break; - case "%Y-%m-%d %H:00:00": - replaceValue = "TIME_FORMAT#[ TIMESTAMP " + param1 + ",'YYYY-MM-dd HH:00:00']"; - break; - case "%Y-%m-%d 00:00:00": - replaceValue = "TIME_FORMAT#[ TIMESTAMP " + param1 + ",'YYYY-MM-dd 00:00:00']"; - break; - case "%Y-%m-01 00:00:00": - replaceValue = "TIME_FORMAT#[ TIMESTAMP " + param1 + ",'YYYY-MM-01 00:00:00']"; - break; - case "%Y-01-01 00:00:00": - replaceValue = "TIME_FORMAT#[ TIMESTAMP " + param1 + ",'YYYY-01-01 00:00:00']"; - break; - case "%Y-%m-%d": - replaceValue = "TIME_FORMAT#[ TIMESTAMP " + param1 + ",'YYYY-MM-dd']"; - break; - case "%Y-%m-01": - replaceValue = "TIME_FORMAT#[ TIMESTAMP " + param1 + ",'YYYY-MM-01']"; - break; - case "%Y-01-01": - replaceValue = "TIME_FORMAT#[ TIMESTAMP " + param1 + ",'YYYY-01-01']"; - break; - default: - replaceValue = "TIME_FORMAT#[ TIMESTAMP " + param1 + ",'YYYY-MM-dd HH:mm:ss']"; - } - } else if (DBTypeEnum.DRUID.getValue().equals(dbType) && !bool) { - switch (param2) { - case "%Y-%m-%d %H:%i:%s": - replaceValue = " TIMESTAMP " + param1; - break; - case "%Y-%m-%d %H:%i:00": - replaceValue = "FLOOR#[ TIMESTAMP " + param1 + " to minute]"; - break; - case "%Y-%m-%d %H:00:00": - replaceValue = "FLOOR#[ TIMESTAMP " + param1 + " to hour]"; - break; - case "%Y-%m-%d 00:00:00": - replaceValue = "FLOOR#[ TIMESTAMP " + param1 + " to day]"; - break; - case "%Y-%m-01 00:00:00": - replaceValue = "FLOOR#[ TIMESTAMP " + param1 + " to month]"; - break; - case "%Y-01-01 00:00:00": - replaceValue = "FLOOR#[ TIMESTAMP " + param1 + " to year]"; - break; - case "%Y-%m-%d": - replaceValue = "TIME_FLOOR#[ TIMESTAMP " + param1 + ",'P1D']"; - break; - case "%Y-%m-01": - replaceValue = "TIME_FLOOR#[ TIMESTAMP " + param1 + ",'P1M']"; - break; - case "%Y-01-01": - replaceValue = "TIME_FLOOR#[ TIMESTAMP " + param1 + ",'P1Y']"; - break; - default: - replaceValue = " TIMESTAMP " + param1; - break; - } - } - } - return replaceValue; - } - - /** - * 解析之后的sql处理 - * - * @param sql - * @param dbType - * @return - */ - public static String specialDisposeEnd(String sql, String dbType) { - if (sql == null) { - return sql; - } - StringBuffer sb = new StringBuffer(); - if (DBTypeEnum.CLICKHOUSE.getValue().equals(dbType)) { - Matcher mStrDateTime = pStrDateTime.matcher(sql); - while (mStrDateTime.find()) { - String innerValue = mStrDateTime.group(1) + " toDateTime#[" + mStrDateTime.group(2) + "]"; - mStrDateTime.appendReplacement(sb, innerValue); - } - mStrDateTime.appendTail(sb); - sql = sb.toString(); - } else if (DBTypeEnum.DRUID.getValue().equals(dbType)) { - - Matcher mNowFun = pNow.matcher(sql); - while (mNowFun.find()) { - String innerValue = "CURRENT_TIMESTAMP"; - mNowFun.appendReplacement(sb, innerValue); - } - mNowFun.appendTail(sb); - sql = sb.toString(); - - Matcher mStrDateTime = pStrDateTime.matcher(sql); - sb = new StringBuffer(); - while (mStrDateTime.find()) { - String innerValue = mStrDateTime.group(1) + " TIMESTAMP " + mStrDateTime.group(2); - mStrDateTime.appendReplacement(sb, innerValue); - } - mStrDateTime.appendTail(sb); - sql = sb.toString(); - - - Matcher matcher = pCKTimeStamp.matcher(sql); - sb = new StringBuffer(); - while (matcher.find()) { - if (matcher.groupCount() == 1) { - matcher.appendReplacement(sb, " " + matcher.group(1)); - } - } - matcher.appendTail(sb); - sql = sb.toString(); - } - return sql; - } - - /** - * 替换解析时候加入的[、]、# - * - * @param sql - * @return - */ - public static String replaceMark(String sql) { - sql = sql.replace("[", "("); - sql = sql.replace("]", ")"); - sql = sql.replace("#", ""); - return sql; - } - - /** - * 替换:FROM_UNIXTIME(unix_timestamp)、FROM_UNIXTIME(date,format)、DATE_FORMAT(date,format)、STR_TO_DATE(date,format) - * - * @param sqlParse - * @param num 包含括号的个数 - * @param bool 应用的分组中为true 条件范围中则为false - * @param dbType - * @return - */ - public static String dateFormatHavaMark(String sqlParse, int num, boolean bool, String dbType) { - Pattern pDateFormatMark = Pattern.compile("(FROM_UNIXTIME|DATE_FORMAT|STR_TO_DATE)\\s*\\((.*?(.*?\\).*?){" + num + "})\\)", Pattern.CASE_INSENSITIVE); - Matcher mDateFormatMark = pDateFormatMark.matcher(sqlParse); - StringBuffer sb = new StringBuffer(); - if (mDateFormatMark.find()) { - String group2 = mDateFormatMark.group(2); - String replaceValue = group2; - if (StringUtil.getBracketsMatch(group2, "(", false)[0] >= 0) { - replaceValue = dateFormatRealize(mDateFormatMark.group(1), group2, bool, dbType); - } - mDateFormatMark.appendReplacement(sb, replaceValue); - } - mDateFormatMark.appendTail(sb); - return sb.toString(); - } - - /** - * 替换SUBDATE(expr,days)、SUBDATE(expr,days)、SUBDATE(date,INTERVAL expr dbType)、ADDDATE(date,INTERVAL expr dbType)、DATE_SUB(date,INTERVAL expr dbType)、DATE_ADD(date,INTERVAL expr dbType) - * - * @param sqlParse - * @param num 包含的括号个数 - * @param dbType - * @return - */ - public static String dateRelativeHaveMark(String sqlParse, int num, String dbType) { - Pattern pDateRelativeParse = Pattern.compile("(ADDDATE|DATE_ADD|SUBDATE|DATE_SUB)\\s*\\((.*?(.*?\\).*?){" + num + "})\\)", Pattern.CASE_INSENSITIVE); - Matcher matcherParse = pDateRelativeParse.matcher(sqlParse); - String innerValue = ""; - StringBuffer sb = new StringBuffer(); - if (matcherParse.find()) { - Boolean sign; - if (matcherParse.group(1).toUpperCase().contains("ADD")) { - sign = true; - } else { - sign = false; - } - if (StringUtil.getBracketsMatch(matcherParse.group(2), null, false)[0] >= 0) { - List<String> params = diviParam(matcherParse.group(2), ","); - innerValue = dateRelative(params, sign, dbType); - } - matcherParse.appendReplacement(sb, innerValue); - } - matcherParse.appendTail(sb); - return sb.toString(); - } - - /** - * 实现替换:UNIX_TIMESTAMP()、UNIX_TIMESTAMP(expr) - * - * @param sqlParse - * @param num 包含的括号个数 - * @param dbType - * @return - */ - public static String parseUnixTimeHavaMark(String sqlParse, int num, String dbType) { - Pattern pUnixTimeParse = Pattern.compile("(UNIX_TIMESTAMP)\\s*\\((.*?(.*?\\).*?){" + num + "})\\)", Pattern.CASE_INSENSITIVE); - Matcher matcherParse = pUnixTimeParse.matcher(sqlParse); - StringBuffer sb = new StringBuffer(); - String innerValue = null; - if (matcherParse.find()) { - if (DBTypeEnum.CLICKHOUSE.getValue().equals(dbType)) { - if (matcherParse.group(2) == null || "".equals(matcherParse.group(2).trim())) { - innerValue = "toUnixTimestamp#[now#[]]"; - } else { - innerValue = "toUnixTimestamp#[ " + matcherParse.group(2) + "]"; - } - } else if (DBTypeEnum.DRUID.getValue().equals(dbType)) { - if (matcherParse.group(2) == null || "".equals(matcherParse.group(2).trim())) { - innerValue = "0.001 * TIMESTAMP_TO_MILLIS[CURRENT_TIMESTAMP]"; - } else { - innerValue = "0.001 * TIMESTAMP_TO_MILLIS#[ TIMESTAMP " + matcherParse.group(2) + "]"; - } - } - matcherParse.appendReplacement(sb, innerValue); - } - matcherParse.appendTail(sb); - return sb.toString(); - } - - /** - * 实现替换:DATE(expr) - * - * @param sqlParse - * @param num 包含的括号个数 - * @param dbType - * @return - */ - public static String parseDateHavaMark(String sqlParse, int num, String dbType) { - Pattern pDateParse = Pattern.compile("(DATE)\\s*\\((.*?(.*?\\).*?){" + num + "})\\)", Pattern.CASE_INSENSITIVE); - Matcher matcherParse = pDateParse.matcher(sqlParse); - StringBuffer sb = new StringBuffer(); - String innerValue = null; - if (matcherParse.find()) { - if (DBTypeEnum.CLICKHOUSE.getValue().equals(dbType)) { - innerValue = "toStartOfDay#[toDateTime#[" + matcherParse.group(2) + "]]"; - } else if (DBTypeEnum.DRUID.getValue().equals(dbType)) { - innerValue = "TIME_FLOOR#[ TIMESTAMP " + matcherParse.group(2) + ",'P1D']"; - } - matcherParse.appendReplacement(sb, innerValue); - } - matcherParse.appendTail(sb); - return sb.toString(); - } - - /** - * 获取函数参数 - * - * @param str - * @param div 参数分隔符 - * @return - */ - public static List<String> diviParam(String str, String div) { - if (str == null) { - return null; - } - List<String> result = new ArrayList<>(); - String[] split = str.split(div); - String resultTemp = ""; - for (int i = 0; i < split.length; i++) { - resultTemp += split[i]; - if (StringUtil.getBracketsMatch(resultTemp, "(", true)[0] >= 0 - && StringUtil.getBracketsMatch(resultTemp, "[", true)[0] >= 0) { - result.add(resultTemp); - resultTemp = ""; - continue; - } - resultTemp += div; - } - return result; - } -} diff --git a/src/main/java/com/mesa/reportservice/util/StringUtil.java b/src/main/java/com/mesa/reportservice/util/StringUtil.java index 56a5458..8f8a1f2 100644 --- a/src/main/java/com/mesa/reportservice/util/StringUtil.java +++ b/src/main/java/com/mesa/reportservice/util/StringUtil.java @@ -332,17 +332,7 @@ public final class StringUtil extends StringUtils { * @param msg 要加密的字符串 * @return 返回加密后的24位字符, 如果解析出现异常将返回<code>null</code>. */ - public static String md5(String msg) { - try { - MessageDigest md = MessageDigest.getInstance("MD5"); - byte[] b = md.digest(msg.getBytes()); - BASE64Encoder encoder = new BASE64Encoder(); - return encoder.encode(b); - } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - return EMPTY; - } - } + public static String getBase64(String msg) { try { @@ -397,35 +387,7 @@ public final class StringUtil extends StringUtils { * @param webSiteUrl url 地址 * @return 返回截取后的域名地址 */ - public static String getDomain(String webSiteUrl) { - String url; - - if (isEmpty(webSiteUrl)) { - return EMPTY; - } - if (webSiteUrl.indexOf("http://") >= 0) { - url = webSiteUrl.substring("http://".length(), webSiteUrl.length()); - } else if (webSiteUrl.indexOf("https://", 0) >= 0) { - url = webSiteUrl.substring("https://".length(), webSiteUrl.length()); - } else if (webSiteUrl.indexOf("ftp://", 0) >= 0) { - url = webSiteUrl.substring("ftp://".length(), webSiteUrl.length()); - } else { - url = webSiteUrl; - } - - if (url.indexOf("/", 0) >= 0) { - url = url.substring(0, url.indexOf("/", 1)); - } - if (url.indexOf("www.") == 0) { - url = url.substring(url.indexOf(".") + 1, url.length()); - } - if (url.indexOf("?") >= 0) { - url = url.substring(0, url.indexOf("?")); - } - - return url; - } /** * <p>按照规则解析字符串得到一个数组.</p> diff --git a/src/main/resources/config/application.properties b/src/main/resources/config/application.properties deleted file mode 100644 index 538c39f..0000000 --- a/src/main/resources/config/application.properties +++ /dev/null @@ -1,120 +0,0 @@ -server.port=9093 -#���½�������ʱ��10s -scan.result.scheduled.plan=0/10 * * * * ? -#��ʱɨ��mysql���ݿ�report_result��ʱ��15s -#ͬʱ��ִ�����߳��� -globle.job_thread=2 -globle.ttl_time=21600600 -#Hbasehttp�Ķ˿� -#Hbase�ı���������ͨ������Ҫ���� -hbase.table=tsg:report_result - -hbase.zookeeper_quorum=192.168.40.193 -hbase.zookeeper_property_clientPort=2181 -hbase.zookeeper_znode_parent=/hbase -hbase.client_retries_number=3 - -hbase.rpc_timeout=100000 -hbase.connect_pool=10 - - -ck.gateway_ip=192.168.41.193:9999 - -#clickhouse�ṩreport�����ip -#ck.task_ip=192.168.40.224:8123 -#clickhouse�����ݿ��� -#ck.task_database=tsg_galaxy_v3 -#clickhouse����������û� -#ck.task_user=tsg_report -#clickhouse������������� -#ck.task_user_password=ceiec2019 -#clickhouse��־����ipͨ��=ck.task_ip -#ck.log_ip=192.168.40.224:8123 -#clickhouse��־������û� -#ck.log_user=tsg_report -#clickhouse��־�û����� -#ck.log_user_password=ceiec2019 -#��������� -http.maxTotal=300 -#������ -http.defaultMaxPerRoute=100 -#�������ӵ��ʱ�� -http.connectTimeout=10000 -#�����ӳ��л�ȡ�����ӵ��ʱ��: -http.connectionRequestTimeout=10000 -#���ݴ�����ʱ�� -http.socketTimeout=21600500 -#�ύ����ǰ���������Ƿ���� -http.staleConnectionCheckEnabled=true - -http.socketTimeoutShort=30000 - - -#�Ƿ�����zookeeper 0����(��Ⱥ) 1����(����) -zookeeper.open=1 -zookeeper.retryCount=5 -zookeeper.elapsedTimeMs=1000 -#zk��Ⱥ��ip -zookeeper.connectString=192.168.40.193:2181 -zookeeper.sessionTimeoutMs=5000 -zookeeper.connectionTimeoutMs=5000 -zookeeper.nameSpace=reportservice -#mariadb��url -spring.datasource.url=jdbc:mariadb://192.168.40.204:3306/treport?serverTimezone=GMT&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false -#spring.datasource.url=jdbc:mysql://192.168.11.208:3306/ntc-api?serverTimezone=GMT&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false -#mariadb���û��� -spring.datasource.username=root -#mariadb������ -spring.datasource.password=111111 - -spring.datasource.name=druidDataSource -spring.datasource.type=com.alibaba.druid.pool.DruidDataSource -spring.datasource.driver-class-name=org.mariadb.jdbc.Driver - -#���ü��ͳ�����ص�filters��ȥ�����ؽ���SQL������ͳ�ƣ���wall�����ڷ���ǽ -spring.datasource.druid.filters=stat,wall,slf4j -#���������S -spring.datasource.druid.max-active=30 -#��С������ -spring.datasource.druid.min-idle=1 -#��ʼ�������� -spring.datasource.druid.initial-size=2 -#��ȡ�������ʱʱ�� -spring.datasource.druid.max-wait=600000 -#�����òŽ���һ�μ�⣬�����Ҫ�رյĿ������ӣ���λ�Ǻ��� -spring.datasource.druid.time-between-eviction-runs-millis=60000 -# һ�������ڳ�����С�����ʱ�䣬��λ�Ǻ��� -spring.datasource.druid.min-evictable-idle-time-millis=300000 -#��֤�����Ƿ����,�����ݿ���ִ��һ��sql -spring.datasource.druid.validation-query=select 1 -#��������Ϊtrue����Ӱ�����ܣ����ұ�֤��ȫ�ԡ��������ӵ�ʱ���⣬�������ʱ�����timeBetweenEvictionRunsMillis�� -# ִ��validationQuery��������Ƿ���Ч -spring.datasource.druid.test-while-idle=true -#��������ʱִ��validationQuery��������Ƿ���Ч������������ûή������ -spring.datasource.druid.test-on-borrow=false -#�黹����ʱִ��validationQuery��������Ƿ���Ч������������ûή������ -spring.datasource.druid.test-on-return=false -spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500 -#�Ƿ���WebStatFilter -spring.datasource.druid.web-stat-filter.enabled=true -#���ò�ͳ����ЩURL(�����ų�һЩ����Ҫ��url) -spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/* -#�Ƿ���Druid�����Ϣ��ʾҳ�� -spring.datasource.druid.stat-view-servlet.enabled=true -#�������������·�� -spring.datasource.druid.stat-view-servlet.url-pattern=/druid/* -#��ֹ�ֶ����ü������ -spring.datasource.druid.stat-view-servlet.reset-enable=false -#durid-uiҳ���˻����� -spring.datasource.druid.stat-view-servlet.login-username=admin -spring.datasource.druid.stat-view-servlet.login-password=admin -#Spring��أ����ڲ����ӿڵ��õļ��,��Ҫ����aop��ذ� -spring.datasource.druid.aop-patterns=com.mesa.reportservice.controller.*,com.mesa.reportservice.service.*,com.mesa.reportservice.mapper.* - -logging.config: classpath:./config/log4j2-dev.xml - -mybatis.typeAliasesPackage=com.mesa.reportservice.bean -mybatis.mapperLocations=classpath*:/mappers/*.xml -spring.application.name=ReportserviceApplication -management.endpoints.web.exposure.include=* -management.metrics.tags.application=${spring.application.name}
\ No newline at end of file diff --git a/src/main/resources/config/log4j2-dev.xml b/src/main/resources/config/log4j2-dev.xml deleted file mode 100644 index 94f8476..0000000 --- a/src/main/resources/config/log4j2-dev.xml +++ /dev/null @@ -1,56 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<configuration> - - <!--日志打印相关参数配置--> - <Properties> - <!--每5M压缩日志文件--> - <property name="LOG_SIZE">5M</property> - <!--最多产生10个压缩文件--> - <property name="LOG_NUMS">10</property> - <!--日志打印等级--> - <property name="LOG_LEVEL">info</property> - <!--日志文件路径--> - <property name="LOG_PATH">logs</property> - <!--日志文件名称--> - <property name="LOG_FILE_NAME">galaxy-report-service</property> - <!--日志打印格式--> - <property name="LOG_PATTERN">[%d{yyyy-MM-dd HH:mm:ss}] [%p] [Thread:%t] %l %x - %m%n</property> - </Properties> - - <appenders> - <Console name="consoleSystemOutAppender" target="SYSTEM_OUT"> - <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/> - <PatternLayout pattern="${LOG_PATTERN}"/> - </Console> - - <RollingFile name="rollingFileAllAppender" - fileName="${LOG_PATH}/${LOG_FILE_NAME}.log" - filePattern="${LOG_PATH}/history/$${date:yyyy-MM-dd}/${LOG_FILE_NAME}-%d{yyyy-MM-dd}-%i.log.gz"> - <PatternLayout pattern="${LOG_PATTERN}"/> - <Policies> - <SizeBasedTriggeringPolicy size="${LOG_SIZE}"/> - <TimeBasedTriggeringPolicy interval="1" modulate="true"/> - </Policies> - <Filters> - <ThresholdFilter level="all" onMatch="ACCEPT" onMismatch="DENY"/> - </Filters> - <DefaultRolloverStrategy max="${LOG_NUMS}"> - <Delete basePath="${LOG_PATH}/history" maxDepth="1"> - <IfFileName glob="*.log.gz"> - <IfLastModified age="90d"> - <IfAny> - <IfAccumulatedFileSize exceeds="200 GB" /> - </IfAny> - </IfLastModified> - </IfFileName> - </Delete> - </DefaultRolloverStrategy> - </RollingFile> - </appenders> - <loggers> - <root level="${LOG_LEVEL}"> - <appender-ref ref="consoleSystemOutAppender"/> - <appender-ref ref="rollingFileAllAppender"/> - </root> - </loggers> -</configuration>
\ No newline at end of file |
