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 d7ae59674197ad44268e11092aef924baad46062 Author: jsorel <[email protected]> AuthorDate: Wed Nov 27 11:20:44 2019 +0100 SQL/MM : cleaning code --- .../apache/sis/internal/filter/sqlmm/SQLMM.java | 244 ++++++++++----------- .../sis/internal/filter/sqlmm/ST_LineString.java | 3 +- .../filter/sqlmm/todo/AbstractSpatialFunction.java | 7 +- .../todo/{Surface_ST_Area.java => ST_Area.java} | 12 +- .../internal/filter/sqlmm/todo/ST_AsBinary.java | 8 + .../sis/internal/filter/sqlmm/todo/ST_AsGML.java | 8 + .../sis/internal/filter/sqlmm/todo/ST_AsText.java | 8 + .../internal/filter/sqlmm/todo/ST_Boundary.java | 8 + .../sis/internal/filter/sqlmm/todo/ST_Buffer.java | 8 + .../{Surface_ST_Centroid.java => ST_Centroid.java} | 13 +- .../internal/filter/sqlmm/todo/ST_Contains.java | 8 + .../internal/filter/sqlmm/todo/ST_ConvexHull.java | 8 + .../internal/filter/sqlmm/todo/ST_CoordDim.java | 8 + .../sis/internal/filter/sqlmm/todo/ST_Crosses.java | 8 + .../internal/filter/sqlmm/todo/ST_Difference.java | 8 + .../internal/filter/sqlmm/todo/ST_Dimension.java | 8 + .../internal/filter/sqlmm/todo/ST_Disjoint.java | 8 + .../internal/filter/sqlmm/todo/ST_Distance.java | 8 + .../{Curve_ST_EndPoint.java => ST_EndPoint.java} | 12 +- .../internal/filter/sqlmm/todo/ST_Envelope.java | 8 + .../sis/internal/filter/sqlmm/todo/ST_Equals.java | 8 + ...ST_ExplicitPoint.java => ST_ExplicitPoint.java} | 12 +- ...n_ST_ExteriorRing.java => ST_ExteriorRing.java} | 12 +- .../filter/sqlmm/todo/ST_GeomCollection.java | 14 +- ...eomColl_ST_GeometryN.java => ST_GeometryN.java} | 12 +- .../filter/sqlmm/todo/ST_GeometryType.java | 8 + ...ST_InteriorRingN.java => ST_InteriorRingN.java} | 12 +- .../filter/sqlmm/todo/ST_Intersection.java | 8 + .../internal/filter/sqlmm/todo/ST_Intersects.java | 8 + .../sis/internal/filter/sqlmm/todo/ST_Is3D.java | 8 + .../{Curve_ST_IsClosed.java => ST_IsClosed.java} | 12 +- .../sis/internal/filter/sqlmm/todo/ST_IsEmpty.java | 8 + .../todo/{Curve_ST_IsRing.java => ST_IsRing.java} | 12 +- .../internal/filter/sqlmm/todo/ST_IsSimple.java | 8 + .../sis/internal/filter/sqlmm/todo/ST_IsValid.java | 8 + .../todo/{Curve_ST_Length.java => ST_Length.java} | 12 +- .../internal/filter/sqlmm/todo/ST_LineString.java | 8 + .../filter/sqlmm/todo/ST_MultiLineString.java | 8 + .../internal/filter/sqlmm/todo/ST_MultiPoint.java | 8 + .../filter/sqlmm/todo/ST_MultiPolygon.java | 8 + ...ST_NumGeometries.java => ST_NumGeometries.java} | 12 +- ...InteriorRings.java => ST_NumInteriorRings.java} | 12 +- .../{Line_ST_NumPoints.java => ST_NumPoints.java} | 12 +- .../internal/filter/sqlmm/todo/ST_Overlaps.java | 8 + ...Surface_ST_Perimeter.java => ST_Perimeter.java} | 12 +- .../sis/internal/filter/sqlmm/todo/ST_Point.java | 11 +- .../todo/{Line_ST_PointN.java => ST_PointN.java} | 12 +- ..._PointOnSurface.java => ST_PointOnSurface.java} | 13 +- .../sis/internal/filter/sqlmm/todo/ST_Polygon.java | 8 + .../sis/internal/filter/sqlmm/todo/ST_Relate.java | 8 + .../sis/internal/filter/sqlmm/todo/ST_SRID.java | 8 + ...Curve_ST_StartPoint.java => ST_StartPoint.java} | 12 +- .../filter/sqlmm/todo/ST_SymDifference.java | 8 + .../internal/filter/sqlmm/todo/ST_ToGeomColl.java | 8 + .../filter/sqlmm/todo/ST_ToLineString.java | 8 + .../internal/filter/sqlmm/todo/ST_ToMultiLine.java | 8 + .../filter/sqlmm/todo/ST_ToMultiPoint.java | 8 + .../filter/sqlmm/todo/ST_ToMultiPolygon.java | 8 + .../sis/internal/filter/sqlmm/todo/ST_ToPoint.java | 8 + .../internal/filter/sqlmm/todo/ST_ToPolygon.java | 8 + .../sis/internal/filter/sqlmm/todo/ST_Touches.java | 8 + .../sis/internal/filter/sqlmm/todo/ST_Union.java | 8 + .../sis/internal/filter/sqlmm/todo/ST_Within.java | 8 + .../sqlmm/todo/{Point_ST_X.java => ST_X.java} | 12 +- .../internal/filter/sqlmm/todo/ST_XFromBinary.java | 39 ++-- .../internal/filter/sqlmm/todo/ST_XFromGML.java | 22 +- .../internal/filter/sqlmm/todo/ST_XFromText.java | 39 ++-- .../sqlmm/todo/{Point_ST_Y.java => ST_Y.java} | 12 +- .../sqlmm/todo/{Point_ST_Z.java => ST_Z.java} | 12 +- 69 files changed, 729 insertions(+), 220 deletions(-) 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 ef9a6d3..bf11527 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,22 +23,22 @@ 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.CurvePolygon_ST_ExteriorRing; -import org.apache.sis.internal.filter.sqlmm.todo.CurvePolygon_ST_InteriorRingN; -import org.apache.sis.internal.filter.sqlmm.todo.CurvePolygon_ST_NumInteriorRings; -import org.apache.sis.internal.filter.sqlmm.todo.Curve_ST_EndPoint; -import org.apache.sis.internal.filter.sqlmm.todo.Curve_ST_IsClosed; -import org.apache.sis.internal.filter.sqlmm.todo.Curve_ST_IsRing; -import org.apache.sis.internal.filter.sqlmm.todo.Curve_ST_Length; -import org.apache.sis.internal.filter.sqlmm.todo.Curve_ST_StartPoint; -import org.apache.sis.internal.filter.sqlmm.todo.GeomColl_ST_GeometryN; -import org.apache.sis.internal.filter.sqlmm.todo.GeomColl_ST_NumGeometries; -import org.apache.sis.internal.filter.sqlmm.todo.Line_ST_NumPoints; -import org.apache.sis.internal.filter.sqlmm.todo.Line_ST_PointN; -import org.apache.sis.internal.filter.sqlmm.todo.Point_ST_ExplicitPoint; -import org.apache.sis.internal.filter.sqlmm.todo.Point_ST_X; -import org.apache.sis.internal.filter.sqlmm.todo.Point_ST_Y; -import org.apache.sis.internal.filter.sqlmm.todo.Point_ST_Z; +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; @@ -81,10 +81,10 @@ 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.Surface_ST_Area; -import org.apache.sis.internal.filter.sqlmm.todo.Surface_ST_Centroid; -import org.apache.sis.internal.filter.sqlmm.todo.Surface_ST_Perimeter; -import org.apache.sis.internal.filter.sqlmm.todo.Surface_ST_PointOnSurface; +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; @@ -122,22 +122,7 @@ public final class SQLMM implements FunctionRegister { @Override public Collection<String> getNames() { return Arrays.asList( - CurvePolygon_ST_ExteriorRing.NAME, - CurvePolygon_ST_InteriorRingN.NAME, - CurvePolygon_ST_NumInteriorRings.NAME, - Curve_ST_EndPoint.NAME, - Curve_ST_IsClosed.NAME, - Curve_ST_IsRing.NAME, - Curve_ST_Length.NAME, - Curve_ST_StartPoint.NAME, - GeomColl_ST_GeometryN.NAME, - GeomColl_ST_NumGeometries.NAME, - Line_ST_NumPoints.NAME, - Line_ST_PointN.NAME, - Point_ST_ExplicitPoint.NAME, - Point_ST_X.NAME, - Point_ST_Y.NAME, - Point_ST_Z.NAME, + ST_Area.NAME, ST_AsBinary.NAME, ST_AsGML.NAME, ST_AsText.NAME, @@ -152,27 +137,42 @@ public final class SQLMM implements FunctionRegister { ST_Dimension.NAME, ST_Disjoint.NAME, ST_Distance.NAME, + ST_EndPoint.NAME, ST_Envelope.NAME, ST_Equals.NAME, + ST_ExplicitPoint.NAME, + ST_ExteriorRing.NAME, ST_GeomCollection.NAME, + ST_GeometryN.NAME, ST_GeometryType.NAME, + ST_InteriorRingN.NAME, ST_Intersection.NAME, ST_Intersects.NAME, ST_Is3D.NAME, + ST_IsClosed.NAME, ST_IsEmpty.NAME, + ST_IsRing.NAME, ST_IsSimple.NAME, ST_IsValid.NAME, + ST_Length.NAME, ST_LineString.NAME, ST_MultiLineString.NAME, ST_MultiPoint.NAME, ST_MultiPolygon.NAME, + ST_NumGeometries.NAME, + ST_NumInteriorRings.NAME, + ST_NumPoints.NAME, ST_Overlaps.NAME, + ST_Perimeter.NAME, ST_Point.NAME, + ST_PointN.NAME, + ST_PointOnSurface.NAME, ST_Polygon.NAME, ST_Relate.NAME, ST_Simplify.NAME, ST_SimplifyPreserveTopology.NAME, ST_SRID.NAME, + ST_StartPoint.NAME, ST_SymDifference.NAME, ST_ToGeomColl.NAME, ST_ToLineString.NAME, @@ -185,6 +185,7 @@ public final class SQLMM implements FunctionRegister { ST_Transform.NAME, ST_Union.NAME, ST_Within.NAME, + ST_X.NAME, ST_XFromBinary.BdMPoly.NAME, ST_XFromBinary.BdPoly.NAME, ST_XFromBinary.GeomColl.NAME, @@ -213,10 +214,8 @@ public final class SQLMM implements FunctionRegister { ST_XFromText.MPoly.NAME, ST_XFromText.Point.NAME, ST_XFromText.Poly.NAME, - Surface_ST_Area.NAME, - Surface_ST_Centroid.NAME, - Surface_ST_Perimeter.NAME, - Surface_ST_PointOnSurface.NAME + ST_Y.NAME, + ST_Z.NAME ); } @@ -238,101 +237,100 @@ public final class SQLMM implements FunctionRegister { } try { switch (name) { - case CurvePolygon_ST_ExteriorRing.NAME: return new CurvePolygon_ST_ExteriorRing(parameters); - case CurvePolygon_ST_InteriorRingN.NAME: return new CurvePolygon_ST_InteriorRingN(parameters); - case CurvePolygon_ST_NumInteriorRings.NAME: return new CurvePolygon_ST_NumInteriorRings(parameters); - case Curve_ST_EndPoint.NAME: return new Curve_ST_EndPoint(parameters); - case Curve_ST_IsClosed.NAME: return new Curve_ST_IsClosed(parameters); - case Curve_ST_IsRing.NAME: return new Curve_ST_IsRing(parameters); - case Curve_ST_Length.NAME: return new Curve_ST_Length(parameters); - case Curve_ST_StartPoint.NAME: return new Curve_ST_StartPoint(parameters); - case GeomColl_ST_GeometryN.NAME: return new GeomColl_ST_GeometryN(parameters); - case GeomColl_ST_NumGeometries.NAME: return new GeomColl_ST_NumGeometries(parameters); - case Line_ST_NumPoints.NAME: return new Line_ST_NumPoints(parameters); - case Line_ST_PointN.NAME: return new Line_ST_PointN(parameters); - case Point_ST_ExplicitPoint.NAME: return new Point_ST_ExplicitPoint(parameters); - case Point_ST_X.NAME: return new Point_ST_X(parameters); - case Point_ST_Y.NAME: return new Point_ST_Y(parameters); - case Point_ST_Z.NAME: return new Point_ST_Z(parameters); - case ST_AsBinary.NAME: return new ST_AsBinary(parameters); - case ST_AsGML.NAME: return new ST_AsGML(parameters); + case ST_Area.NAME: return new ST_Area(parameters); + case ST_AsBinary.NAME: return new ST_AsBinary(parameters); + case ST_AsGML.NAME: return new ST_AsGML(parameters); case ST_AsText.NAME: return new ST_AsText(parameters); - case ST_Boundary.NAME: return new ST_Boundary(parameters); + case ST_Boundary.NAME: return new ST_Boundary(parameters); case ST_Buffer.NAME: return new ST_Buffer(parameters); case ST_Centroid.NAME: return new ST_Centroid(parameters); - case ST_Contains.NAME: return new ST_Contains(parameters); - case ST_ConvexHull.NAME: return new ST_ConvexHull(parameters); - case ST_CoordDim.NAME: return new ST_CoordDim(parameters); - case ST_Crosses.NAME: return new ST_Crosses(parameters); - case ST_Difference.NAME: return new ST_Difference(parameters); - case ST_Dimension.NAME: return new ST_Dimension(parameters); - case ST_Disjoint.NAME: return new ST_Disjoint(parameters); - case ST_Distance.NAME: return new ST_Distance(parameters); + case ST_Contains.NAME: return new ST_Contains(parameters); + case ST_ConvexHull.NAME: return new ST_ConvexHull(parameters); + case ST_CoordDim.NAME: return new ST_CoordDim(parameters); + case ST_Crosses.NAME: return new ST_Crosses(parameters); + case ST_Difference.NAME: return new ST_Difference(parameters); + case ST_Dimension.NAME: return new ST_Dimension(parameters); + case ST_Disjoint.NAME: return new ST_Disjoint(parameters); + case ST_Distance.NAME: return new ST_Distance(parameters); + case ST_EndPoint.NAME: return new ST_EndPoint(parameters); case ST_Envelope.NAME: return new ST_Envelope(parameters); case ST_Equals.NAME: return new ST_Equals(parameters); - case ST_GeomCollection.NAME: return new ST_GeomCollection(parameters); - case ST_GeometryType.NAME: return new ST_GeometryType(parameters); - case ST_Intersection.NAME: return new ST_Intersection(parameters); - case ST_Intersects.NAME: return new ST_Intersects(parameters); - case ST_Is3D.NAME: return new ST_Is3D(parameters); - case ST_IsEmpty.NAME: return new ST_IsEmpty(parameters); - case ST_IsSimple.NAME: return new ST_IsSimple(parameters); - case ST_IsValid.NAME: return new ST_IsValid(parameters); + case ST_ExplicitPoint.NAME: return new ST_ExplicitPoint(parameters); + case ST_ExteriorRing.NAME: return new ST_ExteriorRing(parameters); + case ST_GeomCollection.NAME: return new ST_GeomCollection(parameters); + case ST_GeometryN.NAME: return new ST_GeometryN(parameters); + case ST_GeometryType.NAME: return new ST_GeometryType(parameters); + case ST_InteriorRingN.NAME: return new ST_InteriorRingN(parameters); + case ST_Intersection.NAME: return new ST_Intersection(parameters); + case ST_Intersects.NAME: return new ST_Intersects(parameters); + case ST_Is3D.NAME: return new ST_Is3D(parameters); + case ST_IsClosed.NAME: return new ST_IsClosed(parameters); + case ST_IsEmpty.NAME: return new ST_IsEmpty(parameters); + case ST_IsRing.NAME: return new ST_IsRing(parameters); + case ST_IsSimple.NAME: return new ST_IsSimple(parameters); + case ST_IsValid.NAME: return new ST_IsValid(parameters); + case ST_Length.NAME: return new ST_Length(parameters); case ST_LineString.NAME: return new ST_LineString(parameters); - case ST_MultiLineString.NAME: return new ST_MultiLineString(parameters); - case ST_MultiPoint.NAME: return new ST_MultiPoint(parameters); - case ST_MultiPolygon.NAME: return new ST_MultiPolygon(parameters); - case ST_Overlaps.NAME: return new ST_Overlaps(parameters); + case ST_MultiLineString.NAME: return new ST_MultiLineString(parameters); + case ST_MultiPoint.NAME: return new ST_MultiPoint(parameters); + case ST_MultiPolygon.NAME: return new ST_MultiPolygon(parameters); + case ST_NumGeometries.NAME: return new ST_NumGeometries(parameters); + case ST_NumInteriorRings.NAME: return new ST_NumInteriorRings(parameters); + case ST_NumPoints.NAME: return new ST_NumPoints(parameters); + case ST_Overlaps.NAME: return new ST_Overlaps(parameters); + case ST_Perimeter.NAME: return new ST_Perimeter(parameters); case ST_Point.NAME: return new ST_Point(parameters); - case ST_Polygon.NAME: return new ST_Polygon(parameters); + case ST_PointN.NAME: return new ST_PointN(parameters); + case ST_PointOnSurface.NAME: return new ST_PointOnSurface(parameters); + case ST_Polygon.NAME: return new ST_Polygon(parameters); case ST_Relate.NAME: return new ST_Relate(parameters); case ST_Simplify.NAME: return new ST_Simplify(parameters); case ST_SimplifyPreserveTopology.NAME: return new ST_SimplifyPreserveTopology(parameters); - case ST_SRID.NAME: return new ST_SRID(parameters); - case ST_SymDifference.NAME: return new ST_SymDifference(parameters); - case ST_ToGeomColl.NAME: return new ST_ToGeomColl(parameters); - case ST_ToLineString.NAME: return new ST_ToLineString(parameters); - case ST_ToMultiLine.NAME: return new ST_ToMultiLine(parameters); - case ST_ToMultiPoint.NAME: return new ST_ToMultiPoint(parameters); - case ST_ToMultiPolygon.NAME: return new ST_ToMultiPolygon(parameters); - case ST_ToPoint.NAME: return new ST_ToPoint(parameters); - case ST_ToPolygon.NAME: return new ST_ToPolygon(parameters); - case ST_Touches.NAME: return new ST_Touches(parameters); + case ST_SRID.NAME: return new ST_SRID(parameters); + case ST_StartPoint.NAME: return new ST_StartPoint(parameters); + case ST_SymDifference.NAME: return new ST_SymDifference(parameters); + case ST_ToGeomColl.NAME: return new ST_ToGeomColl(parameters); + case ST_ToLineString.NAME: return new ST_ToLineString(parameters); + case ST_ToMultiLine.NAME: return new ST_ToMultiLine(parameters); + case ST_ToMultiPoint.NAME: return new ST_ToMultiPoint(parameters); + case ST_ToMultiPolygon.NAME: return new ST_ToMultiPolygon(parameters); + case ST_ToPoint.NAME: return new ST_ToPoint(parameters); + case ST_ToPolygon.NAME: return new ST_ToPolygon(parameters); + case ST_Touches.NAME: return new ST_Touches(parameters); case ST_Transform.NAME: return new ST_Transform(parameters); - case ST_Union.NAME: return new ST_Union(parameters); + case ST_Union.NAME: return new ST_Union(parameters); case ST_Within.NAME: return new ST_Within(parameters); - case ST_XFromBinary.BdMPoly.NAME: return new ST_XFromBinary.BdMPoly(parameters); - case ST_XFromBinary.BdPoly.NAME: return new ST_XFromBinary.BdPoly(parameters); - case ST_XFromBinary.GeomColl.NAME: return new ST_XFromBinary.GeomColl(parameters); - case ST_XFromBinary.Geom.NAME: return new ST_XFromBinary.Geom(parameters); - case ST_XFromBinary.Line.NAME: return new ST_XFromBinary.Line(parameters); - case ST_XFromBinary.MLine.NAME: return new ST_XFromBinary.MLine(parameters); - case ST_XFromBinary.MPoint.NAME: return new ST_XFromBinary.MPoint(parameters); - case ST_XFromBinary.MPoly.NAME: return new ST_XFromBinary.MPoly(parameters); - case ST_XFromBinary.Point.NAME: return new ST_XFromBinary.Point(parameters); - case ST_XFromBinary.Poly.NAME: return new ST_XFromBinary.Poly(parameters); - case ST_XFromGML.GeomColl.NAME: return new ST_XFromGML.GeomColl(parameters); - case ST_XFromGML.Geom.NAME: return new ST_XFromGML.Geom(parameters); - case ST_XFromGML.Line.NAME: return new ST_XFromGML.Line(parameters); - case ST_XFromGML.MLine.NAME: return new ST_XFromGML.MLine(parameters); - case ST_XFromGML.MPoint.NAME: return new ST_XFromGML.MPoint(parameters); - case ST_XFromGML.MPoly.NAME: return new ST_XFromGML.MPoly(parameters); - case ST_XFromGML.Point.NAME: return new ST_XFromGML.Point(parameters); - case ST_XFromGML.Poly.NAME: return new ST_XFromGML.Poly(parameters); - case ST_XFromText.BdMPoly.NAME: return new ST_XFromText.BdMPoly(parameters); - case ST_XFromText.BdPoly.NAME: return new ST_XFromText.BdPoly(parameters); - case ST_XFromText.GeomColl.NAME: return new ST_XFromText.GeomColl(parameters); - case ST_XFromText.Geom.NAME: return new ST_XFromText.Geom(parameters); - case ST_XFromText.Line.NAME: return new ST_XFromText.Line(parameters); - case ST_XFromText.MLine.NAME: return new ST_XFromText.MLine(parameters); - case ST_XFromText.MPoint.NAME: return new ST_XFromText.MPoint(parameters); - case ST_XFromText.MPoly.NAME: return new ST_XFromText.MPoly(parameters); - case ST_XFromText.Point.NAME: return new ST_XFromText.Point(parameters); - case ST_XFromText.Poly.NAME: return new ST_XFromText.Poly(parameters); - case Surface_ST_Area.NAME: return new Surface_ST_Area(parameters); - //case Surface_ST_Centroid.NAME: return new Surface_ST_Centroid(parameters); - case Surface_ST_Perimeter.NAME: return new Surface_ST_Perimeter(parameters); - case Surface_ST_PointOnSurface.NAME: return new Surface_ST_PointOnSurface(parameters); + case ST_X.NAME: return new ST_X(parameters); + case ST_XFromBinary.BdMPoly.NAME: return new ST_XFromBinary.BdMPoly(parameters); + case ST_XFromBinary.BdPoly.NAME: return new ST_XFromBinary.BdPoly(parameters); + case ST_XFromBinary.GeomColl.NAME: return new ST_XFromBinary.GeomColl(parameters); + case ST_XFromBinary.Geom.NAME: return new ST_XFromBinary.Geom(parameters); + case ST_XFromBinary.Line.NAME: return new ST_XFromBinary.Line(parameters); + case ST_XFromBinary.MLine.NAME: return new ST_XFromBinary.MLine(parameters); + case ST_XFromBinary.MPoint.NAME: return new ST_XFromBinary.MPoint(parameters); + case ST_XFromBinary.MPoly.NAME: return new ST_XFromBinary.MPoly(parameters); + case ST_XFromBinary.Point.NAME: return new ST_XFromBinary.Point(parameters); + case ST_XFromBinary.Poly.NAME: return new ST_XFromBinary.Poly(parameters); + case ST_XFromGML.GeomColl.NAME: return new ST_XFromGML.GeomColl(parameters); + case ST_XFromGML.Geom.NAME: return new ST_XFromGML.Geom(parameters); + case ST_XFromGML.Line.NAME: return new ST_XFromGML.Line(parameters); + case ST_XFromGML.MLine.NAME: return new ST_XFromGML.MLine(parameters); + case ST_XFromGML.MPoint.NAME: return new ST_XFromGML.MPoint(parameters); + case ST_XFromGML.MPoly.NAME: return new ST_XFromGML.MPoly(parameters); + case ST_XFromGML.Point.NAME: return new ST_XFromGML.Point(parameters); + case ST_XFromGML.Poly.NAME: return new ST_XFromGML.Poly(parameters); + case ST_XFromText.BdMPoly.NAME: return new ST_XFromText.BdMPoly(parameters); + case ST_XFromText.BdPoly.NAME: return new ST_XFromText.BdPoly(parameters); + case ST_XFromText.GeomColl.NAME: return new ST_XFromText.GeomColl(parameters); + case ST_XFromText.Geom.NAME: return new ST_XFromText.Geom(parameters); + case ST_XFromText.Line.NAME: return new ST_XFromText.Line(parameters); + case ST_XFromText.MLine.NAME: return new ST_XFromText.MLine(parameters); + case ST_XFromText.MPoint.NAME: return new ST_XFromText.MPoint(parameters); + case ST_XFromText.MPoly.NAME: return new ST_XFromText.MPoly(parameters); + case ST_XFromText.Point.NAME: return new ST_XFromText.Point(parameters); + case ST_XFromText.Poly.NAME: return new ST_XFromText.Poly(parameters); + case ST_Y.NAME: return new ST_Y(parameters); + case ST_Z.NAME: return new ST_Z(parameters); default: throw new IllegalArgumentException(Resources.format(Resources.Keys.UnknownFunction_1, name)); } } catch (FactoryException e) { diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_LineString.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_LineString.java index c05ab4b..571eb60 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_LineString.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_LineString.java @@ -26,6 +26,7 @@ import org.apache.sis.feature.builder.FeatureTypeBuilder; import org.apache.sis.feature.builder.PropertyTypeBuilder; import org.apache.sis.internal.filter.NamedFunction; import org.apache.sis.internal.feature.FeatureExpression; +import org.apache.sis.internal.filter.FilterGeometryUtils; import org.apache.sis.referencing.CRS; import org.locationtech.jts.geom.Coordinate; import org.locationtech.jts.geom.LineString; @@ -116,7 +117,7 @@ final class ST_LineString extends NamedFunction implements FeatureExpression { } } - final LineString geometry = SQLMM.GF.createLineString(coords.toArray(new Coordinate[coords.size()])); + final LineString geometry = FilterGeometryUtils.GF.createLineString(coords.toArray(new Coordinate[coords.size()])); geometry.setUserData(crs); return geometry; } 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/todo/AbstractSpatialFunction.java index 00c93cd..a33913c 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/todo/AbstractSpatialFunction.java @@ -16,9 +16,8 @@ */ package org.apache.sis.internal.filter.sqlmm.todo; -import java.util.logging.Logger; +import org.apache.sis.internal.feature.FeatureExpression; import org.apache.sis.internal.filter.NamedFunction; -import org.apache.sis.util.logging.Logging; import org.opengis.filter.expression.Expression; /** @@ -28,9 +27,7 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public abstract class AbstractSpatialFunction extends NamedFunction { - - protected static final Logger LOGGER = Logging.getLogger(AbstractSpatialFunction.class); +public abstract class AbstractSpatialFunction extends NamedFunction implements FeatureExpression { public AbstractSpatialFunction(Expression[] parameters){ super(parameters); diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Surface_ST_Area.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Area.java similarity index 78% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Surface_ST_Area.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Area.java index a02a6b0..ddf3463 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Surface_ST_Area.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Area.java @@ -18,6 +18,9 @@ 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; /** @@ -31,11 +34,11 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class Surface_ST_Area extends AbstractAccessorSpatialFunction<Geometry> { +public final class ST_Area extends AbstractAccessorSpatialFunction<Geometry> { public static final String NAME = "ST_Area"; - public Surface_ST_Area(Expression[] parameters) { + public ST_Area(Expression[] parameters) { super(parameters); } @@ -54,4 +57,9 @@ public final class Surface_ST_Area extends AbstractAccessorSpatialFunction<Geome return geom.getArea(); } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(Double.class).setName(NAME); + } + } 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/todo/ST_AsBinary.java index d09cc57..a8801d2 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/todo/ST_AsBinary.java @@ -19,7 +19,10 @@ package org.apache.sis.internal.filter.sqlmm.todo; 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; import org.apache.sis.internal.filter.FilterGeometryUtils; +import org.opengis.feature.FeatureType; import org.opengis.filter.expression.Expression; /** @@ -55,4 +58,9 @@ public final class ST_AsBinary extends AbstractAccessorSpatialFunction<Geometry> return writer.write(geom); } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(byte[].class).setName(NAME); + } + } 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/todo/ST_AsGML.java index cfd8ff8..66b267d 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/todo/ST_AsGML.java @@ -18,6 +18,9 @@ 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; /** @@ -53,4 +56,9 @@ public final class ST_AsGML extends AbstractAccessorSpatialFunction<Geometry> { throw new ParseException("Not implemented", 0); } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(String.class).setName(NAME); + } + } 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/todo/ST_AsText.java index d689445..e839d1b 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/todo/ST_AsText.java @@ -19,7 +19,10 @@ package org.apache.sis.internal.filter.sqlmm.todo; import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.io.WKTWriter; import java.text.ParseException; +import org.apache.sis.feature.builder.FeatureTypeBuilder; +import org.apache.sis.feature.builder.PropertyTypeBuilder; import org.apache.sis.internal.filter.FilterGeometryUtils; +import org.opengis.feature.FeatureType; import org.opengis.filter.expression.Expression; /** @@ -55,4 +58,9 @@ public final class ST_AsText extends AbstractAccessorSpatialFunction<Geometry> { return writer.write(geom); } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(String.class).setName(NAME); + } + } 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/todo/ST_Boundary.java index 3415499..54501a2 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/todo/ST_Boundary.java @@ -18,6 +18,9 @@ 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; /** @@ -55,4 +58,9 @@ public final class ST_Boundary extends AbstractAccessorSpatialFunction<Geometry> return bound; } + @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_Buffer.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Buffer.java index f88775f..66c7a3d 100644 --- 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 @@ -18,6 +18,9 @@ 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; /** @@ -67,4 +70,9 @@ public final class ST_Buffer extends AbstractAccessorSpatialFunction<Geometry> { 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/Surface_ST_Centroid.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Centroid.java similarity index 78% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Surface_ST_Centroid.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Centroid.java index 4ad77b0..37900b9 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Surface_ST_Centroid.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Centroid.java @@ -18,6 +18,10 @@ 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; /** @@ -32,11 +36,11 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class Surface_ST_Centroid extends AbstractAccessorSpatialFunction<Geometry> { +public final class ST_Centroid extends AbstractAccessorSpatialFunction<Geometry> { public static final String NAME = "ST_Centroid"; - public Surface_ST_Centroid(Expression[] parameters) { + public ST_Centroid(Expression[] parameters) { super(parameters); } @@ -57,4 +61,9 @@ public final class Surface_ST_Centroid extends AbstractAccessorSpatialFunction<G 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_Contains.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Contains.java index 9aad95a..9f83dea 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/todo/ST_Contains.java @@ -18,6 +18,9 @@ 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; /** @@ -48,4 +51,9 @@ public final class ST_Contains extends AbstractBinarySpatialFunction { return left.contains(right); } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(Boolean.class).setName(NAME); + } + } 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/todo/ST_ConvexHull.java index 8ceb191..baa32da 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/todo/ST_ConvexHull.java @@ -18,6 +18,9 @@ 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; /** @@ -55,4 +58,9 @@ public final class ST_ConvexHull extends AbstractAccessorSpatialFunction<Geometr 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_CoordDim.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_CoordDim.java index 14bfa4c..39ecf9b 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/todo/ST_CoordDim.java @@ -19,6 +19,9 @@ package org.apache.sis.internal.filter.sqlmm.todo; import org.locationtech.jts.geom.Coordinate; 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; /** @@ -57,4 +60,9 @@ public final class ST_CoordDim extends AbstractAccessorSpatialFunction<Geometry> return null; } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(Integer.class).setName(NAME); + } + } 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/todo/ST_Crosses.java index 062533a..957b709 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/todo/ST_Crosses.java @@ -18,6 +18,9 @@ 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; /** @@ -48,4 +51,9 @@ public final class ST_Crosses extends AbstractBinarySpatialFunction { return left.crosses(right); } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(Boolean.class).setName(NAME); + } + } 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/todo/ST_Difference.java index 2c391bd..f1d0c9c 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/todo/ST_Difference.java @@ -18,6 +18,9 @@ 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; /** @@ -50,4 +53,9 @@ public final class ST_Difference extends AbstractBinarySpatialFunction { 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_Dimension.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Dimension.java index 731ee2c..f197595 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/todo/ST_Dimension.java @@ -18,6 +18,9 @@ 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; /** @@ -52,4 +55,9 @@ public final class ST_Dimension extends AbstractAccessorSpatialFunction<Geometry return geom.getDimension(); } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(Integer.class).setName(NAME); + } + } 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/todo/ST_Disjoint.java index d0f99ab..ec6116e 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/todo/ST_Disjoint.java @@ -18,6 +18,9 @@ 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; /** @@ -48,4 +51,9 @@ public final class ST_Disjoint extends AbstractBinarySpatialFunction { return left.disjoint(right); } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(Boolean.class).setName(NAME); + } + } 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/todo/ST_Distance.java index 2b917b9..5ab2c7c 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/todo/ST_Distance.java @@ -18,6 +18,9 @@ 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; /** @@ -48,4 +51,9 @@ public final class ST_Distance extends AbstractBinarySpatialFunction { return d; } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(Double.class).setName(NAME); + } + } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Curve_ST_EndPoint.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_EndPoint.java similarity index 78% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Curve_ST_EndPoint.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_EndPoint.java index 29a20c4..fe176b1 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Curve_ST_EndPoint.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_EndPoint.java @@ -19,6 +19,9 @@ package org.apache.sis.internal.filter.sqlmm.todo; import org.locationtech.jts.geom.LineString; import org.locationtech.jts.geom.Point; 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; /** @@ -31,11 +34,11 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class Curve_ST_EndPoint extends AbstractAccessorSpatialFunction<LineString> { +public final class ST_EndPoint extends AbstractAccessorSpatialFunction<LineString> { public static final String NAME = "ST_EndPoint"; - public Curve_ST_EndPoint(Expression[] parameters) { + public ST_EndPoint(Expression[] parameters) { super(parameters); } @@ -55,4 +58,9 @@ public final class Curve_ST_EndPoint extends AbstractAccessorSpatialFunction<Lin return pt; } + @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 index 25dae29..e1aa429 100644 --- 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 @@ -18,6 +18,9 @@ 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; /** @@ -55,4 +58,9 @@ public final class ST_Envelope extends AbstractAccessorSpatialFunction<Geometry> 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_Equals.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Equals.java index 46d491c..842fbd1 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/todo/ST_Equals.java @@ -18,6 +18,9 @@ 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; /** @@ -48,4 +51,9 @@ public final class ST_Equals extends AbstractBinarySpatialFunction { return left.equals(right); } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(Boolean.class).setName(NAME); + } + } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Point_ST_ExplicitPoint.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ExplicitPoint.java similarity index 77% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Point_ST_ExplicitPoint.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ExplicitPoint.java index 8188c60..e45e474 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Point_ST_ExplicitPoint.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ExplicitPoint.java @@ -21,6 +21,9 @@ import org.locationtech.jts.geom.Point; import java.text.ParseException; import java.util.ArrayList; import java.util.List; +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; /** @@ -32,11 +35,11 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class Point_ST_ExplicitPoint extends AbstractAccessorSpatialFunction<Point> { +public final class ST_ExplicitPoint extends AbstractAccessorSpatialFunction<Point> { public static final String NAME = "ST_ExplicitPoint"; - public Point_ST_ExplicitPoint(Expression[] parameters) { + public ST_ExplicitPoint(Expression[] parameters) { super(parameters); } @@ -60,4 +63,9 @@ public final class Point_ST_ExplicitPoint extends AbstractAccessorSpatialFunctio return values; } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(Double.class).setMinimumOccurs(0).setMaximumOccurs(Integer.MAX_VALUE).setName(NAME); + } + } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/CurvePolygon_ST_ExteriorRing.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ExteriorRing.java similarity index 78% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/CurvePolygon_ST_ExteriorRing.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ExteriorRing.java index 15dd7a4..4dd6631 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/CurvePolygon_ST_ExteriorRing.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ExteriorRing.java @@ -19,6 +19,9 @@ package org.apache.sis.internal.filter.sqlmm.todo; import org.locationtech.jts.geom.LineString; import org.locationtech.jts.geom.Polygon; 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; /** @@ -30,11 +33,11 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class CurvePolygon_ST_ExteriorRing extends AbstractAccessorSpatialFunction<Polygon> { +public final class ST_ExteriorRing extends AbstractAccessorSpatialFunction<Polygon> { public static final String NAME = "ST_ExteriorRing"; - public CurvePolygon_ST_ExteriorRing(Expression[] parameters) { + public ST_ExteriorRing(Expression[] parameters) { super(parameters); } @@ -54,4 +57,9 @@ public final class CurvePolygon_ST_ExteriorRing extends AbstractAccessorSpatialF ring.setSRID(geom.getSRID()); return ring; } + + @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_GeomCollection.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_GeomCollection.java index 1a61c87..f5169b9 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/todo/ST_GeomCollection.java @@ -16,7 +16,10 @@ */ package org.apache.sis.internal.filter.sqlmm.todo; +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; /** @@ -24,14 +27,14 @@ import org.opengis.filter.expression.Expression; * * @author Johann Sorel (Geomatys) * @version 2.0 - * @since 2.0 + * @since 2.0 * @module */ -public final class ST_GeomCollection extends AbstractGeomConstructor{ +public final class ST_GeomCollection extends AbstractGeomConstructor { public static final String NAME = "ST_GeomCollection"; - public ST_GeomCollection(Expression[] parameters){ + public ST_GeomCollection(Expression[] parameters) { super(parameters); } @@ -44,4 +47,9 @@ public final class ST_GeomCollection extends AbstractGeomConstructor{ protected Class<GeometryCollection> getExpectedClass() { 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/GeomColl_ST_GeometryN.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_GeometryN.java similarity index 80% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/GeomColl_ST_GeometryN.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_GeometryN.java index c2d4410..1705733 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/GeomColl_ST_GeometryN.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_GeometryN.java @@ -18,6 +18,9 @@ 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; /** @@ -30,11 +33,11 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class GeomColl_ST_GeometryN extends AbstractAccessorSpatialFunction<Geometry> { +public final class ST_GeometryN extends AbstractAccessorSpatialFunction<Geometry> { public static final String NAME = "ST_GeometryN"; - public GeomColl_ST_GeometryN(Expression[] parameters) { + public ST_GeometryN(Expression[] parameters) { super(parameters); } @@ -66,4 +69,9 @@ public final class GeomColl_ST_GeometryN extends AbstractAccessorSpatialFunction return sub; } + @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_GeometryType.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_GeometryType.java index 663a24a..dceffe1 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/todo/ST_GeometryType.java @@ -28,6 +28,9 @@ import java.text.ParseException; import java.util.LinkedHashMap; import java.util.Map; import java.util.Map.Entry; +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; /** @@ -79,4 +82,9 @@ public final class ST_GeometryType extends AbstractAccessorSpatialFunction<Geome return null; } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(String.class).setName(NAME); + } + } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/CurvePolygon_ST_InteriorRingN.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_InteriorRingN.java similarity index 79% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/CurvePolygon_ST_InteriorRingN.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_InteriorRingN.java index c9c5d11..0050168 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/CurvePolygon_ST_InteriorRingN.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_InteriorRingN.java @@ -19,6 +19,9 @@ package org.apache.sis.internal.filter.sqlmm.todo; import org.locationtech.jts.geom.LineString; import org.locationtech.jts.geom.Polygon; 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; /** @@ -30,11 +33,11 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class CurvePolygon_ST_InteriorRingN extends AbstractAccessorSpatialFunction<Polygon> { +public final class ST_InteriorRingN extends AbstractAccessorSpatialFunction<Polygon> { public static final String NAME = "ST_InteriorRingN"; - public CurvePolygon_ST_InteriorRingN(Expression[] parameters) { + public ST_InteriorRingN(Expression[] parameters) { super(parameters); } @@ -55,4 +58,9 @@ public final class CurvePolygon_ST_InteriorRingN extends AbstractAccessorSpatial ring.setSRID(geom.getSRID()); return ring; } + + @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_Intersection.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Intersection.java index 6dd4c34..5bed5d5 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/todo/ST_Intersection.java @@ -18,6 +18,9 @@ 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; /** @@ -50,4 +53,9 @@ public final class ST_Intersection extends AbstractBinarySpatialFunction { 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_Intersects.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Intersects.java index c54dcf8..5588af2 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/todo/ST_Intersects.java @@ -18,6 +18,9 @@ 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; /** @@ -49,4 +52,9 @@ public final class ST_Intersects extends AbstractBinarySpatialFunction { return left.intersects(right); } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(Boolean.class).setName(NAME); + } + } 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/todo/ST_Is3D.java index 64c6476..6383e54 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/todo/ST_Is3D.java @@ -19,6 +19,9 @@ package org.apache.sis.internal.filter.sqlmm.todo; import org.locationtech.jts.geom.Coordinate; 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; /** @@ -58,4 +61,9 @@ public final class ST_Is3D extends AbstractAccessorSpatialFunction<Geometry> { return null; } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(Boolean.class).setName(NAME); + } + } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Curve_ST_IsClosed.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_IsClosed.java similarity index 78% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Curve_ST_IsClosed.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_IsClosed.java index 2b17b72..6cea4a3 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Curve_ST_IsClosed.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_IsClosed.java @@ -18,6 +18,9 @@ package org.apache.sis.internal.filter.sqlmm.todo; import org.locationtech.jts.geom.LineString; 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; /** @@ -31,11 +34,11 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class Curve_ST_IsClosed extends AbstractAccessorSpatialFunction<LineString> { +public final class ST_IsClosed extends AbstractAccessorSpatialFunction<LineString> { public static final String NAME = "ST_IsClosed"; - public Curve_ST_IsClosed(Expression[] parameters) { + public ST_IsClosed(Expression[] parameters) { super(parameters); } @@ -54,4 +57,9 @@ public final class Curve_ST_IsClosed extends AbstractAccessorSpatialFunction<Lin return geom.isClosed(); } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(Boolean.class).setName(NAME); + } + } 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/todo/ST_IsEmpty.java index 5cc7308..0cb3ad7 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/todo/ST_IsEmpty.java @@ -18,6 +18,9 @@ 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; /** @@ -52,4 +55,9 @@ public final class ST_IsEmpty extends AbstractAccessorSpatialFunction<Geometry> return geom.isEmpty(); } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(Boolean.class).setName(NAME); + } + } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Curve_ST_IsRing.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_IsRing.java similarity index 78% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Curve_ST_IsRing.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_IsRing.java index c213ace..509189c 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Curve_ST_IsRing.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_IsRing.java @@ -18,6 +18,9 @@ package org.apache.sis.internal.filter.sqlmm.todo; import org.locationtech.jts.geom.LineString; 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; /** @@ -31,11 +34,11 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class Curve_ST_IsRing extends AbstractAccessorSpatialFunction<LineString> { +public final class ST_IsRing extends AbstractAccessorSpatialFunction<LineString> { public static final String NAME = "ST_IsRing"; - public Curve_ST_IsRing(Expression[] parameters) { + public ST_IsRing(Expression[] parameters) { super(parameters); } @@ -54,4 +57,9 @@ public final class Curve_ST_IsRing extends AbstractAccessorSpatialFunction<LineS return geom.isRing(); } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(Boolean.class).setName(NAME); + } + } 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/todo/ST_IsSimple.java index 2c711de..1829d26 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/todo/ST_IsSimple.java @@ -18,6 +18,9 @@ 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; /** @@ -53,4 +56,9 @@ public final class ST_IsSimple extends AbstractAccessorSpatialFunction<Geometry> return geom.isSimple(); } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(Boolean.class).setName(NAME); + } + } 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/todo/ST_IsValid.java index c0064e0..66098df 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/todo/ST_IsValid.java @@ -18,6 +18,9 @@ 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; /** @@ -52,4 +55,9 @@ public final class ST_IsValid extends AbstractAccessorSpatialFunction<Geometry> return geom.isValid(); } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(Boolean.class).setName(NAME); + } + } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Curve_ST_Length.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Length.java similarity index 78% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Curve_ST_Length.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Length.java index c262ce6..efeb4d8 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Curve_ST_Length.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Length.java @@ -18,6 +18,9 @@ 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; /** @@ -31,11 +34,11 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class Curve_ST_Length extends AbstractAccessorSpatialFunction<Geometry> { +public final class ST_Length extends AbstractAccessorSpatialFunction<Geometry> { public static final String NAME = "ST_Length"; - public Curve_ST_Length(Expression[] parameters) { + public ST_Length(Expression[] parameters) { super(parameters); } @@ -54,4 +57,9 @@ public final class Curve_ST_Length extends AbstractAccessorSpatialFunction<Geome return geom.getLength(); } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(Double.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 a4b18c2..cf510e6 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,7 +16,10 @@ */ package org.apache.sis.internal.filter.sqlmm.todo; +import org.apache.sis.feature.builder.FeatureTypeBuilder; +import org.apache.sis.feature.builder.PropertyTypeBuilder; import org.locationtech.jts.geom.LineString; +import org.opengis.feature.FeatureType; import org.opengis.filter.expression.Expression; /** @@ -44,4 +47,9 @@ public final class ST_LineString extends AbstractGeomConstructor{ protected Class<LineString> getExpectedClass() { 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_MultiLineString.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_MultiLineString.java index 0667ccb..003b81f 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/todo/ST_MultiLineString.java @@ -16,7 +16,10 @@ */ package org.apache.sis.internal.filter.sqlmm.todo; +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; /** @@ -44,4 +47,9 @@ public final class ST_MultiLineString extends AbstractGeomConstructor{ protected Class<MultiLineString> getExpectedClass() { 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/todo/ST_MultiPoint.java index 609b64c..9ad8f16 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/todo/ST_MultiPoint.java @@ -16,7 +16,10 @@ */ package org.apache.sis.internal.filter.sqlmm.todo; +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; /** @@ -44,4 +47,9 @@ public final class ST_MultiPoint extends AbstractGeomConstructor{ protected Class<MultiPoint> getExpectedClass() { 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/todo/ST_MultiPolygon.java index 3269a74..c42b40e 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/todo/ST_MultiPolygon.java @@ -16,7 +16,10 @@ */ package org.apache.sis.internal.filter.sqlmm.todo; +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; /** @@ -44,4 +47,9 @@ public final class ST_MultiPolygon extends AbstractGeomConstructor{ protected Class<MultiPolygon> getExpectedClass() { 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/GeomColl_ST_NumGeometries.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_NumGeometries.java similarity index 77% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/GeomColl_ST_NumGeometries.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_NumGeometries.java index 30434ae..19a0f99 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/GeomColl_ST_NumGeometries.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_NumGeometries.java @@ -18,6 +18,9 @@ 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; /** @@ -29,11 +32,11 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class GeomColl_ST_NumGeometries extends AbstractAccessorSpatialFunction<Geometry> { +public final class ST_NumGeometries extends AbstractAccessorSpatialFunction<Geometry> { public static final String NAME = "ST_NumGeometries"; - public GeomColl_ST_NumGeometries(Expression[] parameters) { + public ST_NumGeometries(Expression[] parameters) { super(parameters); } @@ -52,4 +55,9 @@ public final class GeomColl_ST_NumGeometries extends AbstractAccessorSpatialFunc return geom.getNumGeometries(); } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(Integer.class).setName(NAME); + } + } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/CurvePolygon_ST_NumInteriorRings.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_NumInteriorRings.java similarity index 78% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/CurvePolygon_ST_NumInteriorRings.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_NumInteriorRings.java index 3ea83a8..03ff827 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/CurvePolygon_ST_NumInteriorRings.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_NumInteriorRings.java @@ -18,6 +18,9 @@ package org.apache.sis.internal.filter.sqlmm.todo; import org.locationtech.jts.geom.Polygon; 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; /** @@ -31,11 +34,11 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class CurvePolygon_ST_NumInteriorRings extends AbstractAccessorSpatialFunction<Polygon> { +public final class ST_NumInteriorRings extends AbstractAccessorSpatialFunction<Polygon> { public static final String NAME = "ST_NumInteriorRings"; - public CurvePolygon_ST_NumInteriorRings(Expression[] parameters) { + public ST_NumInteriorRings(Expression[] parameters) { super(parameters); } @@ -54,4 +57,9 @@ public final class CurvePolygon_ST_NumInteriorRings extends AbstractAccessorSpat return geom.getNumInteriorRing(); } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(Integer.class).setName(NAME); + } + } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Line_ST_NumPoints.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_NumPoints.java similarity index 77% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Line_ST_NumPoints.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_NumPoints.java index 5f51805..1bd3fc0 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Line_ST_NumPoints.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_NumPoints.java @@ -18,6 +18,9 @@ package org.apache.sis.internal.filter.sqlmm.todo; import org.locationtech.jts.geom.LineString; 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; /** @@ -29,11 +32,11 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class Line_ST_NumPoints extends AbstractAccessorSpatialFunction<LineString> { +public final class ST_NumPoints extends AbstractAccessorSpatialFunction<LineString> { public static final String NAME = "ST_NumPoints"; - public Line_ST_NumPoints(Expression[] parameters) { + public ST_NumPoints(Expression[] parameters) { super(parameters); } @@ -52,4 +55,9 @@ public final class Line_ST_NumPoints extends AbstractAccessorSpatialFunction<Lin return geom.getNumPoints(); } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(Integer.class).setName(NAME); + } + } 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/todo/ST_Overlaps.java index 06bda2d..4e5af3c 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/todo/ST_Overlaps.java @@ -18,6 +18,9 @@ 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; /** @@ -48,4 +51,9 @@ public final class ST_Overlaps extends AbstractBinarySpatialFunction { return left.overlaps(right); } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(Boolean.class).setName(NAME); + } + } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Surface_ST_Perimeter.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Perimeter.java similarity index 79% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Surface_ST_Perimeter.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Perimeter.java index 436d8ce..e5b6055 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Surface_ST_Perimeter.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Perimeter.java @@ -18,6 +18,9 @@ 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; /** @@ -32,11 +35,11 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class Surface_ST_Perimeter extends AbstractAccessorSpatialFunction<Geometry> { +public final class ST_Perimeter extends AbstractAccessorSpatialFunction<Geometry> { public static final String NAME = "ST_Perimeter"; - public Surface_ST_Perimeter(Expression[] parameters) { + public ST_Perimeter(Expression[] parameters) { super(parameters); } @@ -56,4 +59,9 @@ public final class Surface_ST_Perimeter extends AbstractAccessorSpatialFunction< return geom.getLength(); } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(Double.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 1528f16..d999efc 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 @@ -20,7 +20,11 @@ import org.locationtech.jts.geom.Coordinate; import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.io.ParseException; import java.math.BigDecimal; +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.Point; +import org.opengis.feature.FeatureType; import org.opengis.filter.expression.Expression; /** @@ -115,7 +119,12 @@ public final class ST_Point extends AbstractSpatialFunction{ throw new OException("Unexpected number of arguments : "+children.size()); } - return new OSerializableGeometry(geom); + return geom; + } + + @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/Line_ST_PointN.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_PointN.java similarity index 80% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Line_ST_PointN.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_PointN.java index f247113..dcb3cc6 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Line_ST_PointN.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_PointN.java @@ -19,6 +19,9 @@ package org.apache.sis.internal.filter.sqlmm.todo; import org.locationtech.jts.geom.LineString; import org.locationtech.jts.geom.Point; 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; /** @@ -30,11 +33,11 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class Line_ST_PointN extends AbstractAccessorSpatialFunction<LineString> { +public final class ST_PointN extends AbstractAccessorSpatialFunction<LineString> { public static final String NAME = "ST_PointN"; - public Line_ST_PointN(Expression[] parameters) { + public ST_PointN(Expression[] parameters) { super(parameters); } @@ -66,4 +69,9 @@ public final class Line_ST_PointN extends AbstractAccessorSpatialFunction<LineSt return pt; } + @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/Surface_ST_PointOnSurface.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_PointOnSurface.java similarity index 78% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Surface_ST_PointOnSurface.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_PointOnSurface.java index 6f021f7..d3984d9 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Surface_ST_PointOnSurface.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_PointOnSurface.java @@ -18,6 +18,10 @@ 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; /** @@ -32,11 +36,11 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class Surface_ST_PointOnSurface extends AbstractAccessorSpatialFunction<Geometry> { +public final class ST_PointOnSurface extends AbstractAccessorSpatialFunction<Geometry> { public static final String NAME = "ST_PointOnSurface"; - public Surface_ST_PointOnSurface(Expression[] parameters) { + public ST_PointOnSurface(Expression[] parameters) { super(parameters); } @@ -57,4 +61,9 @@ public final class Surface_ST_PointOnSurface extends AbstractAccessorSpatialFunc return pt; } + @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_Polygon.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Polygon.java index 9102819..d3c80a8 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/todo/ST_Polygon.java @@ -16,7 +16,10 @@ */ package org.apache.sis.internal.filter.sqlmm.todo; +import org.apache.sis.feature.builder.FeatureTypeBuilder; +import org.apache.sis.feature.builder.PropertyTypeBuilder; import org.locationtech.jts.geom.Polygon; +import org.opengis.feature.FeatureType; import org.opengis.filter.expression.Expression; /** @@ -45,4 +48,9 @@ public final class ST_Polygon extends AbstractGeomConstructor{ return Polygon.class; } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(Polygon.class).setName(NAME); + } + } 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/todo/ST_Relate.java index 887c88c..440733d 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/todo/ST_Relate.java @@ -18,6 +18,9 @@ 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; /** @@ -59,4 +62,9 @@ public final class ST_Relate extends AbstractBinarySpatialFunction { return res; } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(Boolean.class).setName(NAME); + } + } 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/todo/ST_SRID.java index 70fcf22..b7cb29f 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/todo/ST_SRID.java @@ -18,6 +18,9 @@ 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; /** @@ -52,4 +55,9 @@ public final class ST_SRID extends AbstractAccessorSpatialFunction<Geometry> { return geom.getSRID(); } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(Integer.class).setName(NAME); + } + } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Curve_ST_StartPoint.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_StartPoint.java similarity index 79% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Curve_ST_StartPoint.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_StartPoint.java index 7d26435..0d2c365 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Curve_ST_StartPoint.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_StartPoint.java @@ -19,6 +19,9 @@ package org.apache.sis.internal.filter.sqlmm.todo; import org.locationtech.jts.geom.LineString; import org.locationtech.jts.geom.Point; 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; /** @@ -33,11 +36,11 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class Curve_ST_StartPoint extends AbstractAccessorSpatialFunction<LineString> { +public final class ST_StartPoint extends AbstractAccessorSpatialFunction<LineString> { public static final String NAME = "ST_StartPoint"; - public Curve_ST_StartPoint(Expression[] parameters) { + public ST_StartPoint(Expression[] parameters) { super(parameters); } @@ -57,4 +60,9 @@ public final class Curve_ST_StartPoint extends AbstractAccessorSpatialFunction<L return pt; } + @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_SymDifference.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_SymDifference.java index 466eda4..981f540 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/todo/ST_SymDifference.java @@ -18,6 +18,9 @@ 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; /** @@ -50,4 +53,9 @@ public final class ST_SymDifference extends AbstractBinarySpatialFunction { 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_ToGeomColl.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToGeomColl.java index 3d1e9e7..85ec72a 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 @@ -19,6 +19,9 @@ package org.apache.sis.internal.filter.sqlmm.todo; import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.GeometryCollection; 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; /** @@ -55,4 +58,9 @@ public final class ST_ToGeomColl extends AbstractAccessorSpatialFunction<Geometr 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_ToLineString.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToLineString.java index 97f7446..c796631 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 @@ -19,6 +19,9 @@ package org.apache.sis.internal.filter.sqlmm.todo; import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.LineString; 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; /** @@ -55,4 +58,9 @@ public final class ST_ToLineString extends AbstractAccessorSpatialFunction<Geome 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_ToMultiLine.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToMultiLine.java index 4c47a48..1e8e89d 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 @@ -19,6 +19,9 @@ package org.apache.sis.internal.filter.sqlmm.todo; import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.MultiLineString; 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; /** @@ -55,4 +58,9 @@ public final class ST_ToMultiLine extends AbstractAccessorSpatialFunction<Geomet return env; } + @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_ToMultiPoint.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToMultiPoint.java index 07f10ae..c99b1ee 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 @@ -19,6 +19,9 @@ package org.apache.sis.internal.filter.sqlmm.todo; import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.MultiPoint; 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; /** @@ -55,4 +58,9 @@ public final class ST_ToMultiPoint extends AbstractAccessorSpatialFunction<Geome return env; } + @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_ToMultiPolygon.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToMultiPolygon.java index bb8c7dc..decf11c 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 @@ -19,6 +19,9 @@ package org.apache.sis.internal.filter.sqlmm.todo; import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.MultiPolygon; 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; /** @@ -55,4 +58,9 @@ public final class ST_ToMultiPolygon extends AbstractAccessorSpatialFunction<Geo return env; } + @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_ToPoint.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToPoint.java index 7cf63ae..bcfba87 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 @@ -19,6 +19,9 @@ package org.apache.sis.internal.filter.sqlmm.todo; import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.Point; 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; /** @@ -55,4 +58,9 @@ public final class ST_ToPoint extends AbstractAccessorSpatialFunction<Geometry> return env; } + @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_ToPolygon.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_ToPolygon.java index aa3ee32..83ec999 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 @@ -19,6 +19,9 @@ package org.apache.sis.internal.filter.sqlmm.todo; import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.Polygon; 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; /** @@ -55,4 +58,9 @@ public final class ST_ToPolygon extends AbstractAccessorSpatialFunction<Geometry return env; } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(Polygon.class).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/todo/ST_Touches.java index 6a688d6..495c937 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/todo/ST_Touches.java @@ -18,6 +18,9 @@ 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; /** @@ -48,4 +51,9 @@ public final class ST_Touches extends AbstractBinarySpatialFunction { return left.touches(right); } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(Boolean.class).setName(NAME); + } + } 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/todo/ST_Union.java index c223190..4d88999 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/todo/ST_Union.java @@ -18,6 +18,9 @@ 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; /** @@ -50,4 +53,9 @@ public final class ST_Union extends AbstractBinarySpatialFunction { 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_Within.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Within.java index da76aab..c02e972 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/todo/ST_Within.java @@ -18,6 +18,9 @@ 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; /** @@ -48,4 +51,9 @@ public final class ST_Within extends AbstractBinarySpatialFunction { return left.within(right); } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(Boolean.class).setName(NAME); + } + } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Point_ST_X.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_X.java similarity index 77% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Point_ST_X.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_X.java index 349c5e5..4fe1946 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Point_ST_X.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_X.java @@ -18,6 +18,9 @@ package org.apache.sis.internal.filter.sqlmm.todo; import org.locationtech.jts.geom.Point; 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; /** @@ -29,11 +32,11 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class Point_ST_X extends AbstractAccessorSpatialFunction<Point> { +public final class ST_X extends AbstractAccessorSpatialFunction<Point> { public static final String NAME = "ST_X"; - public Point_ST_X(Expression[] parameters) { + public ST_X(Expression[] parameters) { super(parameters); } @@ -52,4 +55,9 @@ public final class Point_ST_X extends AbstractAccessorSpatialFunction<Point> { return geom.getCoordinate().x; } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(Double.class).setName(NAME); + } + } 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/todo/ST_XFromBinary.java index d70f882..10c26bc 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/todo/ST_XFromBinary.java @@ -16,6 +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.FilterGeometryUtils; import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.GeometryCollection; @@ -24,8 +26,8 @@ import org.locationtech.jts.geom.LinearRing; import org.locationtech.jts.geom.MultiLineString; import org.locationtech.jts.geom.MultiPoint; import org.locationtech.jts.geom.MultiPolygon; -import org.locationtech.jts.geom.Point; import org.locationtech.jts.geom.Polygon; +import org.opengis.feature.FeatureType; import org.opengis.filter.expression.Expression; /** @@ -75,6 +77,11 @@ public abstract class ST_XFromBinary extends AbstractSpatialFunction { return geom; } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(getExpectedClass()).setName(getName()); + } + /** * SQL/MM, ISO/IEC 13249-3:2011, ST_BdMPolyFromWKB. <br> * Return an ST_MultiPolygon value which is transformed from a BINARY LARGE @@ -101,22 +108,20 @@ public abstract class ST_XFromBinary extends AbstractSpatialFunction { @Override public Geometry evaluate(Object candidate) { - final OSerializableGeometry sergeo = super.evaluateNow(context, candidate); - final MultiLineString mls = (MultiLineString) sergeo.getGeometry(); + final MultiLineString mls = (MultiLineString) FilterGeometryUtils.toGeometry(candidate, parameters.get(0)); final LinearRing exterior; final LinearRing[] interiors = new LinearRing[mls.getNumGeometries() - 1]; - exterior = OrientSpatialUtilities.GF.createLinearRing(mls.getGeometryN(0).getCoordinates()); + exterior = FilterGeometryUtils.GF.createLinearRing(mls.getGeometryN(0).getCoordinates()); for (int i = 0; i < interiors.length; i++) { - interiors[i] = OrientSpatialUtilities.GF.createLinearRing(mls.getGeometryN(i + 1).getCoordinates()); + interiors[i] = FilterGeometryUtils.GF.createLinearRing(mls.getGeometryN(i + 1).getCoordinates()); } - final Polygon poly = OrientSpatialUtilities.GF.createPolygon(exterior, interiors); - final MultiPolygon mpoly = OrientSpatialUtilities.GF.createMultiPolygon(new Polygon[]{poly}); + final Polygon poly = FilterGeometryUtils.GF.createPolygon(exterior, interiors); + final MultiPolygon mpoly = FilterGeometryUtils.GF.createMultiPolygon(new Polygon[]{poly}); mpoly.setSRID(mls.getSRID()); - sergeo.setGeometry(mpoly); - return sergeo; + return mpoly; } } @@ -146,21 +151,19 @@ public abstract class ST_XFromBinary extends AbstractSpatialFunction { @Override public Geometry evaluate(Object candidate) { - final OSerializableGeometry sergeo = super.evaluateNow(context, candidate); - final MultiLineString mls = (MultiLineString) sergeo.getGeometry(); + final MultiLineString mls = (MultiLineString) FilterGeometryUtils.toGeometry(candidate, parameters.get(0)); final LinearRing exterior; final LinearRing[] interiors = new LinearRing[mls.getNumGeometries() - 1]; - exterior = OrientSpatialUtilities.GF.createLinearRing(mls.getGeometryN(0).getCoordinates()); + exterior = FilterGeometryUtils.GF.createLinearRing(mls.getGeometryN(0).getCoordinates()); for (int i = 0; i < interiors.length; i++) { - interiors[i] = OrientSpatialUtilities.GF.createLinearRing(mls.getGeometryN(i + 1).getCoordinates()); + interiors[i] = FilterGeometryUtils.GF.createLinearRing(mls.getGeometryN(i + 1).getCoordinates()); } - final Polygon poly = OrientSpatialUtilities.GF.createPolygon(exterior, interiors); + final Polygon poly = FilterGeometryUtils.GF.createPolygon(exterior, interiors); poly.setSRID(mls.getSRID()); - sergeo.setGeometry(poly); - return sergeo; + return poly; } } @@ -334,8 +337,8 @@ public abstract class ST_XFromBinary extends AbstractSpatialFunction { } @Override - protected Class<Point> getExpectedClass() { - return Point.class; + protected Class<org.locationtech.jts.geom.Point> getExpectedClass() { + return org.locationtech.jts.geom.Point.class; } } 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/todo/ST_XFromGML.java index 953d487..4929a7a 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/todo/ST_XFromGML.java @@ -16,16 +16,17 @@ */ package org.apache.sis.internal.filter.sqlmm.todo; +import org.apache.sis.feature.builder.FeatureTypeBuilder; +import org.apache.sis.feature.builder.PropertyTypeBuilder; import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.GeometryCollection; import org.locationtech.jts.geom.LineString; import org.locationtech.jts.geom.MultiLineString; import org.locationtech.jts.geom.MultiPoint; import org.locationtech.jts.geom.MultiPolygon; -import org.locationtech.jts.geom.Point; import org.locationtech.jts.geom.Polygon; +import org.opengis.feature.FeatureType; import org.opengis.filter.expression.Expression; -import org.opengis.util.FactoryException; /** * @@ -63,13 +64,7 @@ public abstract class ST_XFromGML extends AbstractSpatialFunction { final Object obj = parameters.get(0).evaluate(candidate); final Geometry geom; - try { - geom = GeometrytoJTS.toJTS(String.valueOf(obj)); - } catch (FactoryException ex) { - throw new OException(ex.getMessage(), ex); - } catch (JAXBException ex) { - throw new OException(ex.getMessage(), ex); - } + if (true) throw new RuntimeException("GML not supported yet"); if (!getExpectedClass().isInstance(geom)) { warning(new Exception("GML is not of expected type : " + getExpectedClass().getSimpleName())); @@ -84,6 +79,11 @@ public abstract class ST_XFromGML extends AbstractSpatialFunction { return geom; } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(getExpectedClass()).setName(getName()); + } + /** * SQL/MM, ISO/IEC 13249-3:2011, ST_GeomCollFromGML. <br> * Return an ST_GeomCollection value which is transformed from a CHARACTER @@ -252,8 +252,8 @@ public abstract class ST_XFromGML extends AbstractSpatialFunction { } @Override - protected Class<Point> getExpectedClass() { - return Point.class; + protected Class<org.locationtech.jts.geom.Point> getExpectedClass() { + return org.locationtech.jts.geom.Point.class; } } 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/todo/ST_XFromText.java index 6ea0b02..bfa5bba 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/todo/ST_XFromText.java @@ -16,6 +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.FilterGeometryUtils; import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.GeometryCollection; @@ -24,8 +26,8 @@ import org.locationtech.jts.geom.LinearRing; import org.locationtech.jts.geom.MultiLineString; import org.locationtech.jts.geom.MultiPoint; import org.locationtech.jts.geom.MultiPolygon; -import org.locationtech.jts.geom.Point; import org.locationtech.jts.geom.Polygon; +import org.opengis.feature.FeatureType; import org.opengis.filter.expression.Expression; /** @@ -75,6 +77,11 @@ public abstract class ST_XFromText extends AbstractSpatialFunction { return geom; } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(getExpectedClass()).setName(getName()); + } + /** * SQL/MM, ISO/IEC 13249-3:2011, ST_BdMPolyFromText. <br> * Return an ST_MultiPolygon value which is transformed from a CHARACTER @@ -101,22 +108,20 @@ public abstract class ST_XFromText extends AbstractSpatialFunction { @Override public Geometry evaluate(Object candidate) { - final OSerializableGeometry sergeo = super.evaluateNow(context, candidate); - final MultiLineString mls = (MultiLineString) sergeo.getGeometry(); + final MultiLineString mls = (MultiLineString) FilterGeometryUtils.toGeometry(candidate, parameters.get(0)); final LinearRing exterior; final LinearRing[] interiors = new LinearRing[mls.getNumGeometries() - 1]; - exterior = OrientSpatialUtilities.GF.createLinearRing(mls.getGeometryN(0).getCoordinates()); + exterior = FilterGeometryUtils.GF.createLinearRing(mls.getGeometryN(0).getCoordinates()); for (int i = 0; i < interiors.length; i++) { - interiors[i] = OrientSpatialUtilities.GF.createLinearRing(mls.getGeometryN(i + 1).getCoordinates()); + interiors[i] = FilterGeometryUtils.GF.createLinearRing(mls.getGeometryN(i + 1).getCoordinates()); } - final Polygon poly = OrientSpatialUtilities.GF.createPolygon(exterior, interiors); - final MultiPolygon mpoly = OrientSpatialUtilities.GF.createMultiPolygon(new Polygon[]{poly}); + final Polygon poly = FilterGeometryUtils.GF.createPolygon(exterior, interiors); + final MultiPolygon mpoly = FilterGeometryUtils.GF.createMultiPolygon(new Polygon[]{poly}); mpoly.setSRID(mls.getSRID()); - sergeo.setGeometry(mpoly); - return sergeo; + return mpoly; } } @@ -146,21 +151,19 @@ public abstract class ST_XFromText extends AbstractSpatialFunction { @Override public Geometry evaluate(Object candidate) { - final OSerializableGeometry sergeo = super.evaluateNow(context, candidate); - final MultiLineString mls = (MultiLineString) sergeo.getGeometry(); + final MultiLineString mls = (MultiLineString) FilterGeometryUtils.toGeometry(candidate, parameters.get(0)); final LinearRing exterior; final LinearRing[] interiors = new LinearRing[mls.getNumGeometries() - 1]; - exterior = OrientSpatialUtilities.GF.createLinearRing(mls.getGeometryN(0).getCoordinates()); + exterior = FilterGeometryUtils.GF.createLinearRing(mls.getGeometryN(0).getCoordinates()); for (int i = 0; i < interiors.length; i++) { - interiors[i] = OrientSpatialUtilities.GF.createLinearRing(mls.getGeometryN(i + 1).getCoordinates()); + interiors[i] = FilterGeometryUtils.GF.createLinearRing(mls.getGeometryN(i + 1).getCoordinates()); } - final Polygon poly = OrientSpatialUtilities.GF.createPolygon(exterior, interiors); + final Polygon poly = FilterGeometryUtils.GF.createPolygon(exterior, interiors); poly.setSRID(mls.getSRID()); - sergeo.setGeometry(poly); - return sergeo; + return poly; } } @@ -335,8 +338,8 @@ public abstract class ST_XFromText extends AbstractSpatialFunction { } @Override - protected Class<Point> getExpectedClass() { - return Point.class; + protected Class<org.locationtech.jts.geom.Point> getExpectedClass() { + return org.locationtech.jts.geom.Point.class; } } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Point_ST_Y.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Y.java similarity index 77% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Point_ST_Y.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Y.java index 5be528a..3adfb18 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Point_ST_Y.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Y.java @@ -18,6 +18,9 @@ package org.apache.sis.internal.filter.sqlmm.todo; import org.locationtech.jts.geom.Point; 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; /** @@ -29,11 +32,11 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class Point_ST_Y extends AbstractAccessorSpatialFunction<Point> { +public final class ST_Y extends AbstractAccessorSpatialFunction<Point> { public static final String NAME = "ST_Y"; - public Point_ST_Y(Expression[] parameters) { + public ST_Y(Expression[] parameters) { super(parameters); } @@ -52,4 +55,9 @@ public final class Point_ST_Y extends AbstractAccessorSpatialFunction<Point> { return geom.getCoordinate().y; } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(Double.class).setName(NAME); + } + } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Point_ST_Z.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Z.java similarity index 77% rename from core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Point_ST_Z.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Z.java index 18c3949..ac4fa05 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/Point_ST_Z.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/todo/ST_Z.java @@ -18,6 +18,9 @@ package org.apache.sis.internal.filter.sqlmm.todo; import org.locationtech.jts.geom.Point; 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; /** @@ -29,11 +32,11 @@ import org.opengis.filter.expression.Expression; * @since 2.0 * @module */ -public final class Point_ST_Z extends AbstractAccessorSpatialFunction<Point> { +public final class ST_Z extends AbstractAccessorSpatialFunction<Point> { public static final String NAME = "ST_Z"; - public Point_ST_Z(Expression[] parameters) { + public ST_Z(Expression[] parameters) { super(parameters); } @@ -52,4 +55,9 @@ public final class Point_ST_Z extends AbstractAccessorSpatialFunction<Point> { return geom.getCoordinate().z; } + @Override + public PropertyTypeBuilder expectedType(FeatureType valueType, FeatureTypeBuilder addTo) { + return addTo.addAttribute(Double.class).setName(NAME); + } + }
