From a002e2b79664f7e6db645c2a7703b1b7ebaa41de Mon Sep 17 00:00:00 2001 From: v-zhangjc9 Date: Tue, 26 Mar 2024 11:16:02 +0800 Subject: [PATCH] =?UTF-8?q?refactor(sync):=20double=20precision=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E6=98=A0=E5=B0=84=E6=94=B9=E4=B8=BAdouble?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sync/functions/type/TypeConverterV2.java | 4 +- .../service/sync/TypeConvertTest.java | 46 +++++++++---------- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/utils/sync/src/main/java/com/lanyuanxiaoyao/service/sync/functions/type/TypeConverterV2.java b/utils/sync/src/main/java/com/lanyuanxiaoyao/service/sync/functions/type/TypeConverterV2.java index aa38bba..33197e4 100644 --- a/utils/sync/src/main/java/com/lanyuanxiaoyao/service/sync/functions/type/TypeConverterV2.java +++ b/utils/sync/src/main/java/com/lanyuanxiaoyao/service/sync/functions/type/TypeConverterV2.java @@ -48,9 +48,9 @@ public class TypeConverterV2 implements TypeConverter { private static final Pattern LONG_REGEX = Pattern.compile("^((int|bigint) unsigned)|((bigint|serial|long)(\\(\\d+\\))?)$"); private static final Pattern DATE_REGEX = Pattern.compile("^date|timestamp|timestamp without time zone|datetime|time$"); private static final Pattern FLOAT_REGEX = Pattern.compile("^float(\\(\\d+\\))?$"); - private static final Pattern DOUBLE_REGEX = Pattern.compile("^double(\\(\\d+\\))?$"); + private static final Pattern DOUBLE_REGEX = Pattern.compile("^(double precision)|double(\\(\\d+\\))?$"); private static final Pattern FIXED_REGEX = Pattern.compile("^(number|money|bigserial)(\\(\\d+\\))?$"); - private static final Pattern DECIMAL_REGEX = Pattern.compile("^(double precision)|(decimal(\\(\\s*\\d+\\s*(,\\s*\\d+\\s*)?\\))?)$"); + private static final Pattern DECIMAL_REGEX = Pattern.compile("^(decimal(\\(\\s*\\d+\\s*(,\\s*\\d+\\s*)?\\))?)$"); private static final Pattern NUMERIC_REGEX = Pattern.compile("^numeric(\\(\\s*\\d+\\s*(,\\s*\\d+\\s*)?\\))?$"); private static final Pattern STRING_REGEX = Pattern.compile("^(character varying|(long|medium)text)|((varchar|char|text|clob|binary|bit)(\\(\\d+\\))?)$"); private static final Pattern YYYYMMDD = Pattern.compile("\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}"); diff --git a/utils/sync/src/test/java/com/lanyuanxiaoyao/service/sync/TypeConvertTest.java b/utils/sync/src/test/java/com/lanyuanxiaoyao/service/sync/TypeConvertTest.java index 492364f..d955302 100644 --- a/utils/sync/src/test/java/com/lanyuanxiaoyao/service/sync/TypeConvertTest.java +++ b/utils/sync/src/test/java/com/lanyuanxiaoyao/service/sync/TypeConvertTest.java @@ -54,6 +54,7 @@ public class TypeConvertTest { // double assertEquals(NULLABLE_DOUBLE_SCHEMA, convertType.exec("test", "test", "double", 0L, null)); assertEquals(NULLABLE_DOUBLE_SCHEMA, convertType.exec("test", "test", "Double", 0L, null)); + assertEquals(NULLABLE_DOUBLE_SCHEMA, convertType.exec("test", "test", "double precision", 6L, null)); // date assertEquals(NULLABLE_STRING_SCHEMA, convertType.exec("test", "test", "date", 0L, null)); @@ -80,51 +81,50 @@ public class TypeConvertTest { assertEquals(NULLABLE_DECIMAL_SCHEMA("test", 6, 3), convertType.exec("test", "test", "decimal(6,3)", 6L, 3)); assertEquals(NULLABLE_DECIMAL_SCHEMA("test", 6, 6), convertType.exec("test", "test", "decimal(6)", 6L, null)); assertEquals(NULLABLE_DECIMAL_SCHEMA("test", 6, 6), convertType.exec("test", "test", "decimal", 6L, null)); - assertEquals(NULLABLE_DECIMAL_SCHEMA("test", 6, 6), convertType.exec("test", "test", "double precision", 6L, null)); assertEquals(NULLABLE_DECIMAL_SCHEMA("test", 2, 1), convertType.exec("test", "test", "numeric(2,1)", 2L, 1)); assertEquals(NULLABLE_DECIMAL_SCHEMA("test", 2, 1), convertType.exec("test", "test", "numeric", 2L, 1)); } @Test public void testConvertValue() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { - Executor convertValue = new Executor("covertValue", Schema.class, Object.class); + Executor convertValue = new Executor("covertValue", Schema.class, String.class, Object.class); // null - assertNull(convertValue.exec(NULLABLE_BOOLEAN_SCHEMA, null)); + assertNull(convertValue.exec(NULLABLE_BOOLEAN_SCHEMA, "test", null)); // boolean - assertEquals(true, convertValue.exec(NULLABLE_BOOLEAN_SCHEMA, "true")); - assertEquals(false, convertValue.exec(NULLABLE_BOOLEAN_SCHEMA, "false")); - assertEquals(false, convertValue.exec(NULLABLE_BOOLEAN_SCHEMA, "1")); - assertEquals(false, convertValue.exec(NULLABLE_BOOLEAN_SCHEMA, "hello")); + assertEquals(true, convertValue.exec(NULLABLE_BOOLEAN_SCHEMA, "test", "true")); + assertEquals(false, convertValue.exec(NULLABLE_BOOLEAN_SCHEMA, "test", "false")); + assertEquals(false, convertValue.exec(NULLABLE_BOOLEAN_SCHEMA, "test", "1")); + assertEquals(false, convertValue.exec(NULLABLE_BOOLEAN_SCHEMA, "test", "hello")); // int - assertEquals(1, convertValue.exec(NULLABLE_INT_SCHEMA, "1")); - assertEquals(10, convertValue.exec(NULLABLE_INT_SCHEMA, "10")); - Assertions.assertThrows(InvocationTargetException.class, () -> convertValue.exec(NULLABLE_INT_SCHEMA, "10.0")); + assertEquals(1, convertValue.exec(NULLABLE_INT_SCHEMA, "test", "1")); + assertEquals(10, convertValue.exec(NULLABLE_INT_SCHEMA, "test", "10")); + Assertions.assertThrows(Exception.class, () -> convertValue.exec(NULLABLE_INT_SCHEMA, "test", "10.0")); // long - assertEquals(1L, convertValue.exec(NULLABLE_LONG_SCHEMA, "1")); - assertEquals(10L, convertValue.exec(NULLABLE_LONG_SCHEMA, "10")); - Assertions.assertThrows(InvocationTargetException.class, () -> convertValue.exec(NULLABLE_LONG_SCHEMA, "10.0")); + assertEquals(1L, convertValue.exec(NULLABLE_LONG_SCHEMA, "test", "1")); + assertEquals(10L, convertValue.exec(NULLABLE_LONG_SCHEMA, "test", "10")); + Assertions.assertThrows(Exception.class, () -> convertValue.exec(NULLABLE_LONG_SCHEMA, "test", "10.0")); // float - assertEquals(1.0f, convertValue.exec(NULLABLE_FLOAT_SCHEMA, "1.0")); - assertEquals(10.0f, convertValue.exec(NULLABLE_FLOAT_SCHEMA, "10.0")); - assertEquals(100f, convertValue.exec(NULLABLE_FLOAT_SCHEMA, "100")); + assertEquals(1.0f, convertValue.exec(NULLABLE_FLOAT_SCHEMA, "test", "1.0")); + assertEquals(10.0f, convertValue.exec(NULLABLE_FLOAT_SCHEMA, "test", "10.0")); + assertEquals(100f, convertValue.exec(NULLABLE_FLOAT_SCHEMA, "test", "100")); // double - assertEquals(1.0, convertValue.exec(NULLABLE_DOUBLE_SCHEMA, "1.0")); - assertEquals(100d, convertValue.exec(NULLABLE_DOUBLE_SCHEMA, "100")); + assertEquals(1.0, convertValue.exec(NULLABLE_DOUBLE_SCHEMA, "test", "1.0")); + assertEquals(100d, convertValue.exec(NULLABLE_DOUBLE_SCHEMA, "test", "100")); // string - assertEquals(StringData.fromString("2020-10-10 01:01:01"), convertValue.exec(NULLABLE_STRING_SCHEMA, "2020-10-10 01:01:01")); - assertEquals(StringData.fromString("123"), convertValue.exec(NULLABLE_STRING_SCHEMA, "123")); - assertEquals(StringData.fromString("123.456"), convertValue.exec(NULLABLE_STRING_SCHEMA, "123.456")); + assertEquals(StringData.fromString("2020-10-10 01:01:01"), convertValue.exec(NULLABLE_STRING_SCHEMA, "test", "2020-10-10 01:01:01")); + assertEquals(StringData.fromString("123"), convertValue.exec(NULLABLE_STRING_SCHEMA, "test", "123")); + assertEquals(StringData.fromString("123.456"), convertValue.exec(NULLABLE_STRING_SCHEMA, "test", "123.456")); // decimal - assertEquals(DecimalData.fromBigDecimal(new BigDecimal("123.0"), 10, 0), convertValue.exec(NULLABLE_DECIMAL_SCHEMA("test", 10, 0), "123.0")); - assertEquals(DecimalData.fromBigDecimal(new BigDecimal("123456789987654321.123456789987654321"), 37, 18), convertValue.exec(NULLABLE_DECIMAL_SCHEMA("test", 37, 18), "123456789987654321.123456789987654321")); + assertEquals(DecimalData.fromBigDecimal(new BigDecimal("123.0"), 10, 0), convertValue.exec(NULLABLE_DECIMAL_SCHEMA("test", 10, 0), "test", "123.0")); + assertEquals(DecimalData.fromBigDecimal(new BigDecimal("123456789987654321.123456789987654321"), 37, 18), convertValue.exec(NULLABLE_DECIMAL_SCHEMA("test", 37, 18), "test", "123456789987654321.123456789987654321")); } private static final class Executor {