This is an automated email from the ASF dual-hosted git repository. hxd pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git
commit 73dd5eb6e44e2194b650eea72aabcfaf929e5bdc Author: xiangdong huang <[email protected]> AuthorDate: Sun May 3 11:07:57 2020 +0800 fix sonar code smell --- .../iotdb/web/grafana/dao/impl/BasicDaoImpl.java | 86 +++++++++++----------- 1 file changed, 45 insertions(+), 41 deletions(-) diff --git a/grafana/src/main/java/org/apache/iotdb/web/grafana/dao/impl/BasicDaoImpl.java b/grafana/src/main/java/org/apache/iotdb/web/grafana/dao/impl/BasicDaoImpl.java index 53f9303..0cdfef5 100644 --- a/grafana/src/main/java/org/apache/iotdb/web/grafana/dao/impl/BasicDaoImpl.java +++ b/grafana/src/main/java/org/apache/iotdb/web/grafana/dao/impl/BasicDaoImpl.java @@ -18,8 +18,15 @@ */ package org.apache.iotdb.web.grafana.dao.impl; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; import java.time.Duration; +import java.time.ZonedDateTime; +import java.util.ArrayList; import java.util.Collections; +import java.util.List; import org.apache.iotdb.tsfile.utils.Pair; import org.apache.iotdb.web.grafana.bean.TimeValues; import org.apache.iotdb.web.grafana.dao.BasicDao; @@ -33,15 +40,6 @@ import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Repository; -import java.sql.Connection; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.time.ZonedDateTime; -import java.util.ArrayList; -import java.util.List; -import java.util.Properties; - /** * Created by dell on 2017/7/17. */ @@ -53,7 +51,7 @@ public class BasicDaoImpl implements BasicDao { private final JdbcTemplate jdbcTemplate; - private static long TIMESTAMP_RADIX = -1L; + private static long timestampRadioX = -1L; @Value("${timestamp_precision}") private String timestampPrecision = "ms"; @@ -62,10 +60,10 @@ public class BasicDaoImpl implements BasicDao { private boolean isDownSampling; @Value("${continuous_data_function}") - private String continuous_data_function; + private String continuousDataFunction; @Value("${discrete_data_function}") - private String discrete_data_function; + private String discreteDataFunction; @Value("${interval}") private String interval; @@ -80,21 +78,37 @@ public class BasicDaoImpl implements BasicDao { public List<String> getMetaData() { ConnectionCallback<Object> connectionCallback = new ConnectionCallback<Object>() { public Object doInConnection(Connection connection) throws SQLException { - Statement statement = connection.createStatement(); - statement.execute("show timeseries root.*"); - ResultSet resultSet = statement.getResultSet(); - logger.info("Start to get timeseries"); - List<String> columnsName = new ArrayList<>(); - while (resultSet.next()) { - String timeseries = resultSet.getString(1); - columnsName.add(timeseries.substring(5)); + try (Statement statement = connection.createStatement()) { + statement.execute("show timeseries root.*"); + try(ResultSet resultSet = statement.getResultSet()) { + logger.info("Start to get timeseries"); + List<String> columnsName = new ArrayList<>(); + while (resultSet.next()) { + String timeseries = resultSet.getString(1); + columnsName.add(timeseries.substring(5)); + } + return columnsName; + } } - return columnsName; } }; return (List<String>) jdbcTemplate.execute(connectionCallback); } + public static void setTimestampRadioX(String timestampPrecision) { + switch (timestampPrecision) { + case "us": + timestampRadioX = 1000; + break; + case "ns": + timestampRadioX = 1000_000; + break; + default: + timestampRadioX = 1; + } + logger.info("Use timestamp precision {}", timestampPrecision); + } + /** * Note: If the query fails this could be due to AGGREGATIION like AVG on booleayn field. * Thus, we then do a retry with FIRST aggregation. @@ -102,27 +116,17 @@ public class BasicDaoImpl implements BasicDao { */ @Override public List<TimeValues> querySeries(String s, Pair<ZonedDateTime, ZonedDateTime> timeRange) { - if (TIMESTAMP_RADIX == -1) { - switch (timestampPrecision) { - case "us": - TIMESTAMP_RADIX = 1000; - break; - case "ns": - TIMESTAMP_RADIX = 1000_000; - break; - default: - TIMESTAMP_RADIX = 1; - } - logger.info("Use timestamp precision {}", timestampPrecision); + if (timestampRadioX == -1) { + setTimestampRadioX(timestampPrecision); } try { - return querySeriesInternal(s, timeRange, continuous_data_function); + return querySeriesInternal(s, timeRange, continuousDataFunction); } catch (Exception e) { - // Try it with discrete_data_function + // Try it with discreteDataFunction try { - return querySeriesInternal(s, timeRange, discrete_data_function); + return querySeriesInternal(s, timeRange, discreteDataFunction); } catch (Exception e2) { - logger.warn("Even {} query did not succeed, returning NULL now", discrete_data_function, e2); + logger.warn("Even {} query did not succeed, returning NULL now", discreteDataFunction, e2); return Collections.emptyList(); } } @@ -135,7 +139,7 @@ public class BasicDaoImpl implements BasicDao { List<TimeValues> rows = null; String sql = String.format("SELECT %s FROM root.%s WHERE time > %d and time < %d", s.substring(s.lastIndexOf('.') + 1), s.substring(0, s.lastIndexOf('.')), - from * TIMESTAMP_RADIX, to * TIMESTAMP_RADIX); + from * timestampRadioX, to * timestampRadioX); String columnName = "root." + s; if (isDownSampling && (hours > 1)) { if (hours < 30 * 24 && hours > 24) { @@ -147,8 +151,8 @@ public class BasicDaoImpl implements BasicDao { "SELECT " + function + "(%s) FROM root.%s WHERE time > %d and time < %d group by ([%d, %d),%s)", s.substring(s.lastIndexOf('.') + 1), s.substring(0, s.lastIndexOf('.')), - from * TIMESTAMP_RADIX, to * TIMESTAMP_RADIX, - from * TIMESTAMP_RADIX, to * TIMESTAMP_RADIX, interval); + from * timestampRadioX, to * timestampRadioX, + from * timestampRadioX, to * timestampRadioX, interval); columnName = function + "(root." + s + ")"; } logger.info(sql); @@ -175,7 +179,7 @@ public class BasicDaoImpl implements BasicDao { @Override public TimeValues mapRow(ResultSet resultSet, int i) throws SQLException { TimeValues tv = new TimeValues(); - tv.setTime(resultSet.getLong("Time") / TIMESTAMP_RADIX); + tv.setTime(resultSet.getLong("Time") / timestampRadioX); String valueString = resultSet.getString(columnName); if (valueString != null) { try {
