From d0f75a940c9ffb89cfd099684f5207f1acd43db9 Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Tue, 25 Oct 2016 22:16:49 +1300 Subject: [PATCH] #239 - Support Geometric types of Postgres, Also adding LineString, MultiLineString and MultiPoint --- .../dbplatform/DbPlatformTypeMapping.java | 6 ++++++ .../avaje/ebean/config/dbplatform/DbType.java | 3 +++ .../ebean/config/dbplatform/ExtraDbTypes.java | 17 ++++++++++++++++- .../config/dbplatform/PostgresPlatform.java | 3 +++ 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/avaje/ebean/config/dbplatform/DbPlatformTypeMapping.java b/src/main/java/com/avaje/ebean/config/dbplatform/DbPlatformTypeMapping.java index 57e7847f0..8906f911a 100644 --- a/src/main/java/com/avaje/ebean/config/dbplatform/DbPlatformTypeMapping.java +++ b/src/main/java/com/avaje/ebean/config/dbplatform/DbPlatformTypeMapping.java @@ -21,6 +21,9 @@ public class DbPlatformTypeMapping { private static final DbPlatformType POINT = new DbPlatformType("point"); private static final DbPlatformType POLYGON = new DbPlatformType("polygon"); + private static final DbPlatformType LINESTRING = new DbPlatformType("linestring"); + private static final DbPlatformType MULTIPOINT = new DbPlatformType("multipoint"); + private static final DbPlatformType MULTILINESTRING = new DbPlatformType("multilinestring"); private static final DbPlatformType MULTIPOLYGON = new DbPlatformType("multipolygon"); private final Map typeMap = new HashMap(); @@ -68,6 +71,9 @@ public class DbPlatformTypeMapping { put(DbType.POINT, POINT); put(DbType.POLYGON, POLYGON); + put(DbType.LINESTRING, LINESTRING); + put(DbType.MULTIPOINT, MULTIPOINT); + put(DbType.MULTILINESTRING, MULTILINESTRING); put(DbType.MULTIPOLYGON, MULTIPOLYGON); if (logicalTypes) { diff --git a/src/main/java/com/avaje/ebean/config/dbplatform/DbType.java b/src/main/java/com/avaje/ebean/config/dbplatform/DbType.java index 95c7d931e..d2164be86 100644 --- a/src/main/java/com/avaje/ebean/config/dbplatform/DbType.java +++ b/src/main/java/com/avaje/ebean/config/dbplatform/DbType.java @@ -38,6 +38,9 @@ public enum DbType { POINT(ExtraDbTypes.POINT), POLYGON(ExtraDbTypes.POLYGON), + LINESTRING(ExtraDbTypes.LINESTRING), + MULTIPOINT(ExtraDbTypes.MULTIPOINT), + MULTILINESTRING(ExtraDbTypes.MULTILINESTRING), MULTIPOLYGON(ExtraDbTypes.MULTIPOLYGON), HSTORE(ExtraDbTypes.HSTORE), diff --git a/src/main/java/com/avaje/ebean/config/dbplatform/ExtraDbTypes.java b/src/main/java/com/avaje/ebean/config/dbplatform/ExtraDbTypes.java index 6f51a86b5..d4aa01f6d 100644 --- a/src/main/java/com/avaje/ebean/config/dbplatform/ExtraDbTypes.java +++ b/src/main/java/com/avaje/ebean/config/dbplatform/ExtraDbTypes.java @@ -50,9 +50,24 @@ public interface ExtraDbTypes { */ int POLYGON = 6001; + /** + * Geo Point + */ + int LINESTRING = 6002; + /** * Geo MultiPolygon */ - int MULTIPOLYGON = 6002; + int MULTIPOINT = 6005; + + /** + * Geo MultiPolygon + */ + int MULTIPOLYGON = 6006; + + /** + * Geo MultiPolygon + */ + int MULTILINESTRING = 6007; } diff --git a/src/main/java/com/avaje/ebean/config/dbplatform/PostgresPlatform.java b/src/main/java/com/avaje/ebean/config/dbplatform/PostgresPlatform.java index 78d16f328..18aa77446 100644 --- a/src/main/java/com/avaje/ebean/config/dbplatform/PostgresPlatform.java +++ b/src/main/java/com/avaje/ebean/config/dbplatform/PostgresPlatform.java @@ -80,6 +80,9 @@ public class PostgresPlatform extends DatabasePlatform { private void addGeoTypes(int srid) { dbTypeMap.put(DbType.POINT, geoType("point",srid)); dbTypeMap.put(DbType.POLYGON, geoType("polygon",srid)); + dbTypeMap.put(DbType.LINESTRING, geoType("linestring",srid)); + dbTypeMap.put(DbType.MULTIPOINT, geoType("multipoint",srid)); + dbTypeMap.put(DbType.MULTILINESTRING, geoType("multilinestring",srid)); dbTypeMap.put(DbType.MULTIPOLYGON, geoType("multipolygon",srid)); }