穿云 пре 2 месеци
родитељ
комит
efa7f12666
28 измењених фајлова са 195 додато и 106 уклоњено
  1. 0 8
      dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLBytesType.java
  2. 0 8
      dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLDateType.java
  3. 0 8
      dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLFloatType.java
  4. 0 8
      dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLIntType.java
  5. 0 12
      dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLLongType.java
  6. 0 8
      dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLShortType.java
  7. 6 2
      dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLStringType.java
  8. 0 8
      dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLTimeType.java
  9. 0 8
      dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLTimestampType.java
  10. 0 5
      dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleBytesType.java
  11. 0 5
      dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleDateType.java
  12. 0 5
      dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleFloatType.java
  13. 0 5
      dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleIntType.java
  14. 0 5
      dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleLongType.java
  15. 0 5
      dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleStringType.java
  16. 0 5
      dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleTimestampType.java
  17. 19 0
      dbsyncer-sdk/src/main/java/org/dbsyncer/sdk/schema/support/ByteType.java
  18. 13 0
      dbsyncer-sdk/src/main/java/org/dbsyncer/sdk/schema/support/BytesType.java
  19. 25 0
      dbsyncer-sdk/src/main/java/org/dbsyncer/sdk/schema/support/DateType.java
  20. 8 0
      dbsyncer-sdk/src/main/java/org/dbsyncer/sdk/schema/support/DecimalType.java
  21. 9 0
      dbsyncer-sdk/src/main/java/org/dbsyncer/sdk/schema/support/DoubleType.java
  22. 9 0
      dbsyncer-sdk/src/main/java/org/dbsyncer/sdk/schema/support/FloatType.java
  23. 18 0
      dbsyncer-sdk/src/main/java/org/dbsyncer/sdk/schema/support/IntType.java
  24. 18 0
      dbsyncer-sdk/src/main/java/org/dbsyncer/sdk/schema/support/LongType.java
  25. 9 0
      dbsyncer-sdk/src/main/java/org/dbsyncer/sdk/schema/support/ShortType.java
  26. 41 0
      dbsyncer-sdk/src/main/java/org/dbsyncer/sdk/schema/support/StringType.java
  27. 10 1
      dbsyncer-sdk/src/main/java/org/dbsyncer/sdk/schema/support/TimeType.java
  28. 10 0
      dbsyncer-sdk/src/main/java/org/dbsyncer/sdk/schema/support/TimestampType.java

+ 0 - 8
dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLBytesType.java

@@ -45,12 +45,4 @@ public final class MySQLBytesType extends BytesType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Object convert(Object val, Field field) {
-        if (val instanceof byte[]) {
-            return val;
-        }
-        return throwUnsupportedException(val, field);
-    }
-
 }

+ 0 - 8
dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLDateType.java

@@ -32,12 +32,4 @@ public final class MySQLDateType extends DateType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Object convert(Object val, Field field) {
-        if (val instanceof Date) {
-            return val;
-        }
-        return throwUnsupportedException(val, field);
-    }
-
 }

+ 0 - 8
dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLFloatType.java

@@ -42,12 +42,4 @@ public final class MySQLFloatType extends FloatType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Object convert(Object val, Field field) {
-        if (val instanceof Number) {
-            return ((Number) val).floatValue();
-        }
-        return throwUnsupportedException(val, field);
-    }
-
 }

+ 0 - 8
dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLIntType.java

@@ -54,12 +54,4 @@ public final class MySQLIntType extends IntType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Object convert(Object val, Field field) {
-        if (val instanceof Number) {
-            return ((Number) val).intValue();
-        }
-        return throwUnsupportedException(val, field);
-    }
-
 }

+ 0 - 12
dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLLongType.java

@@ -3,7 +3,6 @@
  */
 package org.dbsyncer.connector.mysql.schema.support;
 
-import org.dbsyncer.common.util.NumberUtil;
 import org.dbsyncer.sdk.model.Field;
 import org.dbsyncer.sdk.schema.support.LongType;
 
@@ -46,15 +45,4 @@ public final class MySQLLongType extends LongType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Object convert(Object val, Field field) {
-        if (val instanceof Number) {
-            return ((Number) val).longValue();
-        }
-        if (val instanceof String) {
-            return NumberUtil.toLong((String) val);
-        }
-        return throwUnsupportedException(val, field);
-    }
-
 }

+ 0 - 8
dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLShortType.java

@@ -46,12 +46,4 @@ public final class MySQLShortType extends ShortType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Object convert(Object val, Field field) {
-        if (val instanceof Number) {
-            return ((Number) val).shortValue();
-        }
-        return throwUnsupportedException(val, field);
-    }
-
 }

+ 6 - 2
dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLStringType.java

@@ -4,7 +4,11 @@
 package org.dbsyncer.connector.mysql.schema.support;
 
 import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.io.*;
+import com.vividsolutions.jts.io.ByteOrderValues;
+import com.vividsolutions.jts.io.ParseException;
+import com.vividsolutions.jts.io.WKBReader;
+import com.vividsolutions.jts.io.WKBWriter;
+import com.vividsolutions.jts.io.WKTReader;
 import org.dbsyncer.connector.mysql.MySQLException;
 import org.dbsyncer.sdk.model.Field;
 import org.dbsyncer.sdk.schema.support.StringType;
@@ -63,7 +67,7 @@ public final class MySQLStringType extends StringType {
             }
             return val;
         }
-        return throwUnsupportedException(val, field);
+        return super.convert(val, field);
     }
 
     private String deserializeGeometry(byte[] bytes) {

+ 0 - 8
dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLTimeType.java

@@ -32,12 +32,4 @@ public final class MySQLTimeType extends TimeType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Object convert(Object val, Field field) {
-        if (val instanceof Time) {
-            return val;
-        }
-        return throwUnsupportedException(val, field);
-    }
-
 }

+ 0 - 8
dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLTimestampType.java

@@ -33,12 +33,4 @@ public final class MySQLTimestampType extends TimestampType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Object convert(Object val, Field field) {
-        if (val instanceof Timestamp) {
-            return val;
-        }
-        return throwUnsupportedException(val, field);
-    }
-
 }

+ 0 - 5
dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleBytesType.java

@@ -44,9 +44,4 @@ public final class OracleBytesType extends BytesType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Object convert(Object val, Field field) {
-        return throwUnsupportedException(val, field);
-    }
-
 }

+ 0 - 5
dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleDateType.java

@@ -42,9 +42,4 @@ public final class OracleDateType extends DateType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Object convert(Object val, Field field) {
-        return throwUnsupportedException(val, field);
-    }
-
 }

+ 0 - 5
dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleFloatType.java

@@ -41,9 +41,4 @@ public final class OracleFloatType extends FloatType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Object convert(Object val, Field field) {
-        return throwUnsupportedException(val, field);
-    }
-
 }

+ 0 - 5
dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleIntType.java

@@ -26,9 +26,4 @@ public final class OracleIntType extends IntType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Object convert(Object val, Field field) {
-        return throwUnsupportedException(val, field);
-    }
-
 }

+ 0 - 5
dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleLongType.java

@@ -26,9 +26,4 @@ public final class OracleLongType extends LongType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Object convert(Object val, Field field) {
-        return throwUnsupportedException(val, field);
-    }
-
 }

+ 0 - 5
dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleStringType.java

@@ -49,9 +49,4 @@ public final class OracleStringType extends StringType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Object convert(Object val, Field field) {
-        return throwUnsupportedException(val, field);
-    }
-
 }

+ 0 - 5
dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/schema/support/OracleTimestampType.java

@@ -44,9 +44,4 @@ public final class OracleTimestampType extends TimestampType {
         return throwUnsupportedException(val, field);
     }
 
-    @Override
-    protected Object convert(Object val, Field field) {
-        return throwUnsupportedException(val, field);
-    }
-
 }

+ 19 - 0
dbsyncer-sdk/src/main/java/org/dbsyncer/sdk/schema/support/ByteType.java

@@ -4,8 +4,11 @@
 package org.dbsyncer.sdk.schema.support;
 
 import org.dbsyncer.sdk.enums.DataTypeEnum;
+import org.dbsyncer.sdk.model.Field;
 import org.dbsyncer.sdk.schema.AbstractDataType;
 
+import java.nio.ByteBuffer;
+
 /**
  * @Author 穿云
  * @Version 1.0.0
@@ -17,4 +20,20 @@ public abstract class ByteType extends AbstractDataType<Byte> {
     public DataTypeEnum getType() {
         return DataTypeEnum.BYTE;
     }
+
+    @Override
+    protected Object convert(Object val, Field field) {
+        if (val instanceof Integer) {
+            ByteBuffer buffer = ByteBuffer.allocate(4);
+            buffer.putInt((Integer) val);
+            return buffer.array();
+        }
+        if (val instanceof Boolean) {
+            Boolean b = (Boolean) val;
+            ByteBuffer buffer = ByteBuffer.allocate(2);
+            buffer.putShort((short) (b ? 1 : 0));
+            return buffer.array();
+        }
+        return throwUnsupportedException(val, field);
+    }
 }

+ 13 - 0
dbsyncer-sdk/src/main/java/org/dbsyncer/sdk/schema/support/BytesType.java

@@ -4,6 +4,7 @@
 package org.dbsyncer.sdk.schema.support;
 
 import org.dbsyncer.sdk.enums.DataTypeEnum;
+import org.dbsyncer.sdk.model.Field;
 import org.dbsyncer.sdk.schema.AbstractDataType;
 
 /**
@@ -17,4 +18,16 @@ public abstract class BytesType extends AbstractDataType<byte[]> {
     public DataTypeEnum getType() {
         return DataTypeEnum.BYTES;
     }
+
+    @Override
+    protected Object convert(Object val, Field field) {
+        if (val instanceof byte[]) {
+            return val;
+        }
+        if (val instanceof String) {
+            String s = (String) val;
+            return s.getBytes();
+        }
+        return throwUnsupportedException(val, field);
+    }
 }

+ 25 - 0
dbsyncer-sdk/src/main/java/org/dbsyncer/sdk/schema/support/DateType.java

@@ -3,10 +3,14 @@
  */
 package org.dbsyncer.sdk.schema.support;
 
+import org.dbsyncer.common.util.DateFormatUtil;
 import org.dbsyncer.sdk.enums.DataTypeEnum;
+import org.dbsyncer.sdk.model.Field;
 import org.dbsyncer.sdk.schema.AbstractDataType;
 
 import java.sql.Date;
+import java.sql.Timestamp;
+import java.time.LocalDateTime;
 
 /**
  * @Author 穿云
@@ -19,4 +23,25 @@ public abstract class DateType extends AbstractDataType<Date> {
     public DataTypeEnum getType() {
         return DataTypeEnum.DATE;
     }
+
+    @Override
+    public Object convert(Object val, Field field) {
+        if (val instanceof Date) {
+            return val;
+        }
+
+        if (val instanceof LocalDateTime) {
+            LocalDateTime dateTime = (LocalDateTime) val;
+            return Timestamp.valueOf(dateTime);
+        }
+
+        if (val instanceof String) {
+            String s = (String) val;
+            Timestamp timestamp = DateFormatUtil.stringToTimestamp(s);
+            if (null != timestamp) {
+                return timestamp;
+            }
+        }
+        return throwUnsupportedException(val, field);
+    }
 }

+ 8 - 0
dbsyncer-sdk/src/main/java/org/dbsyncer/sdk/schema/support/DecimalType.java

@@ -4,6 +4,7 @@
 package org.dbsyncer.sdk.schema.support;
 
 import org.dbsyncer.sdk.enums.DataTypeEnum;
+import org.dbsyncer.sdk.model.Field;
 import org.dbsyncer.sdk.schema.AbstractDataType;
 
 import java.math.BigDecimal;
@@ -19,4 +20,11 @@ public abstract class DecimalType extends AbstractDataType<BigDecimal> {
     public DataTypeEnum getType() {
         return DataTypeEnum.DECIMAL;
     }
+    @Override
+    protected Object convert(Object val, Field field) {
+        if (val instanceof String) {
+            return new BigDecimal((String) val);
+        }
+        return throwUnsupportedException(val, field);
+    }
 }

+ 9 - 0
dbsyncer-sdk/src/main/java/org/dbsyncer/sdk/schema/support/DoubleType.java

@@ -4,6 +4,7 @@
 package org.dbsyncer.sdk.schema.support;
 
 import org.dbsyncer.sdk.enums.DataTypeEnum;
+import org.dbsyncer.sdk.model.Field;
 import org.dbsyncer.sdk.schema.AbstractDataType;
 
 /**
@@ -17,4 +18,12 @@ public abstract class DoubleType extends AbstractDataType<Double> {
     public DataTypeEnum getType() {
         return DataTypeEnum.DOUBLE;
     }
+
+    @Override
+    protected Object convert(Object val, Field field) {
+        if (val instanceof Number) {
+            return ((Number) val).doubleValue();
+        }
+        return throwUnsupportedException(val, field);
+    }
 }

+ 9 - 0
dbsyncer-sdk/src/main/java/org/dbsyncer/sdk/schema/support/FloatType.java

@@ -4,6 +4,7 @@
 package org.dbsyncer.sdk.schema.support;
 
 import org.dbsyncer.sdk.enums.DataTypeEnum;
+import org.dbsyncer.sdk.model.Field;
 import org.dbsyncer.sdk.schema.AbstractDataType;
 
 /**
@@ -17,4 +18,12 @@ public abstract class FloatType extends AbstractDataType<Float> {
     public DataTypeEnum getType() {
         return DataTypeEnum.FLOAT;
     }
+
+    @Override
+    protected Object convert(Object val, Field field) {
+        if (val instanceof Number) {
+            return ((Number) val).floatValue();
+        }
+        return throwUnsupportedException(val, field);
+    }
 }

+ 18 - 0
dbsyncer-sdk/src/main/java/org/dbsyncer/sdk/schema/support/IntType.java

@@ -3,7 +3,9 @@
  */
 package org.dbsyncer.sdk.schema.support;
 
+import org.dbsyncer.common.util.NumberUtil;
 import org.dbsyncer.sdk.enums.DataTypeEnum;
+import org.dbsyncer.sdk.model.Field;
 import org.dbsyncer.sdk.schema.AbstractDataType;
 
 /**
@@ -17,4 +19,20 @@ public abstract class IntType extends AbstractDataType<Integer> {
     public DataTypeEnum getType() {
         return DataTypeEnum.INT;
     }
+
+    @Override
+    protected Object convert(Object val, Field field) {
+        if (val instanceof Number) {
+            Number num = (Number) val;
+            return num.intValue();
+        }
+        if (val instanceof String) {
+            return NumberUtil.toInt((String) val);
+        }
+        if (val instanceof Boolean) {
+            Boolean b = (Boolean) val;
+            return new Integer(b ? 1 : 0);
+        }
+        return throwUnsupportedException(val, field);
+    }
 }

+ 18 - 0
dbsyncer-sdk/src/main/java/org/dbsyncer/sdk/schema/support/LongType.java

@@ -3,7 +3,9 @@
  */
 package org.dbsyncer.sdk.schema.support;
 
+import org.dbsyncer.common.util.NumberUtil;
 import org.dbsyncer.sdk.enums.DataTypeEnum;
+import org.dbsyncer.sdk.model.Field;
 import org.dbsyncer.sdk.schema.AbstractDataType;
 
 /**
@@ -17,4 +19,20 @@ public abstract class LongType extends AbstractDataType<Long> {
     public DataTypeEnum getType() {
         return DataTypeEnum.LONG;
     }
+
+    @Override
+    protected Object convert(Object val, Field field) {
+        if (val instanceof Number) {
+            Number num = (Number) val;
+            return num.longValue();
+        }
+        if (val instanceof String) {
+            return NumberUtil.toLong((String) val);
+        }
+        if (val instanceof Boolean) {
+            Boolean b = (Boolean) val;
+            return new Long(b ? 1 : 0);
+        }
+        return throwUnsupportedException(val, field);
+    }
 }

+ 9 - 0
dbsyncer-sdk/src/main/java/org/dbsyncer/sdk/schema/support/ShortType.java

@@ -4,6 +4,7 @@
 package org.dbsyncer.sdk.schema.support;
 
 import org.dbsyncer.sdk.enums.DataTypeEnum;
+import org.dbsyncer.sdk.model.Field;
 import org.dbsyncer.sdk.schema.AbstractDataType;
 
 /**
@@ -17,4 +18,12 @@ public abstract class ShortType extends AbstractDataType<Short> {
     public DataTypeEnum getType() {
         return DataTypeEnum.SHORT;
     }
+
+    @Override
+    protected Object convert(Object val, Field field) {
+        if (val instanceof Number) {
+            return ((Number) val).shortValue();
+        }
+        return throwUnsupportedException(val, field);
+    }
 }

+ 41 - 0
dbsyncer-sdk/src/main/java/org/dbsyncer/sdk/schema/support/StringType.java

@@ -3,9 +3,17 @@
  */
 package org.dbsyncer.sdk.schema.support;
 
+import org.dbsyncer.common.util.DateFormatUtil;
 import org.dbsyncer.sdk.enums.DataTypeEnum;
+import org.dbsyncer.sdk.model.Field;
 import org.dbsyncer.sdk.schema.AbstractDataType;
 
+import java.sql.Date;
+import java.sql.Timestamp;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+
 /**
  * @Author 穿云
  * @Version 1.0.0
@@ -18,4 +26,37 @@ public abstract class StringType extends AbstractDataType<String> {
         return DataTypeEnum.STRING;
     }
 
+    @Override
+    protected Object convert(Object val, Field field) {
+        if (val instanceof byte[]) {
+            return new String((byte[]) val);
+        }
+
+        if (val instanceof Number) {
+            Number number = (Number) val;
+            return number.toString();
+        }
+
+        if (val instanceof LocalDateTime) {
+            return ((LocalDateTime) val).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+        }
+
+        if (val instanceof LocalDate) {
+            return ((LocalDate) val).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+        }
+
+        if (val instanceof Timestamp) {
+            return DateFormatUtil.timestampToString((Timestamp) val);
+        }
+
+        if (val instanceof Date) {
+            return DateFormatUtil.dateToString((Date) val);
+        }
+
+        if (val instanceof java.util.Date) {
+            return DateFormatUtil.dateToString((java.util.Date) val);
+        }
+
+        return throwUnsupportedException(val, field);
+    }
 }

+ 10 - 1
dbsyncer-sdk/src/main/java/org/dbsyncer/sdk/schema/support/TimeType.java

@@ -4,6 +4,7 @@
 package org.dbsyncer.sdk.schema.support;
 
 import org.dbsyncer.sdk.enums.DataTypeEnum;
+import org.dbsyncer.sdk.model.Field;
 import org.dbsyncer.sdk.schema.AbstractDataType;
 
 import java.sql.Time;
@@ -19,4 +20,12 @@ public abstract class TimeType extends AbstractDataType<Time> {
     public DataTypeEnum getType() {
         return DataTypeEnum.TIME;
     }
-}
+
+    @Override
+    protected Object convert(Object val, Field field) {
+        if (val instanceof Time) {
+            return val;
+        }
+        return throwUnsupportedException(val, field);
+    }
+}

+ 10 - 0
dbsyncer-sdk/src/main/java/org/dbsyncer/sdk/schema/support/TimestampType.java

@@ -4,6 +4,7 @@
 package org.dbsyncer.sdk.schema.support;
 
 import org.dbsyncer.sdk.enums.DataTypeEnum;
+import org.dbsyncer.sdk.model.Field;
 import org.dbsyncer.sdk.schema.AbstractDataType;
 
 import java.sql.Timestamp;
@@ -19,4 +20,13 @@ public abstract class TimestampType extends AbstractDataType<Timestamp> {
     public DataTypeEnum getType() {
         return DataTypeEnum.TIMESTAMP;
     }
+
+    @Override
+    protected Object convert(Object val, Field field) {
+        if (val instanceof Timestamp) {
+            return val;
+        }
+        return throwUnsupportedException(val, field);
+    }
+
 }