From 81419b905251c447ef4b50bdc4ae7a4558d2d22c Mon Sep 17 00:00:00 2001 From: mystarry-sky Date: Wed, 7 Feb 2024 17:25:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Ddouble=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=A7=A3=E6=9E=90=E5=BC=82=E5=B8=B8=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../check/load/AbstractCheckLoader.java | 11 +- .../check/AbstractCheckDiffResultBuilder.java | 4 +- .../common/entry/memory/BaseMonitor.java | 27 ---- .../common/entry/memory/CpuInfo.java | 2 +- .../common/entry/memory/GcInfo.java | 2 +- .../common/entry/memory/JvmInfo.java | 2 +- .../common/entry/memory/MemoryInfo.java | 2 +- .../common/entry/memory/OsInfo.java | 2 +- .../common/entry/memory/ThreadInfo.java | 2 +- .../extract/data/BaseDataService.java | 15 +- .../access/AbstractDataAccessService.java | 22 +-- .../extract/service/BaseRepairStatement.java | 10 +- .../slice/process/AbstractProcessor.java | 7 +- .../slice/process/AbstractSliceProcessor.java | 10 +- .../slice/process/AbstractTableProcessor.java | 37 ++++- .../extract/task/MysqlResultSetHandler.java | 4 +- .../task/OpenGaussCsvResultSetHandler.java | 2 +- .../task/OpenGaussResultSetHandler.java | 12 +- .../extract/task/OracleResultSetHandler.java | 6 +- .../extract/task/ResultSetHandler.java | 151 ++++++++++++++---- .../src/main/resources/application.yml | 1 + 21 files changed, 209 insertions(+), 122 deletions(-) delete mode 100644 datachecker-common/src/main/java/org/opengauss/datachecker/common/entry/memory/BaseMonitor.java diff --git a/datachecker-check/src/main/java/org/opengauss/datachecker/check/load/AbstractCheckLoader.java b/datachecker-check/src/main/java/org/opengauss/datachecker/check/load/AbstractCheckLoader.java index c256f0e..c382f90 100644 --- a/datachecker-check/src/main/java/org/opengauss/datachecker/check/load/AbstractCheckLoader.java +++ b/datachecker-check/src/main/java/org/opengauss/datachecker/check/load/AbstractCheckLoader.java @@ -38,8 +38,7 @@ public abstract class AbstractCheckLoader implements CheckLoader { protected int maxRetryTimes; @Value("${data.check.retry-interval-times}") protected int retryIntervalTimes; - @Resource - private CheckEnvironment checkEnvironment; + @Resource private ShutdownService shutdownService; @Resource @@ -47,14 +46,6 @@ public abstract class AbstractCheckLoader implements CheckLoader { @Resource private CustomEventHistory customEventHistory; - /** - * Verification environment global information loader - * - * @param checkEnvironment checkEnvironment - */ - @Override - public abstract void load(CheckEnvironment checkEnvironment); - /** * shutdown app * diff --git a/datachecker-check/src/main/java/org/opengauss/datachecker/check/modules/check/AbstractCheckDiffResultBuilder.java b/datachecker-check/src/main/java/org/opengauss/datachecker/check/modules/check/AbstractCheckDiffResultBuilder.java index b058620..024f503 100644 --- a/datachecker-check/src/main/java/org/opengauss/datachecker/check/modules/check/AbstractCheckDiffResultBuilder.java +++ b/datachecker-check/src/main/java/org/opengauss/datachecker/check/modules/check/AbstractCheckDiffResultBuilder.java @@ -72,7 +72,7 @@ public abstract class AbstractCheckDiffResultBuilder columnsMetas) { - StringBuffer buffer = new StringBuffer(); + StringBuilder buffer = new StringBuilder(); columnsMetas.sort(Comparator.comparing(ColumnsMetaData::getOrdinalPosition)); - columnsMetas.forEach(column -> { - buffer.append(column.getColumnName() - .toLowerCase(Locale.ENGLISH)) - .append(column.getOrdinalPosition()); - }); + columnsMetas.forEach(column -> buffer.append(column.getColumnName() + .toLowerCase(Locale.ENGLISH)) + .append(column.getOrdinalPosition())); return HASH_UTIL.hashBytes(buffer.toString()); } @@ -285,7 +283,8 @@ public class BaseDataService { .filter(mode -> !mode.equalsIgnoreCase( ConfigConstants.SQL_MODE_NAME_PAD_CHAR_TO_FULL_LENGTH)) .collect(Collectors.joining(",")); - if (ConfigCache.getBooleanValue(ConfigConstants.SQL_MODE_PAD_CHAR_TO_FULL_LENGTH)) { + boolean isPadCharFull = ConfigCache.getBooleanValue(ConfigConstants.SQL_MODE_PAD_CHAR_TO_FULL_LENGTH); + if (isPadCharFull) { newSqlMode += ConfigConstants.SQL_MODE_NAME_PAD_CHAR_TO_FULL_LENGTH; } boolean isForceRefreshConnectionSqlMode = sqlMode.length() != newSqlMode.length(); diff --git a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/data/access/AbstractDataAccessService.java b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/data/access/AbstractDataAccessService.java index c67057a..51fa028 100644 --- a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/data/access/AbstractDataAccessService.java +++ b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/data/access/AbstractDataAccessService.java @@ -197,25 +197,9 @@ public abstract class AbstractDataAccessService implements DataAccessService { * @return tableMetadata */ protected List wrapperTableMetadata(List list) { - list.stream() - .forEach(meta -> { - meta.setDataBaseType(properties.getDatabaseType()) - .setEndpoint(properties.getEndpoint()) - .setOgCompatibilityB(isOgCompatibilityB); - }); + list.forEach(meta -> meta.setDataBaseType(properties.getDatabaseType()) + .setEndpoint(properties.getEndpoint()) + .setOgCompatibilityB(isOgCompatibilityB)); return list; } - - private List queryByCondition(String sql, Map paramMap, RowMapper rowMapper) { - LocalDateTime start = LocalDateTime.now(); - NamedParameterJdbcTemplate jdbc = new NamedParameterJdbcTemplate(jdbcTemplate); - List results = jdbc.query(sql, paramMap, rowMapper); - log.debug("query sql:<{}> size:{} cost:{}", sql, results.size(), Duration.between(start, LocalDateTime.now()) - .toSeconds()); - return results; - } - - protected String getSql(DataBaseMeta type) { - return null; - } } diff --git a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/service/BaseRepairStatement.java b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/service/BaseRepairStatement.java index f56cfa6..9b1692e 100644 --- a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/service/BaseRepairStatement.java +++ b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/service/BaseRepairStatement.java @@ -101,9 +101,7 @@ public abstract class BaseRepairStatement implements RepairStatement { final List primaryMetas = metadata.getPrimaryMetas(); List resultList = new ArrayList<>(); if (primaryMetas.size() == 1) { - final ColumnsMetaData primaryMeta = primaryMetas.stream() - .findFirst() - .get(); + final ColumnsMetaData primaryMeta = primaryMetas.get(0); iterator.forEachRemaining(compositeKey -> { DeleteDmlBuilder deleteDmlBuilder = new DeleteDmlBuilder(DataBaseType.OG, repairEntry.isOgCompatibility()); @@ -130,9 +128,7 @@ public abstract class BaseRepairStatement implements RepairStatement { List primaryMetas) { final List primaryKeys = getCompositeKeyColumns(primaryMetas); Map> map = new HashMap<>(InitialCapacity.CAPACITY_16); - columnValues.forEach(values -> { - map.put(getCompositeKey(values, primaryKeys), values); - }); + columnValues.forEach(values -> map.put(getCompositeKey(values, primaryKeys), values)); return map; } @@ -144,7 +140,7 @@ public abstract class BaseRepairStatement implements RepairStatement { private String getCompositeKey(Map columnValues, List primaryKeys) { return primaryKeys.stream() - .map(key -> columnValues.get(key)) + .map(columnValues::get) .collect(Collectors.joining(ExtConstants.PRIMARY_DELIMITER)); } diff --git a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/slice/process/AbstractProcessor.java b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/slice/process/AbstractProcessor.java index 0af9628..2f9cc2f 100644 --- a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/slice/process/AbstractProcessor.java +++ b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/slice/process/AbstractProcessor.java @@ -33,7 +33,12 @@ public abstract class AbstractProcessor implements SliceProcessor { protected SliceProcessorContext context; protected int objectSizeExpansionFactor; - public AbstractProcessor(SliceProcessorContext context) { + /** + * AbstractProcessor + * + * @param context context + */ + protected AbstractProcessor(SliceProcessorContext context) { this.context = context; this.objectSizeExpansionFactor = ConfigCache.getIntValue(ConfigConstants.OBJECT_SIZE_EXPANSION_FACTOR); } diff --git a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/slice/process/AbstractSliceProcessor.java b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/slice/process/AbstractSliceProcessor.java index 04ea1e2..f849f14 100644 --- a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/slice/process/AbstractSliceProcessor.java +++ b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/slice/process/AbstractSliceProcessor.java @@ -43,7 +43,13 @@ public abstract class AbstractSliceProcessor extends AbstractProcessor { protected static final Logger log = LogUtils.getBusinessLogger(); protected SliceVo slice; - public AbstractSliceProcessor(SliceVo slice, SliceProcessorContext context) { + /** + * AbstractSliceProcessor + * + * @param slice slice + * @param context context + */ + protected AbstractSliceProcessor(SliceVo slice, SliceProcessorContext context) { super(context); this.slice = slice; } @@ -133,7 +139,7 @@ public abstract class AbstractSliceProcessor extends AbstractProcessor { return sendResult.getRecordMetadata() .offset(); } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); + log.warn("get record offset InterruptedException or ExecutionException"); } return 0; } diff --git a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/slice/process/AbstractTableProcessor.java b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/slice/process/AbstractTableProcessor.java index 11088ed..929c308 100644 --- a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/slice/process/AbstractTableProcessor.java +++ b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/slice/process/AbstractTableProcessor.java @@ -38,12 +38,23 @@ public abstract class AbstractTableProcessor extends AbstractProcessor { protected String table; protected TableMetadata tableMetadata; - public AbstractTableProcessor(String table, SliceProcessorContext context) { + /** + * AbstractTableProcessor + * + * @param table table + * @param context context + */ + protected AbstractTableProcessor(String table, SliceProcessorContext context) { super(context); this.table = table; this.tableMetadata = context.getTableMetaData(table); } + /** + * createTableSliceExtend + * + * @return SliceExtend + */ protected SliceExtend createTableSliceExtend() { SliceExtend tableSliceExtend = new SliceExtend(); tableSliceExtend.setName(table); @@ -52,23 +63,47 @@ public abstract class AbstractTableProcessor extends AbstractProcessor { tableSliceExtend.setStatus(SliceStatus.codeOf(ConfigCache.getEndPoint())); return tableSliceExtend; } + + /** + * initTableMetadata + */ protected void initTableMetadata() { this.tableMetadata = context.getTableMetaData(table); Objects.requireNonNull(tableMetadata, "table metadata " + table + " must not be null"); } + /** + * getFetchSize + * + * @return fetch size + */ protected int getFetchSize() { return ConfigCache.getIntValue(ConfigConstants.FETCH_SIZE); } + /** + * getMaximumTableSliceSize + * + * @return MaximumTableSliceSize + */ protected int getMaximumTableSliceSize() { return ConfigCache.getIntValue(ConfigConstants.MAXIMUM_TABLE_SLICE_SIZE); } + /** + * getQueryDop + * + * @return QueryDop + */ protected int getQueryDop() { return ConfigCache.getIntValue(ConfigConstants.QUERY_DOP); } + /** + * noTableSlice + * + * @return boolean + */ public boolean noTableSlice() { return tableMetadata.getTableRows() < getMaximumTableSliceSize() || getQueryDop() == 1; } diff --git a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/MysqlResultSetHandler.java b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/MysqlResultSetHandler.java index 0e5863b..d4bbb5f 100644 --- a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/MysqlResultSetHandler.java +++ b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/MysqlResultSetHandler.java @@ -91,7 +91,7 @@ public class MysqlResultSetHandler extends ResultSetHandler { if (scale > 0 || (precision != 12 && scale == 0)) { return floatingPointNumberToString(resultSet, columnLabel, scale); } else { - return floatNumberToString(resultSet, columnLabel); + return numericFloatNumberToString(resultSet, columnLabel); } } else if (doubleTypeList.contains(mysqlType)) { int precision = rsmd.getPrecision(columnIdx); @@ -99,7 +99,7 @@ public class MysqlResultSetHandler extends ResultSetHandler { if (scale > 0 || (precision != 22 && scale == 0)) { return floatingPointNumberToString(resultSet, columnLabel, scale); } else { - return floatNumberToString(resultSet, columnLabel); + return doubleNumberToString(resultSet, columnLabel); } } else if (isDecimal(mysqlType)) { int precision = rsmd.getPrecision(columnIdx); diff --git a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/OpenGaussCsvResultSetHandler.java b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/OpenGaussCsvResultSetHandler.java index 5225b48..2fb7edd 100644 --- a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/OpenGaussCsvResultSetHandler.java +++ b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/OpenGaussCsvResultSetHandler.java @@ -33,7 +33,7 @@ import java.util.Objects; public class OpenGaussCsvResultSetHandler extends OpenGaussResultSetHandler { @Override - protected String floatNumberToString(@NonNull ResultSet resultSet, String columnLabel) throws SQLException { + protected String numericFloatNumberToString(@NonNull ResultSet resultSet, String columnLabel) throws SQLException { String floatValue = resultSet.getString(columnLabel); if (resultSet.wasNull()) { return NULL; diff --git a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/OpenGaussResultSetHandler.java b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/OpenGaussResultSetHandler.java index 7f8f705..52b71af 100644 --- a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/OpenGaussResultSetHandler.java +++ b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/OpenGaussResultSetHandler.java @@ -34,7 +34,7 @@ import java.util.concurrent.ConcurrentHashMap; * @since :11 */ public class OpenGaussResultSetHandler extends ResultSetHandler { - protected final Map typeHandlers = new ConcurrentHashMap<>(); + private static final Map typeHandlers = new ConcurrentHashMap<>(); { // byte binary blob @@ -105,8 +105,8 @@ public class OpenGaussResultSetHandler extends ResultSetHandler { */ protected String binaryToString(ResultSet rs, String columnLabel) throws SQLException { String binary = rs.getString(columnLabel); - return rs.wasNull() ? NULL : Objects.isNull(binary) ? NULL : binary.substring(2) - .toUpperCase(Locale.ENGLISH); + return Objects.isNull(binary) ? NULL : binary.substring(2) + .toUpperCase(Locale.ENGLISH); } /** @@ -158,7 +158,7 @@ public class OpenGaussResultSetHandler extends ResultSetHandler { if (precision > scale && scale > 0) { return floatingPointNumberToString(resultSet, columnLabel, scale); } else { - return floatNumberToString(resultSet, columnLabel); + return numericFloatNumberToString(resultSet, columnLabel); } } else if (OpenGaussType.isBigInteger(columnTypeName)) { return numeric0ToString(resultSet, columnLabel); @@ -179,13 +179,13 @@ public class OpenGaussResultSetHandler extends ResultSetHandler { int scale = rsmd.getScale(columnIdx); String columnLabel = rsmd.getColumnLabel(columnIdx); if (isNumericDefault(precision, scale)) { - return floatNumberToString(resultSet, columnLabel); + return numericFloatNumberToString(resultSet, columnLabel); } else if (isNumeric0(precision, scale)) { return numeric0ToString(resultSet, columnLabel); } else if (isNumericFloat(precision, scale)) { return floatingPointNumberToString(resultSet, columnLabel, scale); } else { - return floatNumberToString(resultSet, columnLabel); + return numericFloatNumberToString(resultSet, columnLabel); } } diff --git a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/OracleResultSetHandler.java b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/OracleResultSetHandler.java index 010d2dd..ef80952 100644 --- a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/OracleResultSetHandler.java +++ b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/OracleResultSetHandler.java @@ -91,7 +91,7 @@ public class OracleResultSetHandler extends ResultSetHandler { sb.append(line); } } catch (IOException io) { - log.error("read clobToString error"); + LOG.error("read clobToString error"); } finally { closeBufferedReader(bf); closeReader(reader); @@ -159,7 +159,7 @@ public class OracleResultSetHandler extends ResultSetHandler { bf.close(); } } catch (IOException e) { - log.error("close BufferedReader error"); + LOG.error("close BufferedReader error"); } } @@ -169,7 +169,7 @@ public class OracleResultSetHandler extends ResultSetHandler { reader.close(); } } catch (IOException e) { - log.error("close Reader error"); + LOG.error("close Reader error"); } } } diff --git a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/ResultSetHandler.java b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/ResultSetHandler.java index 9d6dd4d..8138acc 100644 --- a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/ResultSetHandler.java +++ b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/ResultSetHandler.java @@ -20,9 +20,7 @@ import org.opengauss.datachecker.common.util.HexUtil; import org.opengauss.datachecker.common.util.LogUtils; import org.springframework.lang.NonNull; -import java.io.IOException; import java.math.BigDecimal; -import java.sql.Blob; import java.sql.Date; import java.sql.ResultSet; import java.sql.ResultSetMetaData; @@ -48,10 +46,10 @@ import java.util.stream.IntStream; **/ public abstract class ResultSetHandler { private static Map decimalFormatCache = new HashMap<>(); - private static final String decimal_format_pattern_start = "0."; - private static final String decimal_append_zero = "0"; + private static final String DECIMAL_FORMAT_PATTERN_START = "0."; + private static final String DECIMAL_APPEND_ZERO = "0"; - protected static final Logger log = LogUtils.getLogger(); + protected static final Logger LOG = LogUtils.getLogger(); protected static final DateTimeFormatter DATE = DateTimeFormatter.ofPattern("yyyy-MM-dd"); protected static final DateTimeFormatter YEAR = DateTimeFormatter.ofPattern("yyyy"); protected static final DateTimeFormatter TIME = DateTimeFormatter.ofPattern("HH:mm:ss"); @@ -66,11 +64,11 @@ public abstract class ResultSetHandler { protected static final int NUMERIC_PRECISION_0 = 0; protected final boolean supplyZero; - public ResultSetHandler() { + protected ResultSetHandler() { this.supplyZero = false; } - public ResultSetHandler(Boolean supplyZero) { + protected ResultSetHandler(Boolean supplyZero) { this.supplyZero = supplyZero; } @@ -93,15 +91,23 @@ public abstract class ResultSetHandler { columnLabel = rsmd.getColumnLabel(columnIdx); values.put(columnLabel, convert(resultSet, columnIdx, rsmd)); } catch (SQLException ex) { - log.error(" Convert data [{}:{}] {} error ", tableName, columnLabel, ex.getMessage(), ex); + LOG.error(" Convert data [{}:{}] {} error ", tableName, columnLabel, ex.getMessage(), ex); } }); } catch (SQLException ex) { - log.error(" parse data metadata information exception", ex); + LOG.error(" parse data metadata information exception", ex); } return values; } + /** + * fixedLenCharToString + * + * @param rs rs + * @param columnLabel columnLabel + * @return result + * @throws SQLException SQLException + */ protected String fixedLenCharToString(ResultSet rs, String columnLabel) throws SQLException { return rs.getString(columnLabel); } @@ -118,6 +124,15 @@ public abstract class ResultSetHandler { return putOneResultSetToMap(tableName, rsmd, resultSet, new TreeMap<>()); } + /** + * convert + * + * @param resultSet resultSet + * @param columnIdx columnIdx + * @param rsmd rsmd + * @return result + * @throws SQLException SQLException + */ protected abstract String convert(ResultSet resultSet, int columnIdx, ResultSetMetaData rsmd) throws SQLException; /** @@ -127,7 +142,7 @@ public abstract class ResultSetHandler { * @param columnLabel columnLabel * @param scale scale * @return data of string - * @throws SQLException + * @throws SQLException SQLException */ protected String floatingPointNumberToString(@NonNull ResultSet resultSet, String columnLabel, Integer scale) throws SQLException { @@ -145,9 +160,9 @@ public abstract class ResultSetHandler { } else { String pattern; if (scale == 0) { - pattern = decimal_append_zero; + pattern = DECIMAL_APPEND_ZERO; } else { - pattern = decimal_format_pattern_start + decimal_append_zero.repeat(Math.max(0, scale)); + pattern = DECIMAL_FORMAT_PATTERN_START + DECIMAL_APPEND_ZERO.repeat(Math.max(0, scale)); } scaleFormatter = new DecimalFormat(pattern); decimalFormatCache.put(scale, scaleFormatter); @@ -162,7 +177,7 @@ public abstract class ResultSetHandler { * @param resultSet rs * @param columnLabel columnLabel * @return format - * @throws SQLException + * @throws SQLException SQLException */ protected String floatingPointNumberToString(@NonNull ResultSet resultSet, String columnLabel) throws SQLException { BigDecimal bigDecimal = resultSet.getBigDecimal(columnLabel); @@ -176,8 +191,36 @@ public abstract class ResultSetHandler { return value; } - protected String floatNumberToString(@NonNull ResultSet resultSet, String columnLabel) throws SQLException { - float floatValue = resultSet.getFloat(columnLabel); + /** + * numericFloatNumberToString + * + * @param resultSet resultSet + * @param columnLabel columnLabel + * @return result + * @throws SQLException SQLException + */ + protected String numericFloatNumberToString(@NonNull ResultSet resultSet, String columnLabel) throws SQLException { + BigDecimal floatValue = resultSet.getBigDecimal(columnLabel); + if (resultSet.wasNull()) { + return NULL; + } + String value = String.valueOf(floatValue.doubleValue()); + if (isScientificNotation(value)) { + return new BigDecimal(value).toPlainString(); + } + return value; + } + + /** + * doubleNumberToString + * + * @param resultSet resultSet + * @param columnLabel columnLabel + * @return result + * @throws SQLException SQLException + */ + protected String doubleNumberToString(@NonNull ResultSet resultSet, String columnLabel) throws SQLException { + double floatValue = resultSet.getDouble(columnLabel); if (resultSet.wasNull()) { return NULL; } @@ -188,26 +231,64 @@ public abstract class ResultSetHandler { return value; } + /** + * isScientificNotation + * + * @param value value + * @return boolean + */ protected boolean isScientificNotation(String value) { return value.contains("E") || value.contains("e"); } + /** + * numeric0ToString + * + * @param rs rs + * @param columnLabel columnLabel + * @return result + * @throws SQLException SQLException + */ protected String numeric0ToString(ResultSet rs, String columnLabel) throws SQLException { BigDecimal bigDecimal = rs.getBigDecimal(columnLabel); return Objects.isNull(bigDecimal) ? NULL : bigDecimal.toBigInteger() .toString(); } + /** + * getDateFormat + * + * @param resultSet resultSet + * @param columnLabel columnLabel + * @return result + * @throws SQLException SQLException + */ protected String getDateFormat(@NonNull ResultSet resultSet, String columnLabel) throws SQLException { final Date date = resultSet.getDate(columnLabel); return Objects.nonNull(date) ? DATE.format(date.toLocalDate()) : NULL; } + /** + * getTimeFormat + * + * @param resultSet resultSet + * @param columnLabel columnLabel + * @return result + * @throws SQLException SQLException + */ protected String getTimeFormat(@NonNull ResultSet resultSet, String columnLabel) throws SQLException { final Time time = resultSet.getTime(columnLabel); return Objects.nonNull(time) ? TIME.format(time.toLocalTime()) : NULL; } + /** + * getTimestampFormat + * + * @param resultSet resultSet + * @param columnLabel columnLabel + * @return result + * @throws SQLException SQLException + */ protected String getTimestampFormat(@NonNull ResultSet resultSet, String columnLabel) throws SQLException { final Timestamp timestamp = resultSet.getTimestamp(columnLabel, Calendar.getInstance(TimeZone.getTimeZone("GMT+8"))); @@ -219,31 +300,47 @@ public abstract class ResultSetHandler { TIMESTAMP.format(timestamp.toLocalDateTime()); } + /** + * getYearFormat + * + * @param resultSet resultSet + * @param columnLabel columnLabel + * @return result + * @throws SQLException SQLException + */ protected String getYearFormat(@NonNull ResultSet resultSet, String columnLabel) throws SQLException { final Date date = resultSet.getDate(columnLabel); return Objects.nonNull(date) ? YEAR.format(date.toLocalDate()) : NULL; } - protected String blobToString(Blob blob) throws SQLException, IOException { - if (Objects.isNull(blob)) { - return NULL; - } - return new String(blob.getBytes(1, (int) blob.length())); - } - + /** + * bytesToString + * + * @param bytes bytes + * @return result + */ protected String bytesToString(byte[] bytes) { return HexUtil.byteToHex(bytes); } - protected String trim(@NonNull ResultSet resultSet, String columnLabel) throws SQLException { - final String string = resultSet.getString(columnLabel); - return string == null ? NULL : string.stripTrailing(); - } - + /** + * isNumericFloat + * + * @param precision precision + * @param scale scale + * @return boolean + */ public static boolean isNumericFloat(int precision, int scale) { return precision > NUMERIC_PRECISION_0 && scale > NUMERIC_SCALE_0; } + /** + * isNumeric0 + * + * @param precision precision + * @param scale scale + * @return boolean + */ public static boolean isNumeric0(int precision, int scale) { return precision > NUMERIC_PRECISION_0 && scale == NUMERIC_SCALE_0; } diff --git a/datachecker-extract/src/main/resources/application.yml b/datachecker-extract/src/main/resources/application.yml index 43773e4..546365c 100644 --- a/datachecker-extract/src/main/resources/application.yml +++ b/datachecker-extract/src/main/resources/application.yml @@ -17,6 +17,7 @@ spring: retry-interval-times: 10000 maximum-topic-size: 30 maximum-table-slice-size: 100000 + extend-maximum-pool-size: 3 lifecycle: timeout-per-shutdown-phase: 5 kafka: -- Gitee