diff --git a/hibernate-spatial/src/main/java/org/hibernate/spatial/SpatialFunction.java b/hibernate-spatial/src/main/java/org/hibernate/spatial/SpatialFunction.java index 44479d17f4..12127dae0e 100644 --- a/hibernate-spatial/src/main/java/org/hibernate/spatial/SpatialFunction.java +++ b/hibernate-spatial/src/main/java/org/hibernate/spatial/SpatialFunction.java @@ -159,19 +159,9 @@ public enum SpatialFunction { *

The semantics are those of the Postgis function ST_Transform(geometry, srid) : geometry. It returns new geometry * with its coordinates transformed to the spatial reference system referenced by the srid parameter. */ - transform( "common" ), - - /** - * the extents function - */ - extent( "common" ); - - + transform( "common" ); private final String description; - - - SpatialFunction(String specification) { this.description = specification; } diff --git a/hibernate-spatial/src/main/java/org/hibernate/spatial/dialect/mysql/MySQLSpatialDialect.java b/hibernate-spatial/src/main/java/org/hibernate/spatial/dialect/mysql/MySQLSpatialDialect.java index f87a249ad3..eda2a589e9 100644 --- a/hibernate-spatial/src/main/java/org/hibernate/spatial/dialect/mysql/MySQLSpatialDialect.java +++ b/hibernate-spatial/src/main/java/org/hibernate/spatial/dialect/mysql/MySQLSpatialDialect.java @@ -122,7 +122,6 @@ public class MySQLSpatialDialect extends MySQLDialect implements SpatialDialect case geomunion: case dwithin: case transform: - case extent: return false; default: return true; diff --git a/hibernate-spatial/src/main/java/org/hibernate/spatial/dialect/postgis/PostgisDialect.java b/hibernate-spatial/src/main/java/org/hibernate/spatial/dialect/postgis/PostgisDialect.java index 5bec826161..2893dc6a1f 100644 --- a/hibernate-spatial/src/main/java/org/hibernate/spatial/dialect/postgis/PostgisDialect.java +++ b/hibernate-spatial/src/main/java/org/hibernate/spatial/dialect/postgis/PostgisDialect.java @@ -7,12 +7,10 @@ package org.hibernate.spatial.dialect.postgis; -import java.util.List; - import org.hibernate.boot.model.TypeContributions; import org.hibernate.dialect.PostgreSQL82Dialect; import org.hibernate.dialect.function.StandardSQLFunction; -import org.hibernate.engine.spi.SessionFactoryImplementor; + import org.hibernate.service.ServiceRegistry; import org.hibernate.spatial.GeolatteGeometryType; import org.hibernate.spatial.JTSGeometryType; @@ -21,7 +19,6 @@ import org.hibernate.spatial.SpatialDialect; import org.hibernate.spatial.SpatialFunction; import org.hibernate.spatial.SpatialRelation; import org.hibernate.type.StandardBasicTypes; -import org.hibernate.type.Type; /** * A Dialect for Postgresql with support for the Postgis spatial types, functions and operators (release 1.3 or higher) @@ -66,138 +63,138 @@ public class PostgisDialect extends PostgreSQL82Dialect implements SpatialDialec // it occurs in the spatial dialect registerFunction( "dimension", new StandardSQLFunction( - "st_dimension", - StandardBasicTypes.INTEGER - ) + "st_dimension", + StandardBasicTypes.INTEGER + ) ); registerFunction( "geometrytype", new StandardSQLFunction( - "st_geometrytype", StandardBasicTypes.STRING - ) + "st_geometrytype", StandardBasicTypes.STRING + ) ); registerFunction( "srid", new StandardSQLFunction( - "st_srid", - StandardBasicTypes.INTEGER - ) + "st_srid", + StandardBasicTypes.INTEGER + ) ); registerFunction( "envelope", new StandardSQLFunction( - "st_envelope" - ) + "st_envelope" + ) ); registerFunction( "astext", new StandardSQLFunction( - "st_astext", - StandardBasicTypes.STRING - ) + "st_astext", + StandardBasicTypes.STRING + ) ); registerFunction( "asbinary", new StandardSQLFunction( - "st_asbinary", - StandardBasicTypes.BINARY - ) + "st_asbinary", + StandardBasicTypes.BINARY + ) ); registerFunction( "isempty", new StandardSQLFunction( - "st_isempty", - StandardBasicTypes.BOOLEAN - ) + "st_isempty", + StandardBasicTypes.BOOLEAN + ) ); registerFunction( "issimple", new StandardSQLFunction( - "st_issimple", - StandardBasicTypes.BOOLEAN - ) + "st_issimple", + StandardBasicTypes.BOOLEAN + ) ); registerFunction( "boundary", new StandardSQLFunction( - "st_boundary" - ) + "st_boundary" + ) ); // Register functions for spatial relation constructs registerFunction( "overlaps", new StandardSQLFunction( - "st_overlaps", - StandardBasicTypes.BOOLEAN - ) + "st_overlaps", + StandardBasicTypes.BOOLEAN + ) ); registerFunction( "intersects", new StandardSQLFunction( - "st_intersects", - StandardBasicTypes.BOOLEAN - ) + "st_intersects", + StandardBasicTypes.BOOLEAN + ) ); registerFunction( "equals", new StandardSQLFunction( - "st_equals", - StandardBasicTypes.BOOLEAN - ) + "st_equals", + StandardBasicTypes.BOOLEAN + ) ); registerFunction( "contains", new StandardSQLFunction( - "st_contains", - StandardBasicTypes.BOOLEAN - ) + "st_contains", + StandardBasicTypes.BOOLEAN + ) ); registerFunction( "crosses", new StandardSQLFunction( - "st_crosses", - StandardBasicTypes.BOOLEAN - ) + "st_crosses", + StandardBasicTypes.BOOLEAN + ) ); registerFunction( "disjoint", new StandardSQLFunction( - "st_disjoint", - StandardBasicTypes.BOOLEAN - ) + "st_disjoint", + StandardBasicTypes.BOOLEAN + ) ); registerFunction( "touches", new StandardSQLFunction( - "st_touches", - StandardBasicTypes.BOOLEAN - ) + "st_touches", + StandardBasicTypes.BOOLEAN + ) ); registerFunction( "within", new StandardSQLFunction( - "st_within", - StandardBasicTypes.BOOLEAN - ) + "st_within", + StandardBasicTypes.BOOLEAN + ) ); registerFunction( "relate", new StandardSQLFunction( - "st_relate", - StandardBasicTypes.BOOLEAN - ) + "st_relate", + StandardBasicTypes.BOOLEAN + ) ); // register the spatial analysis functions registerFunction( "distance", new StandardSQLFunction( - "st_distance", - StandardBasicTypes.DOUBLE - ) + "st_distance", + StandardBasicTypes.DOUBLE + ) ); registerFunction( "buffer", new StandardSQLFunction( - "st_buffer" - ) + "st_buffer" + ) ); registerFunction( "convexhull", new StandardSQLFunction( - "st_convexhull" - ) + "st_convexhull" + ) ); registerFunction( "difference", new StandardSQLFunction( - "st_difference" - ) + "st_difference" + ) ); registerFunction( "intersection", new StandardSQLFunction( - "st_intersection" - ) + "st_intersection" + ) ); registerFunction( "symdifference", @@ -205,26 +202,28 @@ public class PostgisDialect extends PostgreSQL82Dialect implements SpatialDialec ); registerFunction( "geomunion", new StandardSQLFunction( - "st_union" - ) + "st_union" + ) ); //register Spatial Aggregate function registerFunction( - "extent", new ExtentFunction() + "extent", new StandardSQLFunction( + "extent" + ) ); //other common functions registerFunction( "dwithin", new StandardSQLFunction( - "st_dwithin", - StandardBasicTypes.BOOLEAN - ) + "st_dwithin", + StandardBasicTypes.BOOLEAN + ) ); registerFunction( "transform", new StandardSQLFunction( - "st_transform" - ) + "st_transform" + ) ); } @@ -282,7 +281,7 @@ public class PostgisDialect extends PostgreSQL82Dialect implements SpatialDialec switch ( aggregation ) { case SpatialAggregate.EXTENT: final StringBuilder stbuf = new StringBuilder(); - stbuf.append( "st_extent(" ).append( columnName ).append( ")::geometry" ); + stbuf.append( "extent(" ).append( columnName ).append( ")" ); return stbuf.toString(); default: throw new IllegalArgumentException( @@ -299,21 +298,6 @@ public class PostgisDialect extends PostgreSQL82Dialect implements SpatialDialec @Override public boolean supports(SpatialFunction function) { - return (getFunctions().get( function.toString() ) != null); - } - - private static class ExtentFunction extends StandardSQLFunction { - - public ExtentFunction() { - super( "st_extent" ); - } - - @Override - public String render( - Type firstArgumentType, List arguments, SessionFactoryImplementor sessionFactory) { - String rendered = super.render( firstArgumentType, arguments, sessionFactory ); - //add cast - return rendered + "::geometry"; - } + return ( getFunctions().get( function.toString() ) != null ); } } diff --git a/hibernate-spatial/src/test/java/org/hibernate/spatial/dialect/postgis/PostgisUnmarshalTest.java b/hibernate-spatial/src/test/java/org/hibernate/spatial/dialect/postgis/PostgisUnmarshalTest.java index ca0522bc9f..28d493b241 100644 --- a/hibernate-spatial/src/test/java/org/hibernate/spatial/dialect/postgis/PostgisUnmarshalTest.java +++ b/hibernate-spatial/src/test/java/org/hibernate/spatial/dialect/postgis/PostgisUnmarshalTest.java @@ -60,6 +60,7 @@ public class PostgisUnmarshalTest { public void testCase(String pgValue, Geometry expected) throws SQLException { PGobject pgo = new PGobject(); + System.out.println( "pgValue " + pgValue ); pgo.setValue( pgValue ); Geometry received = PGGeometryTypeDescriptor.toGeometry( pgo ); assertEquals( String.format( "Failure on %s", pgValue ), expected, received ); diff --git a/hibernate-spatial/src/test/java/org/hibernate/spatial/integration/TestSpatialFunctions.java b/hibernate-spatial/src/test/java/org/hibernate/spatial/integration/TestSpatialFunctions.java index a610ab5e1e..4e89a4ab1f 100644 --- a/hibernate-spatial/src/test/java/org/hibernate/spatial/integration/TestSpatialFunctions.java +++ b/hibernate-spatial/src/test/java/org/hibernate/spatial/integration/TestSpatialFunctions.java @@ -676,28 +676,6 @@ public class TestSpatialFunctions extends SpatialFunctionalTestCase { } - @Test - public void test_extent_on_jts() throws SQLException { - extent( JTS ); - } - - @Test - public void test_extent_on_geolatte() throws SQLException { - extent( GEOLATTE ); - } - - public void extent(String pckg) throws SQLException { - if ( !isSupportedByDialect( SpatialFunction.extent ) ) { - return; - } - // here we just check if we get a result, and can read it - String hql = format( - "SELECT id, extent(geom) from org.hibernate.spatial.integration.%s.GeomEntity group by id", pckg - ); - Map hsreceived = new HashMap(); - doInSession( hql, hsreceived, new HashMap() ); - } - public void retrieveHQLResultsAndCompare(Map dbexpected, String hql, String geometryType) { retrieveHQLResultsAndCompare( dbexpected, hql, null, geometryType ); }