Index: plugin.xml =================================================================== --- plugin.xml (revision 9774) +++ plugin.xml (working copy) @@ -130,6 +130,8 @@ + + + + + + Index: src/java/org/datanucleus/store/rdbms/sql/method/SpatialBboxTestMethod.java =================================================================== --- src/java/org/datanucleus/store/rdbms/sql/method/SpatialBboxTestMethod.java (revision 0) +++ src/java/org/datanucleus/store/rdbms/sql/method/SpatialBboxTestMethod.java (revision 0) @@ -0,0 +1,33 @@ +package org.datanucleus.store.rdbms.sql.method; + +import java.util.ArrayList; +import java.util.List; + +import org.datanucleus.exceptions.NucleusUserException; +import org.datanucleus.query.expression.Expression; +import org.datanucleus.query.expression.Expression.DyadicOperator; +import org.datanucleus.store.mapped.mapping.JavaTypeMapping; +import org.datanucleus.store.rdbms.sql.expression.BooleanExpression; +import org.datanucleus.store.rdbms.sql.expression.GeometryExpression; +import org.datanucleus.store.rdbms.sql.expression.SQLExpression; + +public class SpatialBboxTestMethod extends AbstractSQLMethod +{ + private static final DyadicOperator BBOX_OVERLAPS = new Expression.DyadicOperator("&&", 3, false); + + /* (non-Javadoc) + * @see org.datanucleus.store.rdbms.sql.method.SQLMethod#getExpression(org.datanucleus.store.rdbms.sql.expression.SQLExpression, java.util.List) + */ + public SQLExpression getExpression(SQLExpression ignore, List args) + { + if (args == null || args.size() != 2) + { + throw new NucleusUserException("Cannot invoke Spatial.overlaps without 2 arguments"); + } + + SQLExpression argExpr1 = (SQLExpression)args.get(0); // Geometry 1 + SQLExpression argExpr2 = (SQLExpression)args.get(1); // Geometry 2 + + return new BooleanExpression(argExpr1,BBOX_OVERLAPS,argExpr2); + } +} \ No newline at end of file