From e27ce052793ec93e84b985e17a69aa0c310e938f Mon Sep 17 00:00:00 2001 From: Serge Rider Date: Thu, 16 May 2019 13:05:33 +0300 Subject: [PATCH] Geometry converter utils refactoring --- .../gis/handlers/GISGeometryValueHandler.java | 14 ++++++++----- .../data/gis/handlers/GeometryConverter.java | 20 +++++++++---------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/plugins/org.jkiss.dbeaver.data.gis/src/org/jkiss/dbeaver/data/gis/handlers/GISGeometryValueHandler.java b/plugins/org.jkiss.dbeaver.data.gis/src/org/jkiss/dbeaver/data/gis/handlers/GISGeometryValueHandler.java index 28964e5d3c..e1f7a0c0c1 100644 --- a/plugins/org.jkiss.dbeaver.data.gis/src/org/jkiss/dbeaver/data/gis/handlers/GISGeometryValueHandler.java +++ b/plugins/org.jkiss.dbeaver.data.gis/src/org/jkiss/dbeaver/data/gis/handlers/GISGeometryValueHandler.java @@ -79,7 +79,7 @@ public class GISGeometryValueHandler extends JDBCAbstractValueHandler { } else if (value instanceof byte[]) { bindBytes(statement, paramIndex, (byte[]) value); } else if (value instanceof Geometry) { - bindBytes(statement, paramIndex, GeometryConverter.getInstance().to((Geometry)value)); + bindBytes(statement, paramIndex, convertGeometryToBinaryFormat(session, (Geometry)value)); } } @@ -103,13 +103,13 @@ public class GISGeometryValueHandler extends JDBCAbstractValueHandler { } else if (object instanceof Geometry) { geometry = new DBGeometry((Geometry)object); } else if (object instanceof byte[]) { - Geometry jtsGeometry = getGeometryFromBinaryFormat(session, (byte[]) object); + Geometry jtsGeometry = convertGeometryFromBinaryFormat(session, (byte[]) object); // if (invertCoordinates) { // jtsGeometry.apply(GeometryConverter.INVERT_COORDINATE_FILTER); // } geometry = new DBGeometry(jtsGeometry); } else if (object instanceof String) { - Geometry jtsGeometry = GeometryConverter.getInstance().from((String) object); + Geometry jtsGeometry = GeometryConverter.getInstance().fromWKT((String) object); geometry = new DBGeometry(jtsGeometry); } else { throw new DBCException("Unsupported geometry value: " + object); @@ -120,8 +120,12 @@ public class GISGeometryValueHandler extends JDBCAbstractValueHandler { return geometry; } - protected Geometry getGeometryFromBinaryFormat(DBCSession session, byte[] object) throws DBCException { - return GeometryConverter.getInstance().from(object); + protected Geometry convertGeometryFromBinaryFormat(DBCSession session, byte[] object) throws DBCException { + return GeometryConverter.getInstance().fromWKB(object); + } + + protected byte[] convertGeometryToBinaryFormat(DBCSession session, Geometry geometry) throws DBCException { + return GeometryConverter.getInstance().toWKB(geometry); } @NotNull diff --git a/plugins/org.jkiss.dbeaver.data.gis/src/org/jkiss/dbeaver/data/gis/handlers/GeometryConverter.java b/plugins/org.jkiss.dbeaver.data.gis/src/org/jkiss/dbeaver/data/gis/handlers/GeometryConverter.java index b80ee74d64..411e36e4ca 100644 --- a/plugins/org.jkiss.dbeaver.data.gis/src/org/jkiss/dbeaver/data/gis/handlers/GeometryConverter.java +++ b/plugins/org.jkiss.dbeaver.data.gis/src/org/jkiss/dbeaver/data/gis/handlers/GeometryConverter.java @@ -40,10 +40,18 @@ public class GeometryConverter { return INSTANCE; } + public Geometry fromWKT(String str) { + try { + return new WKTReader().read(str); + } catch (ParseException e) { + throw new IllegalArgumentException(e); + } + } + /** * Convert byte array containing SRID + WKB Geometry into Geometry object */ - public Geometry from(byte[] bytes) { + public Geometry fromWKB(byte[] bytes) { if (bytes == null) { return null; } @@ -66,18 +74,10 @@ public class GeometryConverter { } } - public Geometry from(String str) { - try { - return new WKTReader().read(str); - } catch (ParseException e) { - throw new IllegalArgumentException(e); - } - } - /** * Convert Geometry object into byte array containing SRID + WKB Geometry */ - public byte[] to(Geometry userObject) { + public byte[] toWKB(Geometry userObject) { if (userObject == null) { return null; } -- GitLab