AE86 пре 2 година
родитељ
комит
b8ab5e6e79

+ 10 - 7
dbsyncer-common/src/main/java/org/dbsyncer/common/util/DateFormatUtil.java

@@ -21,6 +21,10 @@ public abstract class DateFormatUtil {
      * HH:mm:ss
      */
     public static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm:ss");
+    /**
+     * 默认时区
+     */
+    private static final ZoneId zoneId = ZoneId.systemDefault();
 
     private static final DateTimeFormatter TIME_TZ_FORMAT = new DateTimeFormatterBuilder()
             .append(DateTimeFormatter.ISO_LOCAL_TIME)
@@ -64,14 +68,18 @@ public abstract class DateFormatUtil {
         return date.toLocalDate().format(DATE_FORMATTER);
     }
 
-    public static String timestampToString(Timestamp timestamp) {
-        return timestamp.toLocalDateTime().format(CHINESE_STANDARD_TIME_FORMATTER);
+    public static String dateToString(java.util.Date date) {
+        return date.toInstant().atZone(zoneId).toLocalDateTime().format(CHINESE_STANDARD_TIME_FORMATTER);
     }
 
     public static Date stringToDate(String s) {
         return Date.valueOf(LocalDate.parse(s, DATE_FORMATTER));
     }
 
+    public static String timestampToString(Timestamp timestamp) {
+        return timestamp.toLocalDateTime().format(CHINESE_STANDARD_TIME_FORMATTER);
+    }
+
     public static LocalTime stringToLocalTime(String s) {
         return LocalTime.parse(s, CHINESE_STANDARD_TIME_FORMATTER);
     }
@@ -93,9 +101,4 @@ public abstract class DateFormatUtil {
         return OffsetDateTime.from(parsedTimestamp).withOffsetSameInstant(ZoneOffset.UTC);
     }
 
-    private static ZoneId zoneId = ZoneId.systemDefault();
-
-    public static String dateToChineseStandardTimeString(java.util.Date date) {
-        return date.toInstant().atZone(zoneId).toLocalDateTime().format(CHINESE_STANDARD_TIME_FORMATTER);
-    }
 }

+ 12 - 2
dbsyncer-connector/src/main/java/org/dbsyncer/connector/database/setter/TimestampSetter.java

@@ -1,5 +1,6 @@
 package org.dbsyncer.connector.database.setter;
 
+import org.dbsyncer.connector.ConnectorException;
 import org.dbsyncer.connector.database.AbstractSetter;
 
 import java.sql.Date;
@@ -21,12 +22,21 @@ public class TimestampSetter extends AbstractSetter<Timestamp> {
             Date date = (Date) val;
             ps.setTimestamp(i, new Timestamp(date.getTime()));
             return;
-        } else if (val instanceof LocalDateTime) {
+        }
+
+        if (val instanceof LocalDateTime) {
             LocalDateTime dateTime = (LocalDateTime) val;
             ps.setTimestamp(i, Timestamp.valueOf(dateTime));
             return;
         }
-        ps.setTimestamp(i, Timestamp.valueOf(String.valueOf(val)));
+
+        if (val instanceof String) {
+            String s = (String) val;
+            ps.setTimestamp(i, Timestamp.valueOf(s));
+            return;
+        }
+
+        throw new ConnectorException(String.format("TimestampSetter can not find type [%s], val [%s]", type, val));
     }
 
 }

+ 14 - 7
dbsyncer-connector/src/main/java/org/dbsyncer/connector/database/setter/VarcharSetter.java

@@ -1,6 +1,7 @@
 package org.dbsyncer.connector.database.setter;
 
 import org.dbsyncer.common.util.DateFormatUtil;
+import org.dbsyncer.connector.ConnectorException;
 import org.dbsyncer.connector.database.AbstractSetter;
 
 import java.sql.PreparedStatement;
@@ -22,18 +23,24 @@ public class VarcharSetter extends AbstractSetter<String> {
         if (val instanceof byte[]) {
             ps.setString(i, new String((byte[]) val));
             return;
-        } else if (val instanceof LocalDateTime) {
+        }
+
+        // TODO 1.2.0迭代 dbs将统一schema规范,统一转换处理,减少case
+        if (val instanceof LocalDateTime) {
             ps.setString(i, ((LocalDateTime) val).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
             return;
-        } else if (val instanceof LocalDate) {
+        }
+
+        if (val instanceof LocalDate) {
             ps.setString(i, ((LocalDate) val).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
             return;
-        } else if (val instanceof Date) {
-            ps.setString(i, DateFormatUtil.dateToChineseStandardTimeString((Date) val));
+        }
+
+        if (val instanceof Date) {
+            ps.setString(i, DateFormatUtil.dateToString((Date) val));
             return;
-        } else {
-            ps.setString(i, val.toString());
         }
-//        throw new ConnectorException(String.format("VarcharSetter can not find type [%s], val [%s]", type, val));
+
+        throw new ConnectorException(String.format("VarcharSetter can not find type [%s], val [%s]", type, val));
     }
 }