This is an automated email from the ASF dual-hosted git repository. jsorel pushed a commit to branch feat/sqlmm in repository https://gitbox.apache.org/repos/asf/sis.git
commit 1dac05559ab7a2eb0135d6d9dd8864c61d888878 Author: jsorel <[email protected]> AuthorDate: Wed Nov 27 12:22:49 2019 +0100 SQL/MM : cleaning code --- .../AbstractAccessorSpatialFunction.java | 5 +- .../{todo => }/AbstractBinarySpatialFunction.java | 2 +- .../sqlmm/{todo => }/AbstractGeomConstructor.java | 9 ++- .../sqlmm/{todo => }/AbstractSpatialFunction.java | 47 ++++++++++++- .../apache/sis/internal/filter/sqlmm/SQLMM.java | 55 --------------- .../internal/filter/sqlmm/{todo => }/ST_Area.java | 4 +- .../filter/sqlmm/{todo => }/ST_AsBinary.java | 8 +-- .../internal/filter/sqlmm/{todo => }/ST_AsGML.java | 4 +- .../filter/sqlmm/{todo => }/ST_AsText.java | 4 +- .../filter/sqlmm/{todo => }/ST_Boundary.java | 10 +-- .../sis/internal/filter/sqlmm/ST_Buffer.java | 9 +++ .../sis/internal/filter/sqlmm/ST_Centroid.java | 12 ++++ .../filter/sqlmm/{todo => }/ST_Contains.java | 4 +- .../filter/sqlmm/{todo => }/ST_ConvexHull.java | 10 +-- .../filter/sqlmm/{todo => }/ST_CoordDim.java | 4 +- .../filter/sqlmm/{todo => }/ST_Crosses.java | 4 +- .../filter/sqlmm/{todo => }/ST_Difference.java | 10 +-- .../filter/sqlmm/{todo => }/ST_Dimension.java | 4 +- .../filter/sqlmm/{todo => }/ST_Disjoint.java | 2 +- .../filter/sqlmm/{todo => }/ST_Distance.java | 4 +- .../filter/sqlmm/{todo => }/ST_EndPoint.java | 9 ++- .../filter/sqlmm/{todo => }/ST_Equals.java | 4 +- .../filter/sqlmm/{todo => }/ST_ExplicitPoint.java | 4 +- .../filter/sqlmm/{todo => }/ST_ExteriorRing.java | 10 +-- .../filter/sqlmm/{todo => }/ST_GeomCollection.java | 11 +-- .../filter/sqlmm/{todo => }/ST_GeometryN.java | 10 +-- .../filter/sqlmm/{todo => }/ST_GeometryType.java | 8 +-- .../filter/sqlmm/{todo => }/ST_InteriorRingN.java | 10 +-- .../filter/sqlmm/{todo => }/ST_Intersection.java | 10 +-- .../filter/sqlmm/{todo => }/ST_Intersects.java | 7 +- .../internal/filter/sqlmm/{todo => }/ST_Is3D.java | 7 +- .../filter/sqlmm/{todo => }/ST_IsClosed.java | 4 +- .../filter/sqlmm/{todo => }/ST_IsEmpty.java | 4 +- .../filter/sqlmm/{todo => }/ST_IsRing.java | 4 +- .../filter/sqlmm/{todo => }/ST_IsSimple.java | 4 +- .../filter/sqlmm/{todo => }/ST_IsValid.java | 4 +- .../filter/sqlmm/{todo => }/ST_Length.java | 4 +- .../sqlmm/{todo => }/ST_MultiLineString.java | 11 +-- .../filter/sqlmm/{todo => }/ST_MultiPoint.java | 11 +-- .../filter/sqlmm/{todo => }/ST_MultiPolygon.java | 11 +-- .../filter/sqlmm/{todo => }/ST_NumGeometries.java | 4 +- .../sqlmm/{todo => }/ST_NumInteriorRings.java | 4 +- .../filter/sqlmm/{todo => }/ST_NumPoints.java | 4 +- .../filter/sqlmm/{todo => }/ST_Overlaps.java | 4 +- .../filter/sqlmm/{todo => }/ST_Perimeter.java | 4 +- .../filter/sqlmm/{todo => }/ST_PointN.java | 10 +-- .../filter/sqlmm/{todo => }/ST_PointOnSurface.java | 10 +-- .../filter/sqlmm/{todo => }/ST_Polygon.java | 4 +- .../filter/sqlmm/{todo => }/ST_Relate.java | 4 +- .../internal/filter/sqlmm/{todo => }/ST_SRID.java | 4 +- .../filter/sqlmm/{todo => }/ST_StartPoint.java | 9 ++- .../filter/sqlmm/{todo => }/ST_SymDifference.java | 10 +-- .../filter/sqlmm/{todo => }/ST_Touches.java | 4 +- .../internal/filter/sqlmm/{todo => }/ST_Union.java | 10 +-- .../filter/sqlmm/{todo => }/ST_Within.java | 4 +- .../sis/internal/filter/sqlmm/{todo => }/ST_X.java | 4 +- .../filter/sqlmm/{todo => }/ST_XFromBinary.java | 4 +- .../filter/sqlmm/{todo => }/ST_XFromGML.java | 4 +- .../filter/sqlmm/{todo => }/ST_XFromText.java | 4 +- .../sis/internal/filter/sqlmm/{todo => }/ST_Y.java | 4 +- .../sis/internal/filter/sqlmm/{todo => }/ST_Z.java | 4 +- .../sis/internal/filter/sqlmm/todo/ST_Buffer.java | 78 ---------------------- .../internal/filter/sqlmm/todo/ST_Centroid.java | 69 ------------------- .../internal/filter/sqlmm/todo/ST_Envelope.java | 66 ------------------ .../internal/filter/sqlmm/todo/ST_LineString.java | 10 +-- .../sis/internal/filter/sqlmm/todo/ST_Point.java | 1 + .../internal/filter/sqlmm/todo/ST_ToGeomColl.java | 1 + .../filter/sqlmm/todo/ST_ToLineString.java | 1 + .../internal/filter/sqlmm/todo/ST_ToMultiLine.java | 1 + .../filter/sqlmm/todo/ST_ToMultiPoint.java | 1 + .../filter/sqlmm/todo/ST_ToMultiPolygon.java | 1 + .../sis/internal/filter/sqlmm/todo/ST_ToPoint.java | 1 + .../internal/filter/sqlmm/todo/ST_ToPolygon.java | 1 + 73 files changed, 252 insertions(+), 450 deletions(-) diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/AbstractAccessorSpatialFunction.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/AbstractAccessorSpatialFunction.java similarity index 95% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/AbstractAccessorSpatialFunction.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/AbstractAccessorSpatialFunction.java index 2c4963a..202f66d 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/AbstractAccessorSpatialFunction.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/AbstractAccessorSpatialFunction.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import java.text.ParseException; @@ -25,6 +25,9 @@ import org.opengis.filter.expression.Expression; * Spatial methods accessing properties of a geometry. * * @author Johann Sorel (Geomatys) + * @version 2.0 + * @since 2.0 + * @module */ public abstract class AbstractAccessorSpatialFunction<T extends Geometry> extends AbstractSpatialFunction { diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/AbstractBinarySpatialFunction.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/AbstractBinarySpatialFunction.java similarity index 98% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/AbstractBinarySpatialFunction.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/AbstractBinarySpatialFunction.java index 773db54..6ee163e 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/AbstractBinarySpatialFunction.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/AbstractBinarySpatialFunction.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import java.text.ParseException; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/AbstractGeomConstructor.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/AbstractGeomConstructor.java similarity index 84% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/AbstractGeomConstructor.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/AbstractGeomConstructor.java index 2b0e111..dec365d 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/AbstractGeomConstructor.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/AbstractGeomConstructor.java @@ -14,10 +14,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; +import org.apache.sis.feature.builder.FeatureTypeBuilder; +import org.apache.sis.feature.builder.PropertyTypeBuilder; import org.apache.sis.internal.filter.FilterGeometryUtils; import org.locationtech.jts.geom.Geometry; +import org.opengis.feature.FeatureType; import org.opengis.filter.expression.Expression; /** @@ -68,4 +71,8 @@ public abstract class AbstractGeomConstructor extends AbstractSpatialFunction { return geom; } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(getExpectedClass()).setName(getName()); + } } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/AbstractSpatialFunction.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/AbstractSpatialFunction.java similarity index 51% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/AbstractSpatialFunction.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/AbstractSpatialFunction.java index a33913c..e6e98f5 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/AbstractSpatialFunction.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/AbstractSpatialFunction.java @@ -14,22 +14,32 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; +import java.util.Map; +import org.apache.sis.feature.Features; +import org.apache.sis.feature.builder.FeatureTypeBuilder; +import org.apache.sis.internal.feature.AttributeConvention; import org.apache.sis.internal.feature.FeatureExpression; +import org.apache.sis.internal.feature.jts.JTS; import org.apache.sis.internal.filter.NamedFunction; +import org.locationtech.jts.geom.Geometry; +import org.opengis.feature.AttributeType; +import org.opengis.feature.FeatureType; +import org.opengis.feature.PropertyType; import org.opengis.filter.expression.Expression; +import org.opengis.referencing.crs.CoordinateReferenceSystem; /** * * @author Johann Sorel (Geomatys) * @version 2.0 - * @since 2.0 + * @since 2.0 * @module */ public abstract class AbstractSpatialFunction extends NamedFunction implements FeatureExpression { - public AbstractSpatialFunction(Expression[] parameters){ + public AbstractSpatialFunction(Expression[] parameters) { super(parameters); } @@ -69,4 +79,35 @@ public abstract class AbstractSpatialFunction extends NamedFunction implements F return sb.toString(); } + + protected static CoordinateReferenceSystem expectedCrs(FeatureType type, Expression exp) { + + final PropertyType expressionType = FeatureExpression.expectedType(exp, type, new FeatureTypeBuilder()).build(); + final AttributeType<?> attr = Features.castOrUnwrap(expressionType).orElse(null); + if (attr == null) { + return null; + } + + final AttributeType<CoordinateReferenceSystem> crsCharacteristic = (AttributeType<CoordinateReferenceSystem>) + attr.characteristics().get(AttributeConvention.CRS_CHARACTERISTIC); + return crsCharacteristic == null ? null : crsCharacteristic.getDefaultValue(); + } + + protected static void copyCrs(Geometry source, Geometry target) { + if (source == null || target == null) return; + + final Object userData = source.getUserData(); + CoordinateReferenceSystem crs = null; + if (userData instanceof CoordinateReferenceSystem) { + crs = (CoordinateReferenceSystem) userData; + } else if (userData instanceof Map<?,?>) { + final Map<?,?> map = (Map<?,?>) userData; + final Object value = map.get(JTS.CRS_KEY); + if (value instanceof CoordinateReferenceSystem) { + crs = (CoordinateReferenceSystem) value; + } + } + target.setUserData(crs); + target.setSRID(source.getSRID()); + } } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/SQLMM.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/SQLMM.java index bf11527..e59ed55 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/SQLMM.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/SQLMM.java @@ -23,51 +23,6 @@ import org.opengis.filter.expression.Function; import org.opengis.util.FactoryException; import org.apache.sis.internal.feature.FunctionRegister; import org.apache.sis.internal.feature.Resources; -import org.apache.sis.internal.filter.sqlmm.todo.ST_ExteriorRing; -import org.apache.sis.internal.filter.sqlmm.todo.ST_InteriorRingN; -import org.apache.sis.internal.filter.sqlmm.todo.ST_NumInteriorRings; -import org.apache.sis.internal.filter.sqlmm.todo.ST_EndPoint; -import org.apache.sis.internal.filter.sqlmm.todo.ST_IsClosed; -import org.apache.sis.internal.filter.sqlmm.todo.ST_IsRing; -import org.apache.sis.internal.filter.sqlmm.todo.ST_Length; -import org.apache.sis.internal.filter.sqlmm.todo.ST_StartPoint; -import org.apache.sis.internal.filter.sqlmm.todo.ST_GeometryN; -import org.apache.sis.internal.filter.sqlmm.todo.ST_NumGeometries; -import org.apache.sis.internal.filter.sqlmm.todo.ST_NumPoints; -import org.apache.sis.internal.filter.sqlmm.todo.ST_PointN; -import org.apache.sis.internal.filter.sqlmm.todo.ST_ExplicitPoint; -import org.apache.sis.internal.filter.sqlmm.todo.ST_X; -import org.apache.sis.internal.filter.sqlmm.todo.ST_Y; -import org.apache.sis.internal.filter.sqlmm.todo.ST_Z; -import org.apache.sis.internal.filter.sqlmm.todo.ST_AsBinary; -import org.apache.sis.internal.filter.sqlmm.todo.ST_AsGML; -import org.apache.sis.internal.filter.sqlmm.todo.ST_AsText; -import org.apache.sis.internal.filter.sqlmm.todo.ST_Boundary; -import org.apache.sis.internal.filter.sqlmm.todo.ST_Contains; -import org.apache.sis.internal.filter.sqlmm.todo.ST_ConvexHull; -import org.apache.sis.internal.filter.sqlmm.todo.ST_CoordDim; -import org.apache.sis.internal.filter.sqlmm.todo.ST_Crosses; -import org.apache.sis.internal.filter.sqlmm.todo.ST_Difference; -import org.apache.sis.internal.filter.sqlmm.todo.ST_Dimension; -import org.apache.sis.internal.filter.sqlmm.todo.ST_Disjoint; -import org.apache.sis.internal.filter.sqlmm.todo.ST_Distance; -import org.apache.sis.internal.filter.sqlmm.todo.ST_Equals; -import org.apache.sis.internal.filter.sqlmm.todo.ST_GeomCollection; -import org.apache.sis.internal.filter.sqlmm.todo.ST_GeometryType; -import org.apache.sis.internal.filter.sqlmm.todo.ST_Intersection; -import org.apache.sis.internal.filter.sqlmm.todo.ST_Intersects; -import org.apache.sis.internal.filter.sqlmm.todo.ST_Is3D; -import org.apache.sis.internal.filter.sqlmm.todo.ST_IsEmpty; -import org.apache.sis.internal.filter.sqlmm.todo.ST_IsSimple; -import org.apache.sis.internal.filter.sqlmm.todo.ST_IsValid; -import org.apache.sis.internal.filter.sqlmm.todo.ST_MultiLineString; -import org.apache.sis.internal.filter.sqlmm.todo.ST_MultiPoint; -import org.apache.sis.internal.filter.sqlmm.todo.ST_MultiPolygon; -import org.apache.sis.internal.filter.sqlmm.todo.ST_Overlaps; -import org.apache.sis.internal.filter.sqlmm.todo.ST_Polygon; -import org.apache.sis.internal.filter.sqlmm.todo.ST_Relate; -import org.apache.sis.internal.filter.sqlmm.todo.ST_SRID; -import org.apache.sis.internal.filter.sqlmm.todo.ST_SymDifference; import org.apache.sis.internal.filter.sqlmm.todo.ST_ToGeomColl; import org.apache.sis.internal.filter.sqlmm.todo.ST_ToLineString; import org.apache.sis.internal.filter.sqlmm.todo.ST_ToMultiLine; @@ -75,16 +30,6 @@ import org.apache.sis.internal.filter.sqlmm.todo.ST_ToMultiPoint; import org.apache.sis.internal.filter.sqlmm.todo.ST_ToMultiPolygon; import org.apache.sis.internal.filter.sqlmm.todo.ST_ToPoint; import org.apache.sis.internal.filter.sqlmm.todo.ST_ToPolygon; -import org.apache.sis.internal.filter.sqlmm.todo.ST_Touches; -import org.apache.sis.internal.filter.sqlmm.todo.ST_Union; -import org.apache.sis.internal.filter.sqlmm.todo.ST_Within; -import org.apache.sis.internal.filter.sqlmm.todo.ST_XFromBinary; -import org.apache.sis.internal.filter.sqlmm.todo.ST_XFromGML; -import org.apache.sis.internal.filter.sqlmm.todo.ST_XFromText; -import org.apache.sis.internal.filter.sqlmm.todo.ST_Area; -import org.apache.sis.internal.filter.sqlmm.todo.ST_Centroid; -import org.apache.sis.internal.filter.sqlmm.todo.ST_Perimeter; -import org.apache.sis.internal.filter.sqlmm.todo.ST_PointOnSurface; import org.apache.sis.util.ArgumentChecks; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Area.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Area.java similarity index 94% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Area.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Area.java index ddf3463..4af564b 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Area.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Area.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import java.text.ParseException; @@ -34,7 +34,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_Area extends AbstractAccessorSpatialFunction<Geometry> { +final class ST_Area extends AbstractAccessorSpatialFunction<Geometry> { public static final String NAME = "ST_Area"; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_AsBinary.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_AsBinary.java similarity index 87% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_AsBinary.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_AsBinary.java index a8801d2..2fcfb94 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_AsBinary.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_AsBinary.java @@ -14,10 +14,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; -import org.locationtech.jts.io.WKBWriter; import java.text.ParseException; import org.apache.sis.feature.builder.FeatureTypeBuilder; import org.apache.sis.feature.builder.PropertyTypeBuilder; @@ -34,7 +33,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_AsBinary extends AbstractAccessorSpatialFunction<Geometry> { +final class ST_AsBinary extends AbstractAccessorSpatialFunction<Geometry> { public static final String NAME = "ST_AsBinary"; @@ -54,8 +53,7 @@ public final class ST_AsBinary extends AbstractAccessorSpatialFunction<Geometry> @Override public Object execute(Geometry geom, Object... params) throws ParseException { - final WKBWriter writer = FilterGeometryUtils.getWKBWriter(); - return writer.write(geom); + return FilterGeometryUtils.getWKBWriter().write(geom); } @Override diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_AsGML.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_AsGML.java similarity index 93% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_AsGML.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_AsGML.java index 66b267d..94cf609 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_AsGML.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_AsGML.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import java.text.ParseException; @@ -32,7 +32,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_AsGML extends AbstractAccessorSpatialFunction<Geometry> { +final class ST_AsGML extends AbstractAccessorSpatialFunction<Geometry> { public static final String NAME = "ST_AsGML"; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_AsText.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_AsText.java similarity index 94% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_AsText.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_AsText.java index e839d1b..64de78b 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_AsText.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_AsText.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.io.WKTWriter; @@ -34,7 +34,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_AsText extends AbstractAccessorSpatialFunction<Geometry> { +final class ST_AsText extends AbstractAccessorSpatialFunction<Geometry> { public static final String NAME = "ST_AsText"; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Boundary.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Boundary.java similarity index 86% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Boundary.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Boundary.java index 54501a2..f700498 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Boundary.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Boundary.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import java.text.ParseException; @@ -33,7 +33,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_Boundary extends AbstractAccessorSpatialFunction<Geometry> { +final class ST_Boundary extends AbstractAccessorSpatialFunction<Geometry> { public static final String NAME = "ST_Boundary"; @@ -54,13 +54,15 @@ public final class ST_Boundary extends AbstractAccessorSpatialFunction<Geometry> @Override public Object execute(Geometry geom, Object... params) throws ParseException { final Geometry bound = geom.getBoundary(); - bound.setSRID(geom.getSRID()); + copyCrs(geom, bound); return bound; } @Override public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { - return addTo.addAttribute(Geometry.class).setName(NAME); + return addTo.addAttribute(Geometry.class) + .setCRS(expectedCrs(valueType, parameters.get(0))) + .setName(NAME); } } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Buffer.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Buffer.java index b84c18b..b24c25d 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Buffer.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Buffer.java @@ -28,8 +28,17 @@ import org.opengis.filter.expression.Expression; /** + * SQL/MM, ISO/IEC 13249-3:2011, ST_Buffer. <br> + * <p> + * Return the ST_Geometry value that represents all points whose distance from any point of an ST_Geometry + * value is less than or equal to a specified distance, ignoring z and m coordinate values in the calculations and + * not including them in the resultant geometry. + * </p> + * + * <p> * An expression which computes a geometry buffer. * This expression expects two arguments: + * </p> * * <ol class="verbose"> * <li>An expression returning a geometry object. The evaluated value shall be an instance of diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Centroid.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Centroid.java index 525b04f..f2f2b3b 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Centroid.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Centroid.java @@ -28,8 +28,20 @@ import org.opengis.filter.expression.Expression; /** + * SQL/MM, ISO/IEC 13249-3:2011, ST_Centroid. <br> + * <p> + * Return the 2D ST_Point value that is the mathematical centroid of the ST_Surface value, ignoring z and m + * coordinate values in the calculations and not including them in the resultant geometry. + * </p> + * + * <p> + * This class should be for all surface types, but JTS only has Polygon and MultiPolygon. + * </p> + * + * <p> * An expression which computes the centroid of a geometry. * This expression expects one argument: + * </p> * * <ol class="verbose"> * <li>An expression returning a geometry object. The evaluated value shall be an instance of diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Contains.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Contains.java similarity index 94% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Contains.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Contains.java index 9f83dea..52ebb89 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Contains.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Contains.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import java.text.ParseException; @@ -33,7 +33,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_Contains extends AbstractBinarySpatialFunction { +final class ST_Contains extends AbstractBinarySpatialFunction { public static final String NAME = "ST_Contains"; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ConvexHull.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_ConvexHull.java similarity index 86% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ConvexHull.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_ConvexHull.java index baa32da..f23d0b9 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ConvexHull.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_ConvexHull.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import java.text.ParseException; @@ -33,7 +33,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_ConvexHull extends AbstractAccessorSpatialFunction<Geometry> { +final class ST_ConvexHull extends AbstractAccessorSpatialFunction<Geometry> { public static final String NAME = "ST_ConvexHull"; @@ -54,13 +54,15 @@ public final class ST_ConvexHull extends AbstractAccessorSpatialFunction<Geometr @Override public Object execute(Geometry geom, Object... params) throws ParseException { final Geometry res = geom.convexHull(); - res.setSRID(geom.getSRID()); + copyCrs(geom, res); return res; } @Override public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { - return addTo.addAttribute(Geometry.class).setName(NAME); + return addTo.addAttribute(Geometry.class) + .setCRS(expectedCrs(valueType, parameters.get(0))) + .setName(NAME); } } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_CoordDim.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_CoordDim.java similarity index 93% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_CoordDim.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_CoordDim.java index 39ecf9b..3b4927b 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_CoordDim.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_CoordDim.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Coordinate; import org.locationtech.jts.geom.Geometry; @@ -33,7 +33,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_CoordDim extends AbstractAccessorSpatialFunction<Geometry> { +final class ST_CoordDim extends AbstractAccessorSpatialFunction<Geometry> { public static final String NAME = "ST_CoordDim"; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Crosses.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Crosses.java similarity index 94% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Crosses.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Crosses.java index 957b709..f42f6d9 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Crosses.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Crosses.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import java.text.ParseException; @@ -33,7 +33,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_Crosses extends AbstractBinarySpatialFunction { +final class ST_Crosses extends AbstractBinarySpatialFunction { public static final String NAME = "ST_Crosses"; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Difference.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Difference.java similarity index 87% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Difference.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Difference.java index f1d0c9c..1a1cf6f 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Difference.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Difference.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import java.text.ParseException; @@ -33,7 +33,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_Difference extends AbstractBinarySpatialFunction { +final class ST_Difference extends AbstractBinarySpatialFunction { public static final String NAME = "ST_Difference"; @@ -49,13 +49,15 @@ public final class ST_Difference extends AbstractBinarySpatialFunction { @Override public Object execute(Geometry left, Geometry right, Object... params) throws ParseException { final Geometry res = left.difference(right); - res.setSRID(left.getSRID()); + copyCrs(left, res); return res; } @Override public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { - return addTo.addAttribute(Geometry.class).setName(NAME); + return addTo.addAttribute(Geometry.class) + .setCRS(expectedCrs(valueType, parameters.get(0))) + .setName(NAME); } } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Dimension.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Dimension.java similarity index 93% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Dimension.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Dimension.java index f197595..772b9e1 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Dimension.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Dimension.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import java.text.ParseException; @@ -32,7 +32,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_Dimension extends AbstractAccessorSpatialFunction<Geometry> { +final class ST_Dimension extends AbstractAccessorSpatialFunction<Geometry> { public static final String NAME = "ST_Dimension"; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Disjoint.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Disjoint.java similarity index 97% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Disjoint.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Disjoint.java index ec6116e..ac69e1a 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Disjoint.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Disjoint.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import java.text.ParseException; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Distance.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Distance.java similarity index 93% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Distance.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Distance.java index 5ab2c7c..d69bb48 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Distance.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Distance.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import java.text.ParseException; @@ -32,7 +32,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_Distance extends AbstractBinarySpatialFunction { +final class ST_Distance extends AbstractBinarySpatialFunction { public static final String NAME = "ST_Distance"; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_EndPoint.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_EndPoint.java similarity index 87% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_EndPoint.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_EndPoint.java index fe176b1..43ff1ce 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_EndPoint.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_EndPoint.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.LineString; import org.locationtech.jts.geom.Point; @@ -34,7 +34,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_EndPoint extends AbstractAccessorSpatialFunction<LineString> { +final class ST_EndPoint extends AbstractAccessorSpatialFunction<LineString> { public static final String NAME = "ST_EndPoint"; @@ -55,12 +55,15 @@ public final class ST_EndPoint extends AbstractAccessorSpatialFunction<LineStrin @Override public Object execute(LineString geom, Object... params) throws ParseException { final Point pt = geom.getEndPoint(); + copyCrs(geom, pt); return pt; } @Override public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { - return addTo.addAttribute(Point.class).setName(NAME); + return addTo.addAttribute(Point.class) + .setCRS(expectedCrs(valueType, parameters.get(0))) + .setName(NAME); } } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Equals.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Equals.java similarity index 94% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Equals.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Equals.java index 842fbd1..ccc35b7 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Equals.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Equals.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import java.text.ParseException; @@ -33,7 +33,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_Equals extends AbstractBinarySpatialFunction { +final class ST_Equals extends AbstractBinarySpatialFunction { public static final String NAME = "ST_Equals"; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ExplicitPoint.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_ExplicitPoint.java similarity index 94% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ExplicitPoint.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_ExplicitPoint.java index e45e474..acb7a57 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ExplicitPoint.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_ExplicitPoint.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Coordinate; import org.locationtech.jts.geom.Point; @@ -35,7 +35,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_ExplicitPoint extends AbstractAccessorSpatialFunction<Point> { +final class ST_ExplicitPoint extends AbstractAccessorSpatialFunction<Point> { public static final String NAME = "ST_ExplicitPoint"; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ExteriorRing.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_ExteriorRing.java similarity index 86% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ExteriorRing.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_ExteriorRing.java index 4dd6631..cd57969 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ExteriorRing.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_ExteriorRing.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.LineString; import org.locationtech.jts.geom.Polygon; @@ -33,7 +33,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_ExteriorRing extends AbstractAccessorSpatialFunction<Polygon> { +final class ST_ExteriorRing extends AbstractAccessorSpatialFunction<Polygon> { public static final String NAME = "ST_ExteriorRing"; @@ -54,12 +54,14 @@ public final class ST_ExteriorRing extends AbstractAccessorSpatialFunction<Polyg @Override public Object execute(Polygon geom, Object... params) throws ParseException { final LineString ring = geom.getExteriorRing(); - ring.setSRID(geom.getSRID()); + copyCrs(geom, ring); return ring; } @Override public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { - return addTo.addAttribute(LineString.class).setName(NAME); + return addTo.addAttribute(LineString.class) + .setCRS(expectedCrs(valueType, parameters.get(0))) + .setName(NAME); } } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_GeomCollection.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_GeomCollection.java similarity index 74% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_GeomCollection.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_GeomCollection.java index f5169b9..c41f9c9 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_GeomCollection.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_GeomCollection.java @@ -14,12 +14,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; -import org.apache.sis.feature.builder.FeatureTypeBuilder; -import org.apache.sis.feature.builder.PropertyTypeBuilder; import org.locationtech.jts.geom.GeometryCollection; -import org.opengis.feature.FeatureType; import org.opengis.filter.expression.Expression; /** @@ -30,7 +27,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_GeomCollection extends AbstractGeomConstructor { +final class ST_GeomCollection extends AbstractGeomConstructor { public static final String NAME = "ST_GeomCollection"; @@ -48,8 +45,4 @@ public final class ST_GeomCollection extends AbstractGeomConstructor { return GeometryCollection.class; } - @Override - public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { - return addTo.addAttribute(GeometryCollection.class).setName(NAME); - } } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_GeometryN.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_GeometryN.java similarity index 87% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_GeometryN.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_GeometryN.java index 1705733..d35a51f 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_GeometryN.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_GeometryN.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import java.text.ParseException; @@ -33,7 +33,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_GeometryN extends AbstractAccessorSpatialFunction<Geometry> { +final class ST_GeometryN extends AbstractAccessorSpatialFunction<Geometry> { public static final String NAME = "ST_GeometryN"; @@ -65,13 +65,15 @@ public final class ST_GeometryN extends AbstractAccessorSpatialFunction<Geometry public Object execute(Geometry geom, Object... params) throws ParseException { final int index = Integer.parseInt(params[1].toString()); final Geometry sub = geom.getGeometryN(index-1); - sub.setSRID(geom.getSRID()); + copyCrs(geom, sub); return sub; } @Override public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { - return addTo.addAttribute(Geometry.class).setName(NAME); + return addTo.addAttribute(Geometry.class) + .setCRS(expectedCrs(valueType, parameters.get(0))) + .setName(NAME); } } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_GeometryType.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_GeometryType.java similarity index 92% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_GeometryType.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_GeometryType.java index dceffe1..9d3105f 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_GeometryType.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_GeometryType.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.GeometryCollection; @@ -42,7 +42,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_GeometryType extends AbstractAccessorSpatialFunction<Geometry> { +final class ST_GeometryType extends AbstractAccessorSpatialFunction<Geometry> { public static final String NAME = "ST_GeometryType"; @@ -74,8 +74,8 @@ public final class ST_GeometryType extends AbstractAccessorSpatialFunction<Geome @Override public Object execute(Geometry geom, Object... params) throws ParseException { - for(Entry<Class,String> entry : TYPES.entrySet()){ - if(entry.getKey().isInstance(geom)){ + for (Entry<Class,String> entry : TYPES.entrySet()) { + if (entry.getKey().isInstance(geom)) { return entry.getValue(); } } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_InteriorRingN.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_InteriorRingN.java similarity index 87% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_InteriorRingN.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_InteriorRingN.java index 0050168..162525b 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_InteriorRingN.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_InteriorRingN.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.LineString; import org.locationtech.jts.geom.Polygon; @@ -33,7 +33,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_InteriorRingN extends AbstractAccessorSpatialFunction<Polygon> { +final class ST_InteriorRingN extends AbstractAccessorSpatialFunction<Polygon> { public static final String NAME = "ST_InteriorRingN"; @@ -55,12 +55,14 @@ public final class ST_InteriorRingN extends AbstractAccessorSpatialFunction<Poly public Object execute(Polygon geom, Object... params) throws ParseException { final int index = Integer.parseInt(params[1].toString()); final LineString ring = geom.getInteriorRingN(index-1); - ring.setSRID(geom.getSRID()); + copyCrs(geom, ring); return ring; } @Override public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { - return addTo.addAttribute(LineString.class).setName(NAME); + return addTo.addAttribute(LineString.class) + .setCRS(expectedCrs(valueType, parameters.get(0))) + .setName(NAME); } } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Intersection.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Intersection.java similarity index 87% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Intersection.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Intersection.java index 5bed5d5..c8d43a7 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Intersection.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Intersection.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import java.text.ParseException; @@ -33,7 +33,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_Intersection extends AbstractBinarySpatialFunction { +final class ST_Intersection extends AbstractBinarySpatialFunction { public static final String NAME = "ST_Intersection"; @@ -49,13 +49,15 @@ public final class ST_Intersection extends AbstractBinarySpatialFunction { @Override public Object execute(Geometry left, Geometry right, Object... params) throws ParseException { final Geometry res = left.intersection(right); - res.setSRID(left.getSRID()); + copyCrs(left, res); return res; } @Override public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { - return addTo.addAttribute(Geometry.class).setName(NAME); + return addTo.addAttribute(Geometry.class) + .setCRS(expectedCrs(valueType, parameters.get(0))) + .setName(NAME); } } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Intersects.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Intersects.java similarity index 91% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Intersects.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Intersects.java index 5588af2..c814c3d 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Intersects.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Intersects.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import java.text.ParseException; @@ -26,15 +26,14 @@ import org.opengis.filter.expression.Expression; /** * SQL/MM, ISO/IEC 13249-3:2011, ST_Intersects. <br> * Test if an ST_Geometry value spatially 2D intersects another ST_Geometry value, ignoring z and m -coordinate values in the calculations. - + * coordinate values in the calculations. * * @author Johann Sorel (Geomatys) * @version 2.0 * @since 2.0 * @module */ -public final class ST_Intersects extends AbstractBinarySpatialFunction { +final class ST_Intersects extends AbstractBinarySpatialFunction { public static final String NAME = "ST_Intersects"; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Is3D.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Is3D.java similarity index 92% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Is3D.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Is3D.java index 6383e54..8f746d6 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Is3D.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Is3D.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Coordinate; import org.locationtech.jts.geom.Geometry; @@ -33,7 +33,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_Is3D extends AbstractAccessorSpatialFunction<Geometry> { +final class ST_Is3D extends AbstractAccessorSpatialFunction<Geometry> { public static final String NAME = "ST_Is3D"; @@ -54,10 +54,9 @@ public final class ST_Is3D extends AbstractAccessorSpatialFunction<Geometry> { @Override public Object execute(Geometry geom, Object... params) throws ParseException { final Coordinate c = geom.getCoordinate(); - if(c != null){ + if (c != null) { return !Double.isNaN(c.z); } - return null; } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_IsClosed.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_IsClosed.java similarity index 93% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_IsClosed.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_IsClosed.java index 6cea4a3..9d687ef 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_IsClosed.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_IsClosed.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.LineString; import java.text.ParseException; @@ -34,7 +34,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_IsClosed extends AbstractAccessorSpatialFunction<LineString> { +final class ST_IsClosed extends AbstractAccessorSpatialFunction<LineString> { public static final String NAME = "ST_IsClosed"; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_IsEmpty.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_IsEmpty.java similarity index 93% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_IsEmpty.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_IsEmpty.java index 0cb3ad7..553e3c7 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_IsEmpty.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_IsEmpty.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import java.text.ParseException; @@ -32,7 +32,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_IsEmpty extends AbstractAccessorSpatialFunction<Geometry> { +final class ST_IsEmpty extends AbstractAccessorSpatialFunction<Geometry> { public static final String NAME = "ST_IsEmpty"; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_IsRing.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_IsRing.java similarity index 93% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_IsRing.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_IsRing.java index 509189c..3410f17 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_IsRing.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_IsRing.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.LineString; import java.text.ParseException; @@ -34,7 +34,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_IsRing extends AbstractAccessorSpatialFunction<LineString> { +final class ST_IsRing extends AbstractAccessorSpatialFunction<LineString> { public static final String NAME = "ST_IsRing"; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_IsSimple.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_IsSimple.java similarity index 93% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_IsSimple.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_IsSimple.java index 1829d26..02f683f 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_IsSimple.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_IsSimple.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import java.text.ParseException; @@ -33,7 +33,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_IsSimple extends AbstractAccessorSpatialFunction<Geometry> { +final class ST_IsSimple extends AbstractAccessorSpatialFunction<Geometry> { public static final String NAME = "ST_IsSimple"; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_IsValid.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_IsValid.java similarity index 93% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_IsValid.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_IsValid.java index 66098df..6fa6c83 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_IsValid.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_IsValid.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import java.text.ParseException; @@ -32,7 +32,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_IsValid extends AbstractAccessorSpatialFunction<Geometry> { +final class ST_IsValid extends AbstractAccessorSpatialFunction<Geometry> { public static final String NAME = "ST_IsValid"; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Length.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Length.java similarity index 93% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Length.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Length.java index efeb4d8..f4a498b 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Length.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Length.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import java.text.ParseException; @@ -34,7 +34,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_Length extends AbstractAccessorSpatialFunction<Geometry> { +final class ST_Length extends AbstractAccessorSpatialFunction<Geometry> { public static final String NAME = "ST_Length"; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_MultiLineString.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_MultiLineString.java similarity index 74% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_MultiLineString.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_MultiLineString.java index 003b81f..0b3c08e 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_MultiLineString.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_MultiLineString.java @@ -14,12 +14,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; -import org.apache.sis.feature.builder.FeatureTypeBuilder; -import org.apache.sis.feature.builder.PropertyTypeBuilder; import org.locationtech.jts.geom.MultiLineString; -import org.opengis.feature.FeatureType; import org.opengis.filter.expression.Expression; /** @@ -30,7 +27,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_MultiLineString extends AbstractGeomConstructor{ +final class ST_MultiLineString extends AbstractGeomConstructor{ public static final String NAME = "ST_MultiLineString"; @@ -48,8 +45,4 @@ public final class ST_MultiLineString extends AbstractGeomConstructor{ return MultiLineString.class; } - @Override - public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { - return addTo.addAttribute(MultiLineString.class).setName(NAME); - } } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_MultiPoint.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_MultiPoint.java similarity index 74% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_MultiPoint.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_MultiPoint.java index 9ad8f16..666d5cb 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_MultiPoint.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_MultiPoint.java @@ -14,12 +14,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; -import org.apache.sis.feature.builder.FeatureTypeBuilder; -import org.apache.sis.feature.builder.PropertyTypeBuilder; import org.locationtech.jts.geom.MultiPoint; -import org.opengis.feature.FeatureType; import org.opengis.filter.expression.Expression; /** @@ -30,7 +27,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_MultiPoint extends AbstractGeomConstructor{ +final class ST_MultiPoint extends AbstractGeomConstructor { public static final String NAME = "ST_MultiPoint"; @@ -48,8 +45,4 @@ public final class ST_MultiPoint extends AbstractGeomConstructor{ return MultiPoint.class; } - @Override - public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { - return addTo.addAttribute(MultiPoint.class).setName(NAME); - } } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_MultiPolygon.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_MultiPolygon.java similarity index 74% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_MultiPolygon.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_MultiPolygon.java index c42b40e..fcf1910 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_MultiPolygon.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_MultiPolygon.java @@ -14,12 +14,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; -import org.apache.sis.feature.builder.FeatureTypeBuilder; -import org.apache.sis.feature.builder.PropertyTypeBuilder; import org.locationtech.jts.geom.MultiPolygon; -import org.opengis.feature.FeatureType; import org.opengis.filter.expression.Expression; /** @@ -30,7 +27,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_MultiPolygon extends AbstractGeomConstructor{ +final class ST_MultiPolygon extends AbstractGeomConstructor{ public static final String NAME = "ST_MultiPolygon"; @@ -48,8 +45,4 @@ public final class ST_MultiPolygon extends AbstractGeomConstructor{ return MultiPolygon.class; } - @Override - public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { - return addTo.addAttribute(MultiPolygon.class).setName(NAME); - } } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_NumGeometries.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_NumGeometries.java similarity index 93% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_NumGeometries.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_NumGeometries.java index 19a0f99..ce756c4 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_NumGeometries.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_NumGeometries.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import java.text.ParseException; @@ -32,7 +32,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_NumGeometries extends AbstractAccessorSpatialFunction<Geometry> { +final class ST_NumGeometries extends AbstractAccessorSpatialFunction<Geometry> { public static final String NAME = "ST_NumGeometries"; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_NumInteriorRings.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_NumInteriorRings.java similarity index 93% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_NumInteriorRings.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_NumInteriorRings.java index 03ff827..2deb6d2 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_NumInteriorRings.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_NumInteriorRings.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Polygon; import java.text.ParseException; @@ -34,7 +34,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_NumInteriorRings extends AbstractAccessorSpatialFunction<Polygon> { +final class ST_NumInteriorRings extends AbstractAccessorSpatialFunction<Polygon> { public static final String NAME = "ST_NumInteriorRings"; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_NumPoints.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_NumPoints.java similarity index 93% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_NumPoints.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_NumPoints.java index 1bd3fc0..1db8341 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_NumPoints.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_NumPoints.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.LineString; import java.text.ParseException; @@ -32,7 +32,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_NumPoints extends AbstractAccessorSpatialFunction<LineString> { +final class ST_NumPoints extends AbstractAccessorSpatialFunction<LineString> { public static final String NAME = "ST_NumPoints"; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Overlaps.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Overlaps.java similarity index 94% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Overlaps.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Overlaps.java index 4e5af3c..1691931 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Overlaps.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Overlaps.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import java.text.ParseException; @@ -33,7 +33,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_Overlaps extends AbstractBinarySpatialFunction { +final class ST_Overlaps extends AbstractBinarySpatialFunction { public static final String NAME = "ST_Overlaps"; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Perimeter.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Perimeter.java similarity index 94% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Perimeter.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Perimeter.java index e5b6055..583960e 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Perimeter.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Perimeter.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import java.text.ParseException; @@ -35,7 +35,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_Perimeter extends AbstractAccessorSpatialFunction<Geometry> { +final class ST_Perimeter extends AbstractAccessorSpatialFunction<Geometry> { public static final String NAME = "ST_Perimeter"; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_PointN.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_PointN.java similarity index 88% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_PointN.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_PointN.java index dcb3cc6..aec35ee 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_PointN.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_PointN.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.LineString; import org.locationtech.jts.geom.Point; @@ -33,7 +33,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_PointN extends AbstractAccessorSpatialFunction<LineString> { +final class ST_PointN extends AbstractAccessorSpatialFunction<LineString> { public static final String NAME = "ST_PointN"; @@ -65,13 +65,15 @@ public final class ST_PointN extends AbstractAccessorSpatialFunction<LineString> public Object execute(LineString geom, Object... params) throws ParseException { final int index = Integer.parseInt(params[1].toString()); final Point pt = geom.getPointN(index-1); - pt.setSRID(geom.getSRID()); + copyCrs(geom, pt); return pt; } @Override public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { - return addTo.addAttribute(Point.class).setName(NAME); + return addTo.addAttribute(Point.class) + .setCRS(expectedCrs(valueType, parameters.get(0))) + .setName(NAME); } } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_PointOnSurface.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_PointOnSurface.java similarity index 87% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_PointOnSurface.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_PointOnSurface.java index d3984d9..d683875 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_PointOnSurface.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_PointOnSurface.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import java.text.ParseException; @@ -36,7 +36,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_PointOnSurface extends AbstractAccessorSpatialFunction<Geometry> { +final class ST_PointOnSurface extends AbstractAccessorSpatialFunction<Geometry> { public static final String NAME = "ST_PointOnSurface"; @@ -57,13 +57,15 @@ public final class ST_PointOnSurface extends AbstractAccessorSpatialFunction<Geo @Override public Object execute(Geometry geom, Object... params) throws ParseException { final Geometry pt = geom.getInteriorPoint(); - pt.setSRID(geom.getSRID()); + copyCrs(geom, pt); return pt; } @Override public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { - return addTo.addAttribute(Point.class).setName(NAME); + return addTo.addAttribute(Point.class) + .setCRS(expectedCrs(valueType, parameters.get(0))) + .setName(NAME); } } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Polygon.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Polygon.java similarity index 93% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Polygon.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Polygon.java index d3c80a8..4cc0c6d 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Polygon.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Polygon.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.apache.sis.feature.builder.FeatureTypeBuilder; import org.apache.sis.feature.builder.PropertyTypeBuilder; @@ -30,7 +30,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_Polygon extends AbstractGeomConstructor{ +final class ST_Polygon extends AbstractGeomConstructor { public static final String NAME = "ST_Polygon"; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Relate.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Relate.java similarity index 94% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Relate.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Relate.java index 440733d..71b6202 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Relate.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Relate.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import java.text.ParseException; @@ -33,7 +33,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_Relate extends AbstractBinarySpatialFunction { +final class ST_Relate extends AbstractBinarySpatialFunction { public static final String NAME = "ST_Relate"; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_SRID.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_SRID.java similarity index 93% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_SRID.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_SRID.java index b7cb29f..29b822e 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_SRID.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_SRID.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import java.text.ParseException; @@ -32,7 +32,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_SRID extends AbstractAccessorSpatialFunction<Geometry> { +final class ST_SRID extends AbstractAccessorSpatialFunction<Geometry> { public static final String NAME = "ST_SRID"; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_StartPoint.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_StartPoint.java similarity index 87% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_StartPoint.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_StartPoint.java index 0d2c365..039136b 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_StartPoint.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_StartPoint.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.LineString; import org.locationtech.jts.geom.Point; @@ -36,7 +36,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_StartPoint extends AbstractAccessorSpatialFunction<LineString> { +final class ST_StartPoint extends AbstractAccessorSpatialFunction<LineString> { public static final String NAME = "ST_StartPoint"; @@ -57,12 +57,15 @@ public final class ST_StartPoint extends AbstractAccessorSpatialFunction<LineStr @Override public Object execute(LineString geom, Object... params) throws ParseException { final Point pt = geom.getStartPoint(); + copyCrs(geom, pt); return pt; } @Override public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { - return addTo.addAttribute(Point.class).setName(NAME); + return addTo.addAttribute(Point.class) + .setCRS(expectedCrs(valueType, parameters.get(0))) + .setName(NAME); } } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_SymDifference.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_SymDifference.java similarity index 87% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_SymDifference.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_SymDifference.java index 981f540..3c49b1b 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_SymDifference.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_SymDifference.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import java.text.ParseException; @@ -33,7 +33,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_SymDifference extends AbstractBinarySpatialFunction { +final class ST_SymDifference extends AbstractBinarySpatialFunction { public static final String NAME = "ST_SymDifference"; @@ -49,13 +49,15 @@ public final class ST_SymDifference extends AbstractBinarySpatialFunction { @Override public Object execute(Geometry left, Geometry right, Object... params) throws ParseException { final Geometry res = left.symDifference(right); - res.setSRID(left.getSRID()); + copyCrs(left, res); return res; } @Override public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { - return addTo.addAttribute(Geometry.class).setName(NAME); + return addTo.addAttribute(Geometry.class) + .setCRS(expectedCrs(valueType, parameters.get(0))) + .setName(NAME); } } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Touches.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Touches.java similarity index 94% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Touches.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Touches.java index 495c937..da02b37 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Touches.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Touches.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import java.text.ParseException; @@ -33,7 +33,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_Touches extends AbstractBinarySpatialFunction { +final class ST_Touches extends AbstractBinarySpatialFunction { public static final String NAME = "ST_Touches"; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Union.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Union.java similarity index 87% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Union.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Union.java index 4d88999..6d678d7 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Union.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Union.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import java.text.ParseException; @@ -33,7 +33,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_Union extends AbstractBinarySpatialFunction { +final class ST_Union extends AbstractBinarySpatialFunction { public static final String NAME = "ST_Union"; @@ -49,13 +49,15 @@ public final class ST_Union extends AbstractBinarySpatialFunction { @Override public Object execute(Geometry left, Geometry right, Object... params) throws ParseException { final Geometry res = left.union(right); - res.setSRID(left.getSRID()); + copyCrs(left, res); return res; } @Override public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { - return addTo.addAttribute(Geometry.class).setName(NAME); + return addTo.addAttribute(Geometry.class) + .setCRS(expectedCrs(valueType, parameters.get(0))) + .setName(NAME); } } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Within.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Within.java similarity index 94% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Within.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Within.java index c02e972..1578ee4 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Within.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Within.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Geometry; import java.text.ParseException; @@ -33,7 +33,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_Within extends AbstractBinarySpatialFunction { +final class ST_Within extends AbstractBinarySpatialFunction { public static final String NAME = "ST_Within"; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_X.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_X.java similarity index 93% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_X.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_X.java index 4fe1946..06c74e3 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_X.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_X.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Point; import java.text.ParseException; @@ -32,7 +32,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_X extends AbstractAccessorSpatialFunction<Point> { +final class ST_X extends AbstractAccessorSpatialFunction<Point> { public static final String NAME = "ST_X"; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_XFromBinary.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_XFromBinary.java similarity index 98% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_XFromBinary.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_XFromBinary.java index 10c26bc..447f857 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_XFromBinary.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_XFromBinary.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.apache.sis.feature.builder.FeatureTypeBuilder; import org.apache.sis.feature.builder.PropertyTypeBuilder; @@ -37,7 +37,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public abstract class ST_XFromBinary extends AbstractSpatialFunction { +abstract class ST_XFromBinary extends AbstractSpatialFunction { public ST_XFromBinary(Expression[] parameters) { super(parameters); diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_XFromGML.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_XFromGML.java similarity index 98% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_XFromGML.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_XFromGML.java index 4929a7a..0dea7f1 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_XFromGML.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_XFromGML.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.apache.sis.feature.builder.FeatureTypeBuilder; import org.apache.sis.feature.builder.PropertyTypeBuilder; @@ -35,7 +35,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public abstract class ST_XFromGML extends AbstractSpatialFunction { +abstract class ST_XFromGML extends AbstractSpatialFunction { public ST_XFromGML(Expression[] parameters) { super(parameters); diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_XFromText.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_XFromText.java similarity index 98% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_XFromText.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_XFromText.java index bfa5bba..fde7086 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_XFromText.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_XFromText.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.apache.sis.feature.builder.FeatureTypeBuilder; import org.apache.sis.feature.builder.PropertyTypeBuilder; @@ -37,7 +37,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public abstract class ST_XFromText extends AbstractSpatialFunction { +abstract class ST_XFromText extends AbstractSpatialFunction { public ST_XFromText(Expression[] parameters) { super(parameters); diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Y.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Y.java similarity index 93% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Y.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Y.java index 3adfb18..fde489d 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Y.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Y.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Point; import java.text.ParseException; @@ -32,7 +32,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_Y extends AbstractAccessorSpatialFunction<Point> { +final class ST_Y extends AbstractAccessorSpatialFunction<Point> { public static final String NAME = "ST_Y"; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Z.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Z.java similarity index 93% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Z.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Z.java index ac4fa05..a14a0d2 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Z.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Z.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.filter.sqlmm.todo; +package org.apache.sis.internal.filter.sqlmm; import org.locationtech.jts.geom.Point; import java.text.ParseException; @@ -32,7 +32,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_Z extends AbstractAccessorSpatialFunction<Point> { +final class ST_Z extends AbstractAccessorSpatialFunction<Point> { public static final String NAME = "ST_Z"; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Buffer.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Buffer.java deleted file mode 100644 index 66c7a3d..0000000 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Buffer.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.sis.internal.filter.sqlmm.todo; - -import org.locationtech.jts.geom.Geometry; -import java.text.ParseException; -import org.apache.sis.feature.builder.FeatureTypeBuilder; -import org.apache.sis.feature.builder.PropertyTypeBuilder; -import org.opengis.feature.FeatureType; -import org.opengis.filter.expression.Expression; - -/** - * SQL/MM, ISO/IEC 13249-3:2011, ST_Buffer. <br> - * Return the ST_Geometry value that represents all points whose distance from any point of an ST_Geometry - * value is less than or equal to a specified distance, ignoring z and m coordinate values in the calculations and - * not including them in the resultant geometry. - * - * @author Johann Sorel (Geomatys) - * @version 2.0 - * @since 2.0 - * @module - */ -public final class ST_Buffer extends AbstractAccessorSpatialFunction<Geometry> { - - public static final String NAME = "ST_Buffer"; - - public ST_Buffer(Expression[] parameters) { - super(parameters); - } - - @Override - public String getName() { - return NAME; - } - - @Override - protected int getMinParams() { - return 2; - } - - @Override - protected int getMaxParams() { - return 2; - } - - @Override - protected Class<Geometry> getExpectedClass() { - return Geometry.class; - } - - @Override - public Object execute(Geometry geom, Object... params) throws ParseException { - final double distance = Double.parseDouble(params[1].toString()); - final Geometry res = geom.buffer(distance); - res.setSRID(geom.getSRID()); - return res; - } - - @Override - public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { - return addTo.addAttribute(Geometry.class).setName(NAME); - } - -} diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Centroid.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Centroid.java deleted file mode 100644 index 37900b9..0000000 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Centroid.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.sis.internal.filter.sqlmm.todo; - -import org.locationtech.jts.geom.Geometry; -import java.text.ParseException; -import org.apache.sis.feature.builder.FeatureTypeBuilder; -import org.apache.sis.feature.builder.PropertyTypeBuilder; -import org.locationtech.jts.geom.Point; -import org.opengis.feature.FeatureType; -import org.opengis.filter.expression.Expression; - -/** - * SQL/MM, ISO/IEC 13249-3:2011, ST_Centroid. <br> - * Return the 2D ST_Point value that is the mathematical centroid of the ST_Surface value, ignoring z and m - * coordinate values in the calculations and not including them in the resultant geometry. - * - * This class should be for all surface types, but JTS only has Polygon and MultiPolygon. - * - * @author Johann Sorel (Geomatys) - * @version 2.0 - * @since 2.0 - * @module - */ -public final class ST_Centroid extends AbstractAccessorSpatialFunction<Geometry> { - - public static final String NAME = "ST_Centroid"; - - public ST_Centroid(Expression[] parameters) { - super(parameters); - } - - @Override - public String getName() { - return NAME; - } - - @Override - protected Class<Geometry> getExpectedClass() { - return Geometry.class; - } - - @Override - public Object execute(Geometry geom, Object... params) throws ParseException { - final Geometry centroid = geom.getCentroid(); - centroid.setSRID(geom.getSRID()); - return centroid; - } - - @Override - public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { - return addTo.addAttribute(Point.class).setName(NAME); - } - -} diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Envelope.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Envelope.java deleted file mode 100644 index e1aa429..0000000 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Envelope.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.sis.internal.filter.sqlmm.todo; - -import org.locationtech.jts.geom.Geometry; -import java.text.ParseException; -import org.apache.sis.feature.builder.FeatureTypeBuilder; -import org.apache.sis.feature.builder.PropertyTypeBuilder; -import org.opengis.feature.FeatureType; -import org.opengis.filter.expression.Expression; - -/** - * SQL/MM, ISO/IEC 13249-3:2011, ST_Envelope. <br> - * Return the bounding rectangle for the ST_Geometry value, ignoring z and m coordinate values in the - * calculations and not including them in the resultant geometry. - * - * @author Johann Sorel (Geomatys) - * @version 2.0 - * @since 2.0 - * @module - */ -public final class ST_Envelope extends AbstractAccessorSpatialFunction<Geometry> { - - public static final String NAME = "ST_Envelope"; - - public ST_Envelope(Expression[] parameters) { - super(parameters); - } - - @Override - public String getName() { - return NAME; - } - - @Override - protected Class<Geometry> getExpectedClass() { - return Geometry.class; - } - - @Override - public Object execute(Geometry geom, Object... params) throws ParseException { - final Geometry env = geom.getEnvelope(); - env.setSRID(geom.getSRID()); - return env; - } - - @Override - public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { - return addTo.addAttribute(Geometry.class).setName(NAME); - } - -} diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_LineString.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_LineString.java index cf510e6..e6e19b1 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_LineString.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_LineString.java @@ -16,10 +16,8 @@ */ package org.apache.sis.internal.filter.sqlmm.todo; -import org.apache.sis.feature.builder.FeatureTypeBuilder; -import org.apache.sis.feature.builder.PropertyTypeBuilder; +import org.apache.sis.internal.filter.sqlmm.AbstractGeomConstructor; import org.locationtech.jts.geom.LineString; -import org.opengis.feature.FeatureType; import org.opengis.filter.expression.Expression; /** @@ -30,7 +28,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class ST_LineString extends AbstractGeomConstructor{ +public final class ST_LineString extends AbstractGeomConstructor { public static final String NAME = "ST_LineString"; @@ -48,8 +46,4 @@ public final class ST_LineString extends AbstractGeomConstructor{ return LineString.class; } - @Override - public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { - return addTo.addAttribute(LineString.class).setName(NAME); - } } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Point.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Point.java index d999efc..20cced9 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Point.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Point.java @@ -16,6 +16,7 @@ */ package org.apache.sis.internal.filter.sqlmm.todo; +import org.apache.sis.internal.filter.sqlmm.AbstractSpatialFunction; import org.locationtech.jts.geom.Coordinate; import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.io.ParseException; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToGeomColl.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToGeomColl.java index 85ec72a..5adef19 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToGeomColl.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToGeomColl.java @@ -16,6 +16,7 @@ */ package org.apache.sis.internal.filter.sqlmm.todo; +import org.apache.sis.internal.filter.sqlmm.AbstractAccessorSpatialFunction; import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.GeometryCollection; import java.text.ParseException; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToLineString.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToLineString.java index c796631..cbcbec6 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToLineString.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToLineString.java @@ -16,6 +16,7 @@ */ package org.apache.sis.internal.filter.sqlmm.todo; +import org.apache.sis.internal.filter.sqlmm.AbstractAccessorSpatialFunction; import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.LineString; import java.text.ParseException; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToMultiLine.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToMultiLine.java index 1e8e89d..edd8aa5 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToMultiLine.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToMultiLine.java @@ -16,6 +16,7 @@ */ package org.apache.sis.internal.filter.sqlmm.todo; +import org.apache.sis.internal.filter.sqlmm.AbstractAccessorSpatialFunction; import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.MultiLineString; import java.text.ParseException; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToMultiPoint.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToMultiPoint.java index c99b1ee..f3265f6 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToMultiPoint.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToMultiPoint.java @@ -16,6 +16,7 @@ */ package org.apache.sis.internal.filter.sqlmm.todo; +import org.apache.sis.internal.filter.sqlmm.AbstractAccessorSpatialFunction; import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.MultiPoint; import java.text.ParseException; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToMultiPolygon.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToMultiPolygon.java index decf11c..48caf60 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToMultiPolygon.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToMultiPolygon.java @@ -16,6 +16,7 @@ */ package org.apache.sis.internal.filter.sqlmm.todo; +import org.apache.sis.internal.filter.sqlmm.AbstractAccessorSpatialFunction; import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.MultiPolygon; import java.text.ParseException; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToPoint.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToPoint.java index bcfba87..3b92b7b 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToPoint.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToPoint.java @@ -16,6 +16,7 @@ */ package org.apache.sis.internal.filter.sqlmm.todo; +import org.apache.sis.internal.filter.sqlmm.AbstractAccessorSpatialFunction; import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.Point; import java.text.ParseException; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToPolygon.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToPolygon.java index 83ec999..d495501 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToPolygon.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToPolygon.java @@ -16,6 +16,7 @@ */ package org.apache.sis.internal.filter.sqlmm.todo; +import org.apache.sis.internal.filter.sqlmm.AbstractAccessorSpatialFunction; import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.Polygon; import java.text.ParseException;
