Browse Source

还原OtherValueMapper代码,简化PGOtherValueMapper

Signed-off-by: AE86 <836391306@qq.com>
AE86 2 years ago
parent
commit
b4a4404e4c

+ 1 - 1
dbsyncer-connector/src/main/java/org/dbsyncer/connector/postgresql/PostgreSQLConnector.java

@@ -8,7 +8,6 @@ import org.dbsyncer.connector.database.AbstractDatabaseConnector;
 import org.dbsyncer.connector.enums.TableTypeEnum;
 import org.dbsyncer.connector.model.PageSql;
 import org.dbsyncer.connector.model.Table;
-import org.dbsyncer.connector.schema.GeometryValueMapper;
 import org.dbsyncer.connector.schema.PGOtherValueMapper;
 
 import java.sql.Types;
@@ -18,6 +17,7 @@ public final class PostgreSQLConnector extends AbstractDatabaseConnector {
     static {
         valueMappers.put(Types.OTHER, new PGOtherValueMapper());
     }
+
     @Override
     protected String buildSqlWithQuotation() {
         return "\"";

+ 3 - 3
dbsyncer-connector/src/main/java/org/dbsyncer/connector/schema/OtherValueMapper.java

@@ -2,7 +2,7 @@ package org.dbsyncer.connector.schema;
 
 import com.microsoft.sqlserver.jdbc.Geometry;
 import oracle.jdbc.OracleConnection;
-//import oracle.spatial.geometry.JGeometry;
+import oracle.spatial.geometry.JGeometry;
 import org.dbsyncer.common.spi.ConnectorMapper;
 import org.dbsyncer.connector.AbstractValueMapper;
 import org.dbsyncer.connector.ConnectorException;
@@ -35,8 +35,8 @@ public class OtherValueMapper extends AbstractValueMapper<Struct> {
                     Geometry geometry = Geometry.deserialize((byte[]) val);
                     Double x = geometry.getX();
                     Double y = geometry.getY();
-//                    JGeometry jGeometry = new JGeometry(x, y, 0);
-//                    return JGeometry.store(jGeometry, conn);
+                    JGeometry jGeometry = new JGeometry(x, y, 0);
+                    return JGeometry.store(jGeometry, conn);
                 }
             }
         }

+ 29 - 9
dbsyncer-connector/src/main/java/org/dbsyncer/connector/schema/PGOtherValueMapper.java

@@ -8,11 +8,37 @@ import org.postgis.PGgeometry;
 import org.postgis.binary.BinaryParser;
 import org.postgis.binary.BinaryWriter;
 
+/**
+ * PostgreSQL值映射器,JDBC索引{@link java.sql.Types 1111}, JDBC类型java.lang.Object,支持的数据库类型:
+ * <ol>
+ * <li>cidr</li>
+ * <li>inet</li>
+ * <li>macaddr</li>
+ * <li>box</li>
+ * <li>circle</li>
+ * <li>interval</li>
+ * <li>line</li>
+ * <li>lseg</li>
+ * <li>path</li>
+ * <li>point</li>
+ * <li>polygon</li>
+ * <li>varbit</li>
+ * </ol>
+ *
+ * @author AE86
+ * @version 1.0.0
+ * @date 2022/8/24 23:43
+ */
 public class PGOtherValueMapper extends AbstractValueMapper<Object> {
+
+    @Override
+    protected boolean skipConvert(Object val) {
+        return val instanceof PGgeometry || val instanceof Geometry || val instanceof java.util.UUID;
+    }
+
     @Override
-    protected Object convert(ConnectorMapper connectorMapper, Object val) throws Exception {
+    protected Object convert(ConnectorMapper connectorMapper, Object val) {
         if (val instanceof String) {
-            //测试下Geometry能不能用起来
             try {
                 BinaryParser parser = new BinaryParser();
                 org.postgis.Geometry geo = parser.parse((String) val);
@@ -21,13 +47,7 @@ public class PGOtherValueMapper extends AbstractValueMapper<Object> {
             } catch (Exception ex) {
                 return val;
             }
-        } else if (val instanceof PGgeometry)
-            return val;
-        else if (val instanceof Geometry) {
-            return val;
-        } else if (val instanceof java.util.UUID) {
-            return val;
         }
         throw new ConnectorException(String.format("%s can not find type [%s], val [%s]", getClass().getSimpleName(), val.getClass(), val));
     }
-}
+}