From d67b0004b2c5ebdca1220590cfc02d08a28880b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Thu, 5 Nov 2015 21:29:54 +0200 Subject: [PATCH] Add more Hibernate spatial mappings --- .../hibernate/HibernateSpatialSupport.java | 56 ++++++++++++++++++- .../HibernateSpatialSupportTest.java | 21 +++++++ 2 files changed, 75 insertions(+), 2 deletions(-) create mode 100644 querydsl-spatial/src/test/java/com/querydsl/spatial/hibernate/HibernateSpatialSupportTest.java diff --git a/querydsl-spatial/src/main/java/com/querydsl/spatial/hibernate/HibernateSpatialSupport.java b/querydsl-spatial/src/main/java/com/querydsl/spatial/hibernate/HibernateSpatialSupport.java index 2d526ded3..25e12d1e9 100644 --- a/querydsl-spatial/src/main/java/com/querydsl/spatial/hibernate/HibernateSpatialSupport.java +++ b/querydsl-spatial/src/main/java/com/querydsl/spatial/hibernate/HibernateSpatialSupport.java @@ -32,12 +32,14 @@ public final class HibernateSpatialSupport { ops.put(SpatialOps.DIMENSION, "dimension({0})"); ops.put(SpatialOps.GEOMETRY_TYPE, "geometrytype({0}, {1})"); ops.put(SpatialOps.SRID, "srid({0})"); + ops.put(SpatialOps.SRID2, "srid2({0}, {1})"); ops.put(SpatialOps.ENVELOPE, "envelope({0})"); ops.put(SpatialOps.AS_TEXT, "astext({0})"); ops.put(SpatialOps.AS_BINARY, "asbinary({0})"); ops.put(SpatialOps.IS_EMPTY, "isempty({0})"); ops.put(SpatialOps.IS_SIMPLE, "issimple({0})"); ops.put(SpatialOps.BOUNDARY, "boundary({0})"); + ops.put(SpatialOps.EXTENT, "extent({0})"); ops.put(SpatialOps.EQUALS, "equals({0}, {1}) = true"); ops.put(SpatialOps.DISJOINT, "disjoint({0}, {1}) = true"); @@ -50,15 +52,65 @@ public final class HibernateSpatialSupport { ops.put(SpatialOps.RELATE, "relate({0}, {1}, {2}) = true"); ops.put(SpatialOps.DISTANCE, "distance({0}, {1})"); + ops.put(SpatialOps.DISTANCE2, "distance({0}, {1}, {2})"); + ops.put(SpatialOps.DISTANCE_SPHERE, "distancesphere({0}, {1})"); + ops.put(SpatialOps.DISTANCE_SPHEROID, "distancespheroid({0}, {1})"); + ops.put(SpatialOps.BUFFER, "buffer({0}, {1})"); + ops.put(SpatialOps.BUFFER2, "buffer({0}, {1}, {2})"); ops.put(SpatialOps.CONVEXHULL, "convexhull({0})"); ops.put(SpatialOps.INTERSECTION, "intersection({0}, {1})"); ops.put(SpatialOps.UNION, "geomunion({0}, {1})"); ops.put(SpatialOps.DIFFERENCE, "difference({0}, {1})"); ops.put(SpatialOps.SYMDIFFERENCE, "symdifference({0}, {1})"); - // dwithin({0}, {1}, 2) + ops.put(SpatialOps.DWITHIN, "dwithin({0}, {1}, {2}) = true"); ops.put(SpatialOps.TRANSFORM, "transform({0}, {1})"); - // extent({0}) + + // custom + ops.put(SpatialOps.WKTTOSQL, "wkttosql({0}, {1})"); + ops.put(SpatialOps.WKBTOSQL, "wkbtosql({0}, {1})"); + ops.put(SpatialOps.X, "x({0})"); + ops.put(SpatialOps.X2, "x({0}, {1})"); + ops.put(SpatialOps.Y, "y({0})"); + ops.put(SpatialOps.Y2, "y({0}, {1})"); + ops.put(SpatialOps.Z, "y({0})"); + ops.put(SpatialOps.Z2, "y({0}, {1})"); + ops.put(SpatialOps.M, "y({0})"); + ops.put(SpatialOps.M2, "y({0}, {1})"); + ops.put(SpatialOps.START_POINT, "startpoint({0})"); + ops.put(SpatialOps.END_POINT, "endpoint({0})"); + ops.put(SpatialOps.IS_RING, "isring({0})"); + ops.put(SpatialOps.LENGTH, "length({0})"); + ops.put(SpatialOps.LENGTH2, "length({0}, {1})"); + ops.put(SpatialOps.NUM_POINTS, "numpoints({0})"); + ops.put(SpatialOps.POINTN, "pointn({0})"); + ops.put(SpatialOps.AREA, "area({0})"); + ops.put(SpatialOps.AREA2, "area({0}, {1})"); + ops.put(SpatialOps.CENTROID, "centroid({0})"); + ops.put(SpatialOps.POINT_ON_SURFACE, "pointonsurface({0})"); + ops.put(SpatialOps.EXTERIOR_RING, "exteriorring({0})"); + ops.put(SpatialOps.EXTERIOR_RING2, "exteriorring({0}, {1})"); + ops.put(SpatialOps.INTERIOR_RINGS, "interiorrings({0})"); + ops.put(SpatialOps.INTERIOR_RINGS2, "interiorrings({0}, {1})"); + ops.put(SpatialOps.NUM_INTERIOR_RING, "numinteriorring({0})"); + ops.put(SpatialOps.INTERIOR_RINGN, "interiorringn({0}, {1})"); + ops.put(SpatialOps.GEOMETRIES, "geometries({0})"); + ops.put(SpatialOps.NUM_SURFACES, "numsurfaces({0})"); + ops.put(SpatialOps.SURFACE, "surface({0})"); + ops.put(SpatialOps.NUM_GEOMETRIES, "numgeometries({0})"); + ops.put(SpatialOps.GEOMETRYN, "geometryn({0})"); + ops.put(SpatialOps.IS_CLOSED, "isclosed({0})"); + ops.put(SpatialOps.AS_EWKT, "asewkt({0})"); + ops.put(SpatialOps.GEOM_FROM_TEXT, "geomfromtext({0})"); + ops.put(SpatialOps.SET_SRID, "setsrid({0}, {1})"); + ops.put(SpatialOps.XMIN, "xmin({0})"); + ops.put(SpatialOps.XMAX, "xmax({0})"); + ops.put(SpatialOps.YMIN, "ymin({0})"); + ops.put(SpatialOps.YMAX, "ymax({0})"); + ops.put(SpatialOps.COLLECT, "collect({0})"); + ops.put(SpatialOps.COLLECT2, "collect({0}, {1})"); + ops.put(SpatialOps.TRANSLATE, "translate({0})"); + ops.put(SpatialOps.TRANSLATE2, "translate({0}, {1})"); return ops; } } diff --git a/querydsl-spatial/src/test/java/com/querydsl/spatial/hibernate/HibernateSpatialSupportTest.java b/querydsl-spatial/src/test/java/com/querydsl/spatial/hibernate/HibernateSpatialSupportTest.java new file mode 100644 index 000000000..772363766 --- /dev/null +++ b/querydsl-spatial/src/test/java/com/querydsl/spatial/hibernate/HibernateSpatialSupportTest.java @@ -0,0 +1,21 @@ +package com.querydsl.spatial.hibernate; + +import static org.junit.Assert.assertTrue; + +import java.util.Map; + +import org.junit.Test; + +import com.querydsl.core.types.Operator; +import com.querydsl.spatial.SpatialOps; + +public class HibernateSpatialSupportTest { + + @Test + public void allMapped() { + Map mapping = HibernateSpatialSupport.getSpatialOps(); + for (Operator operator : SpatialOps.values()) { + assertTrue(operator + " missing", mapping.containsKey(operator)); + } + } +}