From dbfeb16e43d5e4124a8e207f39e5d69a8180de4f Mon Sep 17 00:00:00 2001 From: Karel Maesen Date: Sat, 20 Dec 2014 15:37:19 +0100 Subject: [PATCH] HHH-6509 - Updates to geolatte-geom 1.0-SNAPSHOT --- hibernate-spatial/hibernate-spatial.gradle | 4 ++-- .../GeolatteGeometryJavaTypeDescriptor.java | 2 +- .../spatial/dialect/h2geodb/GeoDbWkb.java | 23 ++++++++++--------- .../integration/geolatte/GeomEntity.java | 12 ++++++---- .../TestStoreRetrieveUsingGeolatte.java | 9 ++++---- .../src/test/resources/hibernate.properties | 18 +++++++-------- 6 files changed, 37 insertions(+), 31 deletions(-) diff --git a/hibernate-spatial/hibernate-spatial.gradle b/hibernate-spatial/hibernate-spatial.gradle index a0a243e89c..89b8d26d14 100644 --- a/hibernate-spatial/hibernate-spatial.gradle +++ b/hibernate-spatial/hibernate-spatial.gradle @@ -25,8 +25,8 @@ apply plugin: 'hibernate-matrix-testing' dependencies { compile(project(':hibernate-core')) compile([group: 'postgresql', name: 'postgresql', version: '8.4-701.jdbc4']) - compile([group: 'org.geolatte', name: 'geolatte-geom', version: '0.12-SNAPSHOT']) - compile([group: 'com.vividsolutions', name: 'jts', version: '1.12']) + compile([group: 'org.geolatte', name: 'geolatte-geom', version: '1.0-SNAPSHOT']) +// compile([group: 'com.vividsolutions', name: 'jts', version: '1.12']) compile(libraries.dom4j) { transitive = false diff --git a/hibernate-spatial/src/main/java/org/hibernate/spatial/GeolatteGeometryJavaTypeDescriptor.java b/hibernate-spatial/src/main/java/org/hibernate/spatial/GeolatteGeometryJavaTypeDescriptor.java index 84cd52e5e2..4980688d10 100644 --- a/hibernate-spatial/src/main/java/org/hibernate/spatial/GeolatteGeometryJavaTypeDescriptor.java +++ b/hibernate-spatial/src/main/java/org/hibernate/spatial/GeolatteGeometryJavaTypeDescriptor.java @@ -50,7 +50,7 @@ public GeolatteGeometryJavaTypeDescriptor() { @Override public String toString(Geometry value) { - return value.asText(); + return value.toString(); } @Override diff --git a/hibernate-spatial/src/main/java/org/hibernate/spatial/dialect/h2geodb/GeoDbWkb.java b/hibernate-spatial/src/main/java/org/hibernate/spatial/dialect/h2geodb/GeoDbWkb.java index 29acc4ff35..38f63247d2 100644 --- a/hibernate-spatial/src/main/java/org/hibernate/spatial/dialect/h2geodb/GeoDbWkb.java +++ b/hibernate-spatial/src/main/java/org/hibernate/spatial/dialect/h2geodb/GeoDbWkb.java @@ -29,16 +29,16 @@ import org.geolatte.geom.ByteBuffer; import org.geolatte.geom.ByteOrder; -import org.geolatte.geom.DimensionalFlag; +import org.geolatte.geom.C2D; import org.geolatte.geom.Envelope; import org.geolatte.geom.Geometry; -import org.geolatte.geom.PointSequence; -import org.geolatte.geom.PointSequenceBuilders; import org.geolatte.geom.Polygon; +import org.geolatte.geom.PositionSequence; +import org.geolatte.geom.PositionSequenceBuilders; import org.geolatte.geom.codec.Wkb; import org.geolatte.geom.codec.WkbDecoder; import org.geolatte.geom.codec.WkbEncoder; -import org.geolatte.geom.crs.CrsId; +import org.geolatte.geom.crs.CoordinateReferenceSystems; import org.geolatte.geom.jts.JTS; import org.hibernate.HibernateException; @@ -109,13 +109,14 @@ else if ( object instanceof com.vividsolutions.jts.geom.Envelope ) { } - private static Geometry toPolygon(Envelope env) { - final PointSequence ps = PointSequenceBuilders.fixedSized( 4, DimensionalFlag.d2D, CrsId.UNDEFINED ) - .add( env.getMinX(), env.getMinY() ) - .add( env.getMinX(), env.getMaxY() ) - .add( env.getMaxX(), env.getMaxY() ) - .add( env.getMinX(), env.getMinY() ).toPointSequence(); - return new Polygon( ps ); + private static Geometry toPolygon(Envelope env) { + final PositionSequence ps = PositionSequenceBuilders.fixedSized(4, C2D.class) + .add( env.lowerLeft().getCoordinate( 0 ), env.lowerLeft().getCoordinate(1) ) + .add( env.lowerLeft().getCoordinate( 0 ), env.upperRight().getCoordinate(1) ) + .add( env.upperRight().getCoordinate( 0 ), env.upperRight().getCoordinate(1) ) + .add( env.lowerLeft().getCoordinate( 0 ), env.lowerLeft().getCoordinate(1) ) + .toPositionSequence(); + return new Polygon( ps, CoordinateReferenceSystems.PROJECTED_2D_METER ); } private static ByteBuffer toByteBuffer(Blob blob) { diff --git a/hibernate-spatial/src/test/java/org/hibernate/spatial/integration/geolatte/GeomEntity.java b/hibernate-spatial/src/test/java/org/hibernate/spatial/integration/geolatte/GeomEntity.java index 856b69c64b..f0ea28a686 100644 --- a/hibernate-spatial/src/test/java/org/hibernate/spatial/integration/geolatte/GeomEntity.java +++ b/hibernate-spatial/src/test/java/org/hibernate/spatial/integration/geolatte/GeomEntity.java @@ -25,10 +25,13 @@ import javax.persistence.Id; import javax.persistence.Table; +import org.geolatte.geom.C3DM; import org.geolatte.geom.Geometry; import org.geolatte.geom.codec.Wkt; import org.geolatte.geom.codec.WktDecodeException; import org.geolatte.geom.codec.WktDecoder; +import org.geolatte.geom.crs.CoordinateReferenceSystem; +import org.geolatte.geom.crs.CoordinateReferenceSystems; import org.hibernate.spatial.testing.TestDataElement; @@ -39,13 +42,14 @@ @Table(name = "geomtest") public class GeomEntity { + private final static CoordinateReferenceSystem CRS = CoordinateReferenceSystems.PROJECTED_3DM_METER; @Id private Integer id; private String type; - private Geometry geom; + private Geometry geom; public Integer getId() { return id; @@ -63,17 +67,17 @@ public void setType(String type) { this.type = type; } - public Geometry getGeom() { + public Geometry getGeom() { return geom; } - public void setGeom(Geometry geom) { + public void setGeom(Geometry geom) { this.geom = geom; } public static GeomEntity createFrom(TestDataElement element) throws WktDecodeException { WktDecoder decoder = Wkt.newDecoder( Wkt.Dialect.POSTGIS_EWKT_1 ); - Geometry geom = decoder.decode( element.wkt ); + Geometry geom = decoder.decode( element.wkt, CRS ); GeomEntity result = new GeomEntity(); result.setId( element.id ); result.setGeom( geom ); diff --git a/hibernate-spatial/src/test/java/org/hibernate/spatial/integration/geolatte/TestStoreRetrieveUsingGeolatte.java b/hibernate-spatial/src/test/java/org/hibernate/spatial/integration/geolatte/TestStoreRetrieveUsingGeolatte.java index 9e7bf276e3..4378fe490c 100644 --- a/hibernate-spatial/src/test/java/org/hibernate/spatial/integration/geolatte/TestStoreRetrieveUsingGeolatte.java +++ b/hibernate-spatial/src/test/java/org/hibernate/spatial/integration/geolatte/TestStoreRetrieveUsingGeolatte.java @@ -4,6 +4,7 @@ import java.util.List; import java.util.Map; +import org.geolatte.geom.C3DM; import org.geolatte.geom.Geometry; import org.geolatte.geom.GeometryEquality; import org.geolatte.geom.GeometryPointEquality; @@ -66,8 +67,8 @@ private void retrieveAndCompare(Map stored) { for ( GeomEntity storedEntity : stored.values() ) { id = storedEntity.getId(); GeomEntity retrievedEntity = (GeomEntity) session.get( GeomEntity.class, id ); - Geometry retrievedGeometry = retrievedEntity.getGeom(); - Geometry storedGeometry = storedEntity.getGeom(); + Geometry retrievedGeometry = retrievedEntity.getGeom(); + Geometry storedGeometry = storedEntity.getGeom(); String msg = createFailureMessage( storedEntity.getId(), storedGeometry, retrievedGeometry ); assertTrue( msg, geomEq.equals( storedGeometry, retrievedGeometry ) ); } @@ -87,8 +88,8 @@ private void retrieveAndCompare(Map stored) { } private String createFailureMessage(int id, Geometry storedGeometry, Geometry retrievedGeometry) { - String expectedText = ( storedGeometry != null ? storedGeometry.asText() : "NULL" ); - String retrievedText = ( retrievedGeometry != null ? retrievedGeometry.asText() : "NULL" ); + String expectedText = ( storedGeometry != null ? storedGeometry.toString() : "NULL" ); + String retrievedText = ( retrievedGeometry != null ? retrievedGeometry.toString() : "NULL" ); return String.format( "Equality testsuite-suite failed for %d.%nExpected: %s%nReceived:%s", id, diff --git a/hibernate-spatial/src/test/resources/hibernate.properties b/hibernate-spatial/src/test/resources/hibernate.properties index e0992e3da9..9cce65d7bc 100644 --- a/hibernate-spatial/src/test/resources/hibernate.properties +++ b/hibernate-spatial/src/test/resources/hibernate.properties @@ -30,10 +30,10 @@ hibernate.show_sql true hibernate.max_fetch_depth 5 -hibernate.dialect org.hibernate.dialect.H2Dialect -hibernate.connection.driver_class org.h2.Driver -hibernate.connection.url jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1;MVCC=TRUE -hibernate.connection.username sa +#hibernate.dialect org.hibernate.dialect.H2Dialect +#hibernate.connection.driver_class org.h2.Driver +#hibernate.connection.url jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1;MVCC=TRUE +#hibernate.connection.username sa #hibernate.cache.region_prefix hibernate.test #hibernate.cache.region.factory_class org.hibernate.testing.cache.CachingRegionFactory @@ -44,11 +44,11 @@ hibernate.connection.username sa ## Configs for spatial databases (used during testing on local dev environment). # -#hibernate.dialect org.hibernate.spatial.dialect.postgis.PostgisDialect -#hibernate.connection.driver_class org.postgresql.Driver -#hibernate.connection.url jdbc:postgresql://localhost:5432:hibbrtru -#hibernate.connection.username hibbrtru -#hibernate.connection.password hibbrtru +hibernate.dialect org.hibernate.spatial.dialect.postgis.PostgisDialect +hibernate.connection.driver_class org.postgresql.Driver +hibernate.connection.url jdbc:postgresql://localhost:5432:hibbrtru +hibernate.connection.username hibbrtru +hibernate.connection.password hibbrtru ## ## GeoDb (H2 spatial extension)