Updates, Cleanup and preparation for a pull request.
Project: http://git-wip-us.apache.org/repos/asf/zest-qi4j/repo Commit: http://git-wip-us.apache.org/repos/asf/zest-qi4j/commit/9d71ec3c Tree: http://git-wip-us.apache.org/repos/asf/zest-qi4j/tree/9d71ec3c Diff: http://git-wip-us.apache.org/repos/asf/zest-qi4j/diff/9d71ec3c Branch: refs/heads/ramtej-fb/spatial.queries Commit: 9d71ec3c0e31329504d5cd6f86e03f5f915630e4 Parents: 236d0ef Author: jj <[email protected]> Authored: Sat Jan 10 23:45:55 2015 +0100 Committer: jj <[email protected]> Committed: Sat Jan 10 23:45:56 2015 +0100 ---------------------------------------------------------------------- .../java/org/qi4j/api/geometry/TFeature.java | 25 +- .../org/qi4j/api/geometry/TGeometryFactory.java | 7 +- .../org/qi4j/api/geometry/TMultiLineString.java | 59 ++ .../java/org/qi4j/api/geometry/TMultiPoint.java | 2 - .../java/org/qi4j/api/geometry/TPolygon.java | 4 +- .../geometry/internal/GeometryCollections.java | 14 +- .../qi4j/api/geometry/internal/HasShape.java | 7 - .../qi4j/api/geometry/internal/TGeometry.java | 131 +++- .../api/geometry/internal/TGeometryRoot.java | 2 +- .../qi4j/api/geometry/internal/TLinearRing.java | 29 - .../org/qi4j/api/geometry/internal/TShape.java | 18 + .../internal/builders/TFeatureBuilder.java | 6 +- .../builders/TMultiLineStringBuilder.java | 64 ++ .../spatial/SpatialQueryExpressions.java | 104 +-- .../predicate/ST_ContainsSpecification.java | 30 - .../predicate/ST_DisjointSpecification.java | 17 +- .../predicate/ST_IntersectsSpecification.java | 22 +- .../predicate/ST_WithinSpecification.java | 32 +- .../SpatialPredicatesSpecification.java | 14 +- .../main/java/org/qi4j/api/type/ValueType.java | 8 +- .../qi4j/api/geometry/TGeometryFactoryTest.java | 55 +- .../org/qi4j/api/geometry/TGeometryTest.java | 54 +- .../test/indexing/AbstractAnyQueryTest.java | 2 +- .../indexing/AbstractSpatialRegressionTest.java | 489 +++++++++----- .../java/org/qi4j/test/indexing/TestData.java | 1 - extensions/indexing-elasticsearch/build.gradle | 2 + .../ElasticSearchConfiguration.java | 6 - .../elasticsearch/ElasticSearchFinder.java | 40 +- .../elasticsearch/ElasticSearchIndexer.java | 51 +- .../elasticsearch/ElasticSearchSupport.java | 2 - .../elasticsearch/cluster/ESClusterSupport.java | 6 +- .../spatial/ElasticSearchSpatialFinder.java | 97 +-- .../spatial/ElasticSearchSpatialIndexer.java | 325 ++++++---- .../configuration/SpatialConfiguration.java | 122 ++-- .../SpatialExceptionConfiguration.java | 15 - .../SpatialFunctionsSupportMatrix.java | 212 +++--- .../functions/convert/ConvertFinderSupport.java | 75 +-- .../functions/convert/ST_GeometryFromText.java | 49 +- .../predicates/PredicateFinderSupport.java | 85 +-- .../functions/predicates/ST_Disjoint.java | 150 ++--- .../functions/predicates/ST_DisjointV2.java | 96 --- .../functions/predicates/ST_DisjointV3.java | 131 ---- .../functions/predicates/ST_Intersects.java | 86 ++- .../spatial/functions/predicates/ST_Within.java | 85 ++- ...stractElasticSearchSpatialFinderSupport.java | 7 - .../AbstractElasticSearchSpatialFunction.java | 225 +++---- .../spatial/internal/InternalUtils.java | 48 +- .../spatial/mappings/SpatialIndexMapper.java | 65 +- .../mappings/builders/AbstractBuilder.java | 37 +- .../mappings/builders/GeoPointBuilder.java | 75 +-- .../mappings/builders/GeoShapeBuilder.java | 95 ++- .../mappings/builders/MappingQueryBuilder.java | 14 + .../builders/SpatialMappingFactory.java | 21 +- .../spatial/mappings/cache/MappingsCache.java | 89 +-- .../mappings/cache/MappingsCachesTable.java | 27 +- .../filesystem/ESFilesystemSupport.java | 20 +- .../internal/AbstractElasticSearchSupport.java | 55 +- .../elasticsearch/memory/ESMemorySupport.java | 8 +- .../ElasticSearchComplexQueryTest.java | 7 + .../elasticsearch/ElasticSearchFinderTest.java | 7 + .../elasticsearch/ElasticSearchQueryTest.java | 41 +- .../index/elasticsearch/ElasticSearchTest.java | 7 + .../index/elasticsearch/ImmenseTermTest.java | 7 + .../spatial/ElasticSearchSpatialBench.java | 118 +--- ...cSearchSpatialExtensionClusterQueryTest.java | 640 ------------------- ...chSpatialQueryTestUsingGeoPointIndexing.java | 159 +++++ ...chSpatialQueryTestUsingGeoShapeIndexing.java | 140 ++++ ...earchSpatialQueryTestUsingUsingDefaults.java | 153 +++++ ...SearchSpatialRegressionQueryClusterTest.java | 1 - ...earchSpatialRegressionQueryVariant1Test.java | 131 ---- ...earchSpatialRegressionQueryVariant2Test.java | 131 ---- ...lasticSearchConfigurationVariant1.properties | 28 - ...lasticSearchConfigurationVariant2.properties | 28 - ...SearchConfigurationVariant2Backup.properties | 28 - ...archConfigurationVariant2_Backup_.properties | 28 - .../ElasticSearchGeoPointIndexing.properties | 28 + .../ElasticSearchGeoShapeIndexing.properties | 28 + .../geojson/internal/TransformationBuilder.java | 4 +- .../spatial/v2/assembly/TGeometryAssembler.java | 1 + .../conversions/from/GeoJsonFromConverter.java | 2 +- 80 files changed, 2444 insertions(+), 2890 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/core/api/src/main/java/org/qi4j/api/geometry/TFeature.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/geometry/TFeature.java b/core/api/src/main/java/org/qi4j/api/geometry/TFeature.java index 4f89954..f899d0b 100644 --- a/core/api/src/main/java/org/qi4j/api/geometry/TFeature.java +++ b/core/api/src/main/java/org/qi4j/api/geometry/TFeature.java @@ -16,14 +16,14 @@ package org.qi4j.api.geometry; import org.qi4j.api.common.Optional; import org.qi4j.api.geometry.internal.TGeometry; +import org.qi4j.api.geometry.internal.TLinearRing; import org.qi4j.api.injection.scope.Structure; import org.qi4j.api.injection.scope.This; import org.qi4j.api.mixin.Mixins; import org.qi4j.api.property.Property; import org.qi4j.api.structure.Module; -import java.util.List; -import java.util.Map; +import java.util.*; @Mixins(TFeature.Mixin.class) @@ -42,6 +42,7 @@ public interface TFeature extends TGeometry { TFeature of(TGeometry geometry); TFeature withProperties(Map<String, List<String>> properties); + TFeature addProperty(String name, String value); TGeometry asGeometry(); @@ -56,7 +57,6 @@ public interface TFeature extends TGeometry { @This TFeature self; - public TFeature of(TGeometry geometry) { self.geometryType().set(TGEOMETRY_TYPE.FEATURE); self.geometry().set(geometry); @@ -64,11 +64,28 @@ public interface TFeature extends TGeometry { return self; } - public TFeature withProperties(Map<String, List<String>> properties) { + public TFeature withProperties(Map<String, List<String>> properties) + { self.properties().set(properties); return self; } + public TFeature addProperty(String name, String value) + { + if (self.properties() == null || self.properties().get() == null || !self.properties().get().containsKey(name)) + { + Map<String, List<String>> properties = new HashMap<>(); + properties.put(name, Arrays.asList(value) ); + self.properties().set(properties); + } + else + { + self.properties().get().get(name).add(value); + } + return self; + } + + public boolean isEmpty() { return (self.geometry() == null) || (self.geometry().get() == null) || (self.geometry().get().isEmpty()) ? true : false; } http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/core/api/src/main/java/org/qi4j/api/geometry/TGeometryFactory.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/geometry/TGeometryFactory.java b/core/api/src/main/java/org/qi4j/api/geometry/TGeometryFactory.java index 6a2ea39..33b1709 100644 --- a/core/api/src/main/java/org/qi4j/api/geometry/TGeometryFactory.java +++ b/core/api/src/main/java/org/qi4j/api/geometry/TGeometryFactory.java @@ -39,14 +39,17 @@ public class TGeometryFactory { return new TLinearRingBuilder(module); } - public static TLineStringBuilder TlineString(Module module) { + public static TLineStringBuilder TLineString(Module module) { return new TLineStringBuilder(module); } + public static TMultiLineStringBuilder TMultiLineString(Module module) + { + return new TMultiLineStringBuilder(module); + } public static TPolygonBuilder TPolygon(Module module) { return new TPolygonBuilder(module); } - public static TMultiPolygonsBuilder TMultiPolygon(Module module) { return new TMultiPolygonsBuilder(module); } http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/core/api/src/main/java/org/qi4j/api/geometry/TMultiLineString.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/geometry/TMultiLineString.java b/core/api/src/main/java/org/qi4j/api/geometry/TMultiLineString.java new file mode 100644 index 0000000..9b12a3f --- /dev/null +++ b/core/api/src/main/java/org/qi4j/api/geometry/TMultiLineString.java @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2014, Jiri Jetmar. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.qi4j.api.geometry; + +import org.qi4j.api.geometry.internal.GeometryCollections; +import org.qi4j.api.geometry.internal.TGeometry; +import org.qi4j.api.injection.scope.Structure; +import org.qi4j.api.injection.scope.This; +import org.qi4j.api.mixin.Mixins; +import org.qi4j.api.structure.Module; + +import java.util.ArrayList; +import java.util.List; + +@Mixins(TMultiLineString.Mixin.class) +public interface TMultiLineString extends GeometryCollections { + + TMultiLineString of(TLineString... lines); + TMultiLineString of(List<TLineString> lines); + + public abstract class Mixin extends GeometryCollections.Mixin implements TMultiLineString { + @Structure + Module module; + + @This + TMultiLineString self; + + public TMultiLineString of(List<TLineString> lines) { + of(lines.toArray(new TLineString[lines.size()])); + return self; + } + public TMultiLineString of(TLineString... lines) { + self.geometryType().set(TGEOMETRY_TYPE.MULTILINESTRING); + init(); + List<TGeometry> l = new ArrayList<>(); + + for (TLineString p : lines) { + l.add(p); + } + if (self.isEmpty()) + self.geometries().set(l); + else + self.geometries().get().addAll(l); + return self; + } + } +} http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/core/api/src/main/java/org/qi4j/api/geometry/TMultiPoint.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/geometry/TMultiPoint.java b/core/api/src/main/java/org/qi4j/api/geometry/TMultiPoint.java index f20b3ab..2a85011 100644 --- a/core/api/src/main/java/org/qi4j/api/geometry/TMultiPoint.java +++ b/core/api/src/main/java/org/qi4j/api/geometry/TMultiPoint.java @@ -67,8 +67,6 @@ public interface TMultiPoint extends GeometryCollections { else self.geometries().get().addAll(l); - // self.type().set(TGeomRoot.TGEOMETRY.LINESTRING); - return self; } http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/core/api/src/main/java/org/qi4j/api/geometry/TPolygon.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/geometry/TPolygon.java b/core/api/src/main/java/org/qi4j/api/geometry/TPolygon.java index 73b1020..26a900b 100644 --- a/core/api/src/main/java/org/qi4j/api/geometry/TPolygon.java +++ b/core/api/src/main/java/org/qi4j/api/geometry/TPolygon.java @@ -16,7 +16,7 @@ package org.qi4j.api.geometry; import org.qi4j.api.common.Optional; import org.qi4j.api.geometry.internal.Coordinate; -import org.qi4j.api.geometry.internal.HasShape; +import org.qi4j.api.geometry.internal.TShape; import org.qi4j.api.geometry.internal.TGeometry; import org.qi4j.api.geometry.internal.TLinearRing; import org.qi4j.api.injection.scope.Structure; @@ -29,7 +29,7 @@ import java.util.ArrayList; import java.util.List; @Mixins(TPolygon.Mixin.class) -public interface TPolygon extends HasShape, TGeometry { +public interface TPolygon extends TShape, TGeometry { Property<TLinearRing> shell(); http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/core/api/src/main/java/org/qi4j/api/geometry/internal/GeometryCollections.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/geometry/internal/GeometryCollections.java b/core/api/src/main/java/org/qi4j/api/geometry/internal/GeometryCollections.java index 081703b..e99831c 100644 --- a/core/api/src/main/java/org/qi4j/api/geometry/internal/GeometryCollections.java +++ b/core/api/src/main/java/org/qi4j/api/geometry/internal/GeometryCollections.java @@ -26,10 +26,9 @@ import java.util.List; public interface GeometryCollections extends TGeometry { Property<List<TGeometry>> geometries(); - - TGeometry getGeometryN(int n); + int getNumGeometries(); boolean isEmpty(); @@ -42,17 +41,18 @@ public interface GeometryCollections extends TGeometry { protected void init() { - if (self.geometries().get() == null) { - + if (self.geometries().get() == null) + { List<TGeometry> geometries = new ArrayList<>(); self.geometries().set(geometries); - // self.type().set(TGeomRoot.TGEOMETRY.POINT); } } public boolean isEmpty() { - for (int i = 0; i < self.geometries().get().size(); i++) { - if (!self.geometries().get().get(i).isEmpty()) { + for (int i = 0; i < self.geometries().get().size(); i++) + { + if (!self.geometries().get().get(i).isEmpty()) + { return false; } } http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/core/api/src/main/java/org/qi4j/api/geometry/internal/HasShape.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/geometry/internal/HasShape.java b/core/api/src/main/java/org/qi4j/api/geometry/internal/HasShape.java deleted file mode 100644 index 92d43c8..0000000 --- a/core/api/src/main/java/org/qi4j/api/geometry/internal/HasShape.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.qi4j.api.geometry.internal; - -/** - * Created by jj on 02.12.14. - */ -public interface HasShape extends TGeometry { -} http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/core/api/src/main/java/org/qi4j/api/geometry/internal/TGeometry.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/geometry/internal/TGeometry.java b/core/api/src/main/java/org/qi4j/api/geometry/internal/TGeometry.java index 28b7974..5138596 100644 --- a/core/api/src/main/java/org/qi4j/api/geometry/internal/TGeometry.java +++ b/core/api/src/main/java/org/qi4j/api/geometry/internal/TGeometry.java @@ -14,8 +14,11 @@ package org.qi4j.api.geometry.internal; +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.MultiPoint; import org.qi4j.api.common.Optional; import org.qi4j.api.common.UseDefaults; +import org.qi4j.api.geometry.*; import org.qi4j.api.injection.scope.Structure; import org.qi4j.api.injection.scope.This; import org.qi4j.api.mixin.Mixins; @@ -25,29 +28,48 @@ import org.qi4j.api.structure.Module; @Mixins(TGeometry.Mixin.class) public interface TGeometry extends TGeometryRoot { - // @Optional Property<TGEOMETRY_TYPE> geometryType(); - // Property<TGEOM_TYPE> type1(); - @Optional @UseDefaults Property<String> CRS(); String getCRS(); - void setCRS(String crs); - abstract Coordinate[] getCoordinates(); - abstract int getNumPoints(); - abstract boolean isEmpty(); TGEOMETRY_TYPE getType(); + boolean isPoint(); + boolean isPoint(TGeometry tGeometry); + + boolean isMultiPoint(); + boolean isMultiPoint(TGeometry tGeometry); + + boolean isLineString(); + boolean isLineString(TGeometry tGeometry); + + boolean isMultiLineString(); + boolean isMultiLineString(TGeometry tGeometry); + + boolean isPolygon(); + boolean isPolygon(TGeometry tGeometry); + + boolean isMultiPolygon(); + boolean isMultiPolygon(TGeometry tGeometry); + + boolean isFeature(); + boolean isFeature(TGeometry tGeometry); + + boolean isFeatureCollection(); + boolean isFeatureCollection(TGeometry tGeometry); + + boolean isGeometry(); + boolean isGeometry(Object tGeometry); public abstract class Mixin implements TGeometry { @@ -78,8 +100,99 @@ public interface TGeometry extends TGeometryRoot { throw new RuntimeException("Should never be called"); } - public TGEOMETRY_TYPE getType() { - return self.geometryType().get(); + public TGEOMETRY_TYPE getType() + { + // "strong typing" - type & instanceOf must match + switch(self.geometryType().get()) + { + case POINT : return self.isPoint() == false ? TGEOMETRY_TYPE.INVALID:TGEOMETRY_TYPE.POINT; + case MULTIPOINT : return self.isMultiPoint() == false ? TGEOMETRY_TYPE.INVALID:TGEOMETRY_TYPE.MULTIPOINT; + case LINESTRING : return self.isLineString() == false ? TGEOMETRY_TYPE.INVALID:TGEOMETRY_TYPE.LINESTRING; + case MULTILINESTRING : return self.isMultiLineString() == false ? TGEOMETRY_TYPE.INVALID:TGEOMETRY_TYPE.MULTILINESTRING; + case POLYGON : return self.isPolygon() == false ? TGEOMETRY_TYPE.INVALID:TGEOMETRY_TYPE.POLYGON; + case MULTIPOLYGON : return self.isMultiPolygon() == false ? TGEOMETRY_TYPE.INVALID:TGEOMETRY_TYPE.MULTIPOLYGON; + case FEATURE : return self.isFeature() == false ? TGEOMETRY_TYPE.INVALID:TGEOMETRY_TYPE.FEATURE; + case FEATURECOLLECTION : return self.isFeatureCollection() == false ? TGEOMETRY_TYPE.INVALID:TGEOMETRY_TYPE.FEATURECOLLECTION; + default : return TGEOMETRY_TYPE.INVALID; + } + } + + public boolean isPoint() + { + return self instanceof TPoint ? true:false; + } + public boolean isPoint(TGeometry tGeometry) + { + return tGeometry instanceof TPoint ? true:false; + } + + public boolean isMultiPoint() + { + return self instanceof TMultiPoint ? true:false; + } + public boolean isMultiPoint(TGeometry tGeometry) + { + return tGeometry instanceof TMultiPoint ? true:false; + } + + public boolean isLineString() + { + return self instanceof TLineString ? true:false; + } + public boolean isLineString(TGeometry tGeometry) + { + return tGeometry instanceof TLineString ? true:false; + } + + public boolean isMultiLineString() + { + return self instanceof TMultiLineString ? true:false; + } + public boolean isMultiLineString(TGeometry tGeometry) + { + return tGeometry instanceof TMultiLineString ? true:false; + } + public boolean isPolygon() + { + return self instanceof TPolygon ? true:false; + } + public boolean isPolygon(TGeometry tGeometry) + { + return tGeometry instanceof TPolygon ? true:false; + } + public boolean isMultiPolygon() + { + return self instanceof TMultiPolygon ? true:false; + } + public boolean isMultiPolygon(TGeometry tGeometry) + { + return tGeometry instanceof TMultiPolygon ? true:false; + } + public boolean isFeature() + { + return self instanceof TFeature ? true:false; + } + public boolean isFeature(TGeometry tGeometry) + { + return tGeometry instanceof TFeature ? true:false; + } + + public boolean isFeatureCollection() + { + return self instanceof TFeatureCollection ? true:false; + } + public boolean isFeatureCollection(TGeometry tGeometry) + { + return tGeometry instanceof TFeatureCollection ? true:false; + } + + public boolean isGeometry() + { + return self instanceof TGeometry ? true:false; + } + public boolean isGeometry(Object tGeometry) + { + return tGeometry instanceof TGeometry ? true:false; } } http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/core/api/src/main/java/org/qi4j/api/geometry/internal/TGeometryRoot.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/geometry/internal/TGeometryRoot.java b/core/api/src/main/java/org/qi4j/api/geometry/internal/TGeometryRoot.java index e06ad9c..25731c0 100644 --- a/core/api/src/main/java/org/qi4j/api/geometry/internal/TGeometryRoot.java +++ b/core/api/src/main/java/org/qi4j/api/geometry/internal/TGeometryRoot.java @@ -21,7 +21,7 @@ import org.qi4j.api.value.ValueComposite; */ public interface TGeometryRoot extends ValueComposite { - public static enum TGEOMETRY_TYPE {POINT, MULTIPOINT, LINESTRING, MULTILINESTRING, POLYGON, MULTIPOLYGON, FEATURE, FEATURECOLLECTION} + public static enum TGEOMETRY_TYPE {POINT, MULTIPOINT, LINESTRING, MULTILINESTRING, POLYGON, MULTIPOLYGON, FEATURE, FEATURECOLLECTION, INVALID} } http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/core/api/src/main/java/org/qi4j/api/geometry/internal/TLinearRing.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/geometry/internal/TLinearRing.java b/core/api/src/main/java/org/qi4j/api/geometry/internal/TLinearRing.java index 63261e7..87fc414 100644 --- a/core/api/src/main/java/org/qi4j/api/geometry/internal/TLinearRing.java +++ b/core/api/src/main/java/org/qi4j/api/geometry/internal/TLinearRing.java @@ -21,42 +21,13 @@ import org.qi4j.api.mixin.Mixins; @Mixins(TLinearRing.Mixin.class) public interface TLinearRing extends TLineString { - // TLinearRing of(TPoint... points); - // TLinearRing of(List<TPoint> points); - // TLinearRing xy(double x, double y); boolean isValid(); public abstract class Mixin extends TLineString.Mixin implements TLinearRing //, TLineString { - @This TLinearRing self; - /** - * @Override public TLinearRing of(TPoint... points) - * { - * super.of(points); - * <p/> - * // self.of(points); - * <p/> - * return self; - * } - * @Override public TLinearRing of(List<TPoint> points) - * { - * of(points.toArray(new TPoint[points.size()])); - * return self; - * } - * @Override public TLinearRing xy(double x, double y) { - * super.xy(x,y); - * // self.xy(x,y); - * return self; - * } - */ - - // public Coordinate[] getCoordinates() - // { - // return null; - //} @Override public boolean isValid() { if (self.getStartPoint() == null || self.getEndPoint() == null) return false; http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/core/api/src/main/java/org/qi4j/api/geometry/internal/TShape.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/geometry/internal/TShape.java b/core/api/src/main/java/org/qi4j/api/geometry/internal/TShape.java new file mode 100644 index 0000000..7c0f8da --- /dev/null +++ b/core/api/src/main/java/org/qi4j/api/geometry/internal/TShape.java @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2014, Jiri Jetmar. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.qi4j.api.geometry.internal; + +public interface TShape extends TGeometry { +} http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/core/api/src/main/java/org/qi4j/api/geometry/internal/builders/TFeatureBuilder.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/geometry/internal/builders/TFeatureBuilder.java b/core/api/src/main/java/org/qi4j/api/geometry/internal/builders/TFeatureBuilder.java index 4306851..58932e2 100644 --- a/core/api/src/main/java/org/qi4j/api/geometry/internal/builders/TFeatureBuilder.java +++ b/core/api/src/main/java/org/qi4j/api/geometry/internal/builders/TFeatureBuilder.java @@ -38,11 +38,15 @@ public class TFeatureBuilder { return this; } + public TFeatureBuilder addProperty(String name, String value) + { + geometry.addProperty(name, value); + return this; + } public TFeature geometry() { return geometry; } - public TFeature geometry(int srid) { return geometry(); } http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/core/api/src/main/java/org/qi4j/api/geometry/internal/builders/TMultiLineStringBuilder.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/geometry/internal/builders/TMultiLineStringBuilder.java b/core/api/src/main/java/org/qi4j/api/geometry/internal/builders/TMultiLineStringBuilder.java new file mode 100644 index 0000000..9862301 --- /dev/null +++ b/core/api/src/main/java/org/qi4j/api/geometry/internal/builders/TMultiLineStringBuilder.java @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2014, Jiri Jetmar. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.qi4j.api.geometry.internal.builders; + +import org.qi4j.api.geometry.TLineString; +import org.qi4j.api.geometry.TMultiLineString; +import org.qi4j.api.structure.Module; + +import java.util.List; + +/** + * Created by jj on 26.11.14. + */ +public class TMultiLineStringBuilder { + + private Module module; + private TMultiLineString geometry; + + + public TMultiLineStringBuilder(Module module) { + this.module = module; + geometry = module.newValueBuilder(TMultiLineString.class).prototype(); + } + + + public TMultiLineStringBuilder points(double[][][] points) { + for (double xy[][] : points) { + if (xy.length < 2) return null; + // geometry.xy(xy[0], xy[1]); + } + return this; + } + + public TMultiLineStringBuilder of(List<TLineString> lines) { + geometry.of(lines); + return this; + } + + public TMultiLineStringBuilder of(TLineString... lines) { + geometry.of(lines); + return this; + } + + + public TMultiLineString geometry() { + return geometry; + } + + public TMultiLineString geometry(int srid) { + return geometry(); + } +} http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/core/api/src/main/java/org/qi4j/api/query/grammar/extensions/spatial/SpatialQueryExpressions.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/query/grammar/extensions/spatial/SpatialQueryExpressions.java b/core/api/src/main/java/org/qi4j/api/query/grammar/extensions/spatial/SpatialQueryExpressions.java index f180928..c86a090 100644 --- a/core/api/src/main/java/org/qi4j/api/query/grammar/extensions/spatial/SpatialQueryExpressions.java +++ b/core/api/src/main/java/org/qi4j/api/query/grammar/extensions/spatial/SpatialQueryExpressions.java @@ -1,9 +1,8 @@ package org.qi4j.api.query.grammar.extensions.spatial; -import org.qi4j.api.composite.Composite; import org.qi4j.api.geometry.TPoint; import org.qi4j.api.geometry.TUnit; -import org.qi4j.api.geometry.internal.HasShape; +import org.qi4j.api.geometry.internal.TShape; import org.qi4j.api.geometry.internal.TGeometry; import org.qi4j.api.property.Property; import org.qi4j.api.query.QueryExpressions; @@ -14,105 +13,66 @@ import org.qi4j.api.query.grammar.extensions.spatial.predicate.ST_IntersectsSpec import org.qi4j.api.query.grammar.extensions.spatial.predicate.ST_WithinSpecification; import org.qi4j.functional.Specification; -/** - * Created by jakes on 2/8/14. - */ + public final class SpatialQueryExpressions extends QueryExpressions { - // valid for TPoint values - public static <T extends TGeometry> ST_WithinSpecification<TGeometry> ST_Within( Property<T> geometry1, TPoint value, double distance, TUnit unit) // T value ) + // ST_Within + public static <T extends TGeometry> ST_WithinSpecification<TGeometry> ST_Within( Property<T> geometry, TPoint param, double distance, TUnit unit) { - return new ST_WithinSpecification( property(geometry1), value, distance, unit); + return new ST_WithinSpecification( property(geometry), param, distance, unit); } - public static <T extends TGeometry> ST_WithinSpecification<TGeometry> ST_Within( Property<T> geometry1, HasShape value) + public static <T extends TGeometry> ST_WithinSpecification<TGeometry> ST_Within( Property<T> geometry, TShape param) { - return new ST_WithinSpecification( property(geometry1), value); + return new ST_WithinSpecification( property(geometry), param); } - public static <T extends TGeometry> ST_WithinSpecification<TGeometry> ST_Within( Property<T> geometry1, Specification<SpatialConvertSpecification> operator, double distance, TUnit unit ) - { - return new ST_WithinSpecification( property(geometry1), operator, distance, unit); - } -/** - public static <T extends TGeometry> ST_WithinSpecification<TGeometry> ST_Within( Property<T> geometry1, Specification<SpatialConvertSpecification> operator) + public static <T extends TGeometry> ST_WithinSpecification<TGeometry> ST_Within( Property<T> geometry, Specification<SpatialConvertSpecification> operator, double distance, TUnit unit ) { - return new ST_WithinSpecification( property(geometry1), operator; + return new ST_WithinSpecification( property(geometry), operator, distance, unit); } -*/ - public static <T extends TGeometry> ST_WithinSpecification<TGeometry> ST_Within( Property<T> geometry1, Specification<SpatialConvertSpecification> operator) - { - return new ST_WithinSpecification( property(geometry1), operator); - } - - - public static <T extends TGeometry> ST_WithinSpecification<TGeometry> ST_Within( Specification<SpatialConvertSpecification> operator) // T value ) + public static <T extends TGeometry> ST_WithinSpecification<TGeometry> ST_Within( Property<T> geometry, Specification<SpatialConvertSpecification> operator) { - // return new ST_WithinSpecification<TGeometry>( property(geometry1), operator); - return null; + return new ST_WithinSpecification( property(geometry), operator); } - - public static <T extends TGeometry> ST_DisjointSpecification<TGeometry> ST_Disjoint( Property<T> geometry1, Specification<SpatialConvertSpecification> operator, long distance ) + // ST_Disjoint + public static <T extends TGeometry> ST_DisjointSpecification<TGeometry> ST_Disjoint( Property<T> geometry, Specification<SpatialConvertSpecification> operator, long distance ) { - return new ST_DisjointSpecification( property(geometry1), operator, distance); + return new ST_DisjointSpecification( property(geometry), operator, distance); } - public static <T extends TGeometry> ST_DisjointSpecification<TGeometry> ST_Disjoint( Property<T> geometry1, TPoint value, double distance, TUnit unit) // T value ) + public static <T extends TGeometry> ST_DisjointSpecification<TGeometry> ST_Disjoint( Property<T> geometry, TPoint param, double distance, TUnit unit) { - return new ST_DisjointSpecification( property(geometry1), value, distance, unit); + return new ST_DisjointSpecification( property(geometry), param, distance, unit); } - public static <T extends TGeometry> ST_DisjointSpecification<TGeometry> ST_Disjoint( Property<T> geometry1, HasShape value) + public static <T extends TGeometry> ST_DisjointSpecification<TGeometry> ST_Disjoint( Property<T> geometry, TShape param) { - // return new ST_WithinSpecification( property(geometry1), value); - return new ST_DisjointSpecification(property(geometry1), value); + return new ST_DisjointSpecification(property(geometry), param); } - public static <T extends TGeometry> ST_IntersectsSpecification<TGeometry> ST_Intersects( Property<T> geometry1, Specification<SpatialConvertSpecification> operator, long distance ) - { - return new ST_IntersectsSpecification( property(geometry1), operator, distance); - } - - public static <T extends TGeometry> ST_IntersectsSpecification<TGeometry> ST_Intersects( Property<T> geometry1, TPoint value, double distance, TUnit unit) // T value ) + // ST_Intersects + public static <T extends TGeometry> ST_IntersectsSpecification<TGeometry> ST_Intersects( Property<T> geometry, Specification<SpatialConvertSpecification> operator, long distance ) { - return new ST_IntersectsSpecification( property(geometry1), value, distance, unit); + return new ST_IntersectsSpecification( property(geometry), operator, distance); } - public static <T extends TGeometry> ST_IntersectsSpecification<TGeometry> ST_Intersects( Property<T> geometry1, HasShape value) + public static <T extends TGeometry> ST_IntersectsSpecification<TGeometry> ST_Intersects( Property<T> geometry, TPoint value, double distance, TUnit unit) { - // return new ST_WithinSpecification( property(geometry1), value); - return new ST_IntersectsSpecification(property(geometry1), value); + return new ST_IntersectsSpecification( property(geometry), value, distance, unit); } - - - /** - public static <TGeometry> ST_GeomFromTextSpecification<TGeometry> ST_GeomFromText( Property<TGeometry> geometry1, Specification<SpatialConvertSpecification> operator) // T value ) + public static <T extends TGeometry> ST_IntersectsSpecification<TGeometry> ST_Intersects( Property<T> geometry, TShape param) { - return new ST_GeomFromTextSpecification<TGeometry>( property(geometry1), operator); + return new ST_IntersectsSpecification(property(geometry), param); } - */ - - // PropertyFunction<T> property - -// public static <TGeometry> ST_PointFromTextSpecification<TGeometry> ST_PointFromText( String WKT, int a) -// { -// // return null; -// return new ST_PointFromTextSpecification<TGeometry>( WKT, a); -// } - -// public static TGeomPoint ST_PointFromText( String WKT, int a) throws ParseException -// { -// // return null; -// return (TGeomPoint)new ST_PointFromTextSpecification<TGeometry>( WKT, a).convert(); -// // return null; -// } + // ST_GeometryFromText public static Specification<SpatialConvertSpecification> ST_GeometryFromText(String WKT) { return ST_GeometryFromText( WKT, null); @@ -123,16 +83,4 @@ public final class SpatialQueryExpressions extends QueryExpressions { return new ST_GeomFromTextSpecification( WKT, crs); } - - /** - public static ST_GeomFromTextSpecification<TGeometry> ST_GeomFromText(String WKT, int a) throws ParseException - { - // return null; - return new ST_GeomFromTextSpecification<TGeometry>( WKT, a); - // return null; - } - */ - - - } http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/core/api/src/main/java/org/qi4j/api/query/grammar/extensions/spatial/predicate/ST_ContainsSpecification.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/query/grammar/extensions/spatial/predicate/ST_ContainsSpecification.java b/core/api/src/main/java/org/qi4j/api/query/grammar/extensions/spatial/predicate/ST_ContainsSpecification.java deleted file mode 100644 index 8ad961f..0000000 --- a/core/api/src/main/java/org/qi4j/api/query/grammar/extensions/spatial/predicate/ST_ContainsSpecification.java +++ /dev/null @@ -1,30 +0,0 @@ -package org.qi4j.api.query.grammar.extensions.spatial.predicate; - -import org.qi4j.api.geometry.internal.TGeometry; -import org.qi4j.api.query.grammar.PropertyFunction; - -/** - * ST_Within Specification. - * - * - */ -public class ST_ContainsSpecification<T extends TGeometry> - extends SpatialPredicatesSpecification<TGeometry> -{ - public ST_ContainsSpecification(PropertyFunction<TGeometry> property, TGeometry value) - { - super( property, value ); - } - - @Override - protected boolean compare( TGeometry value ) - { - return value.equals( this.value ); - } - - @Override - public String toString() - { - return property.toString() + " is within " + value.toString(); - } -} http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/core/api/src/main/java/org/qi4j/api/query/grammar/extensions/spatial/predicate/ST_DisjointSpecification.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/query/grammar/extensions/spatial/predicate/ST_DisjointSpecification.java b/core/api/src/main/java/org/qi4j/api/query/grammar/extensions/spatial/predicate/ST_DisjointSpecification.java index 06dfbd2..b3c95a3 100644 --- a/core/api/src/main/java/org/qi4j/api/query/grammar/extensions/spatial/predicate/ST_DisjointSpecification.java +++ b/core/api/src/main/java/org/qi4j/api/query/grammar/extensions/spatial/predicate/ST_DisjointSpecification.java @@ -16,9 +16,9 @@ public class ST_DisjointSpecification<T extends TGeometry> private double distance; private TUnit unit; - public ST_DisjointSpecification(PropertyFunction<T> property, TGeometry value) + public ST_DisjointSpecification(PropertyFunction<T> property, TGeometry param) { - super( property, value ); + super( property, param ); } public ST_DisjointSpecification(PropertyFunction<T> property, Specification<SpatialConvertSpecification> operator, long distance) @@ -33,24 +33,15 @@ public class ST_DisjointSpecification<T extends TGeometry> this.unit = unit; } - public ST_DisjointSpecification(PropertyFunction<T> property, Specification<SpatialConvertSpecification> operator, Variable variable) - { - super( property, operator ); - } - - public ST_DisjointSpecification(PropertyFunction<T> property, Specification<SpatialConvertSpecification> operator) - { - super( property, operator ); - } public double getDistance() { return distance; } public TUnit getUnit() { return unit; } @Override - protected boolean compare( TGeometry value ) + protected boolean compare( TGeometry param ) { - return value.equals( this.value ); + return param.equals( this.param ); } @Override http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/core/api/src/main/java/org/qi4j/api/query/grammar/extensions/spatial/predicate/ST_IntersectsSpecification.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/query/grammar/extensions/spatial/predicate/ST_IntersectsSpecification.java b/core/api/src/main/java/org/qi4j/api/query/grammar/extensions/spatial/predicate/ST_IntersectsSpecification.java index e14d553..b7f40c4 100644 --- a/core/api/src/main/java/org/qi4j/api/query/grammar/extensions/spatial/predicate/ST_IntersectsSpecification.java +++ b/core/api/src/main/java/org/qi4j/api/query/grammar/extensions/spatial/predicate/ST_IntersectsSpecification.java @@ -16,9 +16,9 @@ public class ST_IntersectsSpecification<T extends TGeometry> private double distance; private TUnit unit; - public ST_IntersectsSpecification(PropertyFunction<T> property, TGeometry value) + public ST_IntersectsSpecification(PropertyFunction<T> property, TGeometry param) { - super( property, value ); + super( property, param ); } public ST_IntersectsSpecification(PropertyFunction<T> property, Specification<SpatialConvertSpecification> operator, long distance) @@ -26,36 +26,28 @@ public class ST_IntersectsSpecification<T extends TGeometry> super( property, operator ); } - public ST_IntersectsSpecification(PropertyFunction<T> property, TPoint value, double distance, TUnit unit) + public ST_IntersectsSpecification(PropertyFunction<T> property, TPoint param, double distance, TUnit unit) { - super( property, value ); + super( property, param ); this.distance = distance; this.unit = unit; } - public ST_IntersectsSpecification(PropertyFunction<T> property, Specification<SpatialConvertSpecification> operator, Variable variable) - { - super( property, operator ); - } - public ST_IntersectsSpecification(PropertyFunction<T> property, Specification<SpatialConvertSpecification> operator) - { - super( property, operator ); - } public double getDistance() { return distance; } public TUnit getUnit() { return unit; } @Override - protected boolean compare( TGeometry value ) + protected boolean compare( TGeometry param ) { - return value.equals( this.value ); + return param.equals( this.param ); } @Override public String toString() { - return "ST_DisjointSpecification"; // property.toString() + " is within " + value.toString(); + return "ST_IntersectsSpecification"; // property.toString() + " is within " + value.toString(); } } http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/core/api/src/main/java/org/qi4j/api/query/grammar/extensions/spatial/predicate/ST_WithinSpecification.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/query/grammar/extensions/spatial/predicate/ST_WithinSpecification.java b/core/api/src/main/java/org/qi4j/api/query/grammar/extensions/spatial/predicate/ST_WithinSpecification.java index 3b67dad..cd28a85 100644 --- a/core/api/src/main/java/org/qi4j/api/query/grammar/extensions/spatial/predicate/ST_WithinSpecification.java +++ b/core/api/src/main/java/org/qi4j/api/query/grammar/extensions/spatial/predicate/ST_WithinSpecification.java @@ -8,9 +8,7 @@ import org.qi4j.api.query.grammar.Variable; import org.qi4j.api.query.grammar.extensions.spatial.convert.SpatialConvertSpecification; import org.qi4j.functional.Specification; -/** - * ST_Within Specification. - */ + public class ST_WithinSpecification<T extends TGeometry> extends SpatialPredicatesSpecification<T> { @@ -18,14 +16,14 @@ public class ST_WithinSpecification<T extends TGeometry> private double distance; private TUnit unit; - public ST_WithinSpecification(PropertyFunction<T> property, TGeometry value) + public ST_WithinSpecification(PropertyFunction<T> property, TGeometry param) { - super( property, value ); + super( property, param ); } - public ST_WithinSpecification(PropertyFunction<T> property, TPoint value, double distance, TUnit unit) + public ST_WithinSpecification(PropertyFunction<T> property, TPoint param, double distance, TUnit unit) { - super( property, value ); + super( property, param ); this.distance = distance; this.unit = unit; } @@ -37,10 +35,6 @@ public class ST_WithinSpecification<T extends TGeometry> this.unit = unit; } - public ST_WithinSpecification(PropertyFunction<T> property, Specification<SpatialConvertSpecification> operator, Variable variable) - { - super( property, operator ); - } public ST_WithinSpecification(PropertyFunction<T> property, Specification<SpatialConvertSpecification> operator) { @@ -52,14 +46,24 @@ public class ST_WithinSpecification<T extends TGeometry> @Override - protected boolean compare( TGeometry value ) + protected boolean compare( TGeometry param ) { - return value.equals( this.value ); + return param.equals( this.param ); } @Override public String toString() { - return "ST_WithinSpecification"; // property.toString() + " is within " + value.toString(); + StringBuffer spec = new StringBuffer(); + spec.append("ST_WITHIN").append("( ").append(property.toString()).append(" IS WITHIN "); + spec.append(param.toString()); + + if (distance > 0) + { + spec.append(" WITH RADIUS ").append(distance).append(" ").append(unit); + } + + spec.append(" ) "); + return spec.toString(); } } http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/core/api/src/main/java/org/qi4j/api/query/grammar/extensions/spatial/predicate/SpatialPredicatesSpecification.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/query/grammar/extensions/spatial/predicate/SpatialPredicatesSpecification.java b/core/api/src/main/java/org/qi4j/api/query/grammar/extensions/spatial/predicate/SpatialPredicatesSpecification.java index 7031145..9d3dfec 100644 --- a/core/api/src/main/java/org/qi4j/api/query/grammar/extensions/spatial/predicate/SpatialPredicatesSpecification.java +++ b/core/api/src/main/java/org/qi4j/api/query/grammar/extensions/spatial/predicate/SpatialPredicatesSpecification.java @@ -17,13 +17,13 @@ public abstract class SpatialPredicatesSpecification<T extends TGeometry> extends ExpressionSpecification { protected final PropertyFunction<T> property; - protected final TGeometry value; + protected final TGeometry param; protected final Specification<SpatialConvertSpecification> operator; - public SpatialPredicatesSpecification(PropertyFunction<T> property, TGeometry value) + public SpatialPredicatesSpecification(PropertyFunction<T> property, TGeometry param) { this.property = property; - this.value = value; + this.param = param; this.operator = null; } @@ -31,7 +31,7 @@ public abstract class SpatialPredicatesSpecification<T extends TGeometry> { this.property = property; this.operator = operator; - this.value = null; + this.param = null; } public PropertyFunction<T> property() @@ -42,8 +42,6 @@ public abstract class SpatialPredicatesSpecification<T extends TGeometry> @Override public final boolean satisfiedBy( Composite item ) { - System.out.println("SpatialPredicatesSpecification::satisfiedBy(" + item + ")"); - try { Property<T> prop = property.map( item ); @@ -69,9 +67,9 @@ public abstract class SpatialPredicatesSpecification<T extends TGeometry> protected abstract boolean compare( TGeometry value ); - public TGeometry value() + public TGeometry param() { - return value; + return param; } public Specification<SpatialConvertSpecification> operator() http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/core/api/src/main/java/org/qi4j/api/type/ValueType.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/type/ValueType.java b/core/api/src/main/java/org/qi4j/api/type/ValueType.java index 0700337..8c74442 100644 --- a/core/api/src/main/java/org/qi4j/api/type/ValueType.java +++ b/core/api/src/main/java/org/qi4j/api/type/ValueType.java @@ -108,7 +108,7 @@ public class ValueType } return false; } - public static boolean isGeometryValue(Object object) + public static boolean isGeometricValue(Object object) { NullArgumentException.validateNotNull( "object", object ); if( object instanceof TGeometry) @@ -118,12 +118,6 @@ public class ValueType return false; } - public static boolean isGeometryValue(Class<?> type) - { - - return false; - } - protected final Iterable<Class<?>> types; public ValueType( Class<?> type ) http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/core/api/src/test/java/org/qi4j/api/geometry/TGeometryFactoryTest.java ---------------------------------------------------------------------- diff --git a/core/api/src/test/java/org/qi4j/api/geometry/TGeometryFactoryTest.java b/core/api/src/test/java/org/qi4j/api/geometry/TGeometryFactoryTest.java index f106517..30276bd 100644 --- a/core/api/src/test/java/org/qi4j/api/geometry/TGeometryFactoryTest.java +++ b/core/api/src/test/java/org/qi4j/api/geometry/TGeometryFactoryTest.java @@ -33,9 +33,7 @@ import static org.qi4j.api.geometry.TGeometryFactory.TMultiPolygon; import static org.qi4j.api.geometry.TGeometryFactory.TPoint; import static org.qi4j.api.geometry.TGeometryFactory.TPolygon; -/** - * JAVADOC - */ + public class TGeometryFactoryTest extends AbstractQi4jTest { @@ -54,6 +52,7 @@ public class TGeometryFactoryTest TPoint.class, TMultiPoint.class, TLineString.class, + TMultiLineString.class, TPolygon.class, TMultiPolygon.class, TFeature.class, @@ -64,7 +63,7 @@ public class TGeometryFactoryTest } @Test - public void testWhenCRSIsCreated() + public void script01() { String CRS_EPSG_4326 = "EPSG:4326"; TCRS crs = TCrs(module).crs(CRS_EPSG_4326); @@ -72,7 +71,7 @@ public class TGeometryFactoryTest } @Test - public void testWhenPointIsCreated() + public void script02() { TPoint point_2D = TPoint(module).x(1d).y(2d).geometry(); assertEquals(1d, point_2D.x(), ZERO); @@ -90,7 +89,7 @@ public class TGeometryFactoryTest } @Test - public void testWhenMultiPointIsCreatedVerifyTypesAndValues() + public void script03() { TMultiPoint multiPoint = TMultiPoint(module).points(new double[][] @@ -129,10 +128,10 @@ public class TGeometryFactoryTest @Test - public void testWhenLineStringCreated() + public void script04() { - TLineString line = TlineString(module).points(new double[][] + TLineString line = TLineString(module).points(new double[][] { {0, 0}, {1, 0}, @@ -151,7 +150,29 @@ public class TGeometryFactoryTest } @Test - public void testWhenLinearRingCreated() + public void script05() + { + TMultiLineString mLine = TMultiLineString(module).of + ( + TLineString(module).points(new double[][] + { + {0, 0}, + {1, 0}, + {1, 1}, + {0, 1}, + {0, 1} + + }).geometry() + ).geometry(); + + assertThat(mLine.getCRS(), equalTo(CRS_EPSG_27572)); + assertEquals(5, mLine.getNumPoints()); + assertTrue(mLine.getGeometryN(0).isLineString()); + } + + + @Test + public void script06() { TLinearRing ring = TLinearRing(module).ring(new double[][] @@ -171,13 +192,13 @@ public class TGeometryFactoryTest } @Test - public void testWhenLinearRingIsCleatedDSL() + public void script07() { TLinearRing tLinearRing = TLinearRing(module).of().geometry(); } @Test - public void testWhenPolygonIsCreated() + public void script08() { TPolygon polygon = TPolygon(module) @@ -213,7 +234,7 @@ public class TGeometryFactoryTest } @Test - public void testWhenPolygonIsCreatedWithoutHoles() + public void script09() { TPolygon polygon = TPolygon(module) @@ -246,7 +267,7 @@ public class TGeometryFactoryTest } @Test - public void testWhenPolygonIsCreatedWitHoles() + public void script11() { TPolygon polygon = TPolygon(module) @@ -292,7 +313,7 @@ public class TGeometryFactoryTest @Test - public void testWhenMultiPolygonIsCreated() { + public void script12() { TPolygon polygon1 = TPolygon(module) @@ -383,7 +404,7 @@ public class TGeometryFactoryTest } @Test - public void testWhenFeatureCreated() { + public void script13() { TFeature featureOfAPoint = TFeature(module).of(TPoint(module).x(1d).y(2d).z(3d).geometry()).geometry(); assertEquals(featureOfAPoint.getType(), TGeometryRoot.TGEOMETRY_TYPE.FEATURE); @@ -394,7 +415,7 @@ public class TGeometryFactoryTest } @Test - public void testWhenFeatureOfPolygonIsCreated() { + public void script14() { TFeature featureOfAPolygon = TFeature(module).of( @@ -420,7 +441,7 @@ public class TGeometryFactoryTest } @Test - public void testWhenFeatureCollectionIsCreated() { + public void script15() { TFeature featureOfAPolygon = TFeature(module).of( TPolygon(module) http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/core/api/src/test/java/org/qi4j/api/geometry/TGeometryTest.java ---------------------------------------------------------------------- diff --git a/core/api/src/test/java/org/qi4j/api/geometry/TGeometryTest.java b/core/api/src/test/java/org/qi4j/api/geometry/TGeometryTest.java index 6bb4d11..2c12c18 100644 --- a/core/api/src/test/java/org/qi4j/api/geometry/TGeometryTest.java +++ b/core/api/src/test/java/org/qi4j/api/geometry/TGeometryTest.java @@ -26,6 +26,7 @@ import org.qi4j.test.AbstractQi4jTest; import static org.hamcrest.core.IsEqual.equalTo; import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; /** * JAVADOC @@ -44,6 +45,7 @@ public class TGeometryTest TPoint.class, TMultiPoint.class, TLineString.class, + TMultiLineString.class, TPolygon.class, TMultiPolygon.class, TFeature.class, @@ -51,7 +53,7 @@ public class TGeometryTest } @Test - public void testWhenCRSIsCreated() + public void script01() { String CRS = "urn:ogc:def:crs:OGC:1.3:CRS84"; ValueBuilder<TCRS> builder = module.newValueBuilder(TCRS.class); @@ -60,7 +62,7 @@ public class TGeometryTest } @Test - public void testWhenCoordinatedCreated() + public void script02() { ValueBuilder<Coordinate> builder = module.newValueBuilder(Coordinate.class); Coordinate coordinate1 = builder.prototype().of(1d,2d,3d); @@ -75,7 +77,7 @@ public class TGeometryTest } @Test - public void testWhenPointCreated() + public void script03() { ValueBuilder<TPoint> builder1 = module.newValueBuilder(TPoint.class); @@ -112,7 +114,7 @@ public class TGeometryTest @Test - public void testWhenLineStringCreated() + public void script04() { ValueBuilder<TLineString> builder = module.newValueBuilder(TLineString.class); @@ -138,7 +140,7 @@ public class TGeometryTest } @Test - public void testWhenLineStringCreatedV2() { + public void script05() { ValueBuilder<TLineString> builder = module.newValueBuilder(TLineString.class); TLineString lineString = builder.prototype().of() @@ -150,12 +152,28 @@ public class TGeometryTest .yx(0d, 0d); assertTrue(lineString.getStartPoint().x() == 0d); + } + + @Test + public void script06() { + ValueBuilder<TMultiLineString> builder = module.newValueBuilder(TMultiLineString.class); + + TMultiLineString multiLineString = builder.prototype().of( + module.newValueBuilder(TLineString.class).prototype().of() + .yx(0d, 0d) + .yx(0d, 1d) + .yx(1d, 0d) + .yx(1d, 1d) + .yx(0d, 0d) ); + + assertEquals(5, multiLineString.getNumPoints()); + assertTrue(multiLineString.getGeometryN(0).isLineString()); } @Test - public void testWhenValidLinearRingIsCreated() + public void script07() { ValueBuilder<TLinearRing> builder = module.newValueBuilder(TLinearRing.class); @@ -171,7 +189,7 @@ public class TGeometryTest } @Test - public void testWhenInvalidLinearRingIsCreated() + public void script08() { ValueBuilder<TLinearRing> builder = module.newValueBuilder(TLinearRing.class); @@ -187,7 +205,7 @@ public class TGeometryTest } @Test - public void testWhenInvalidLinearRingIsCreatedV2() + public void script09() { ValueBuilder<TLinearRing> builder = module.newValueBuilder(TLinearRing.class); @@ -206,7 +224,7 @@ public class TGeometryTest @Test - public void testWhenPolygonIsCreated() + public void script10() { ValueBuilder<TPolygon> builder = module.newValueBuilder(TPolygon.class); /** @@ -225,7 +243,7 @@ public class TGeometryTest @Test - public void testWhenCreatedTGeomLineStringNotNull() + public void script11() { ValueBuilder<TLineString> builder = module.newValueBuilder(TLineString.class); assertNotNull( @@ -249,7 +267,7 @@ public class TGeometryTest } @Test - public void testWhenCreatedLinearRingNotNull() + public void script12() { ValueBuilder<TLinearRing> builder = module.newValueBuilder(TLinearRing.class); assertNotNull( @@ -273,7 +291,7 @@ public class TGeometryTest } @Test - public void testWhenCreatedTGeomPolygonWithNoHolesNotNull() + public void script13() { ValueBuilder<TPolygon> builder = module.newValueBuilder(TPolygon.class); assertNotNull( @@ -322,24 +340,20 @@ public class TGeometryTest } @Test - public void testWhenCreatedTGeomPolygonWithWithHolesNotNull() + public void script14() { - // JJ TODO - add test polygon and holes + // JJ TODO - add test polygon with holes } @Test - public void testWhenCreatedTCircleThenPolygonize() + public void script15() { ValueBuilder<TCircle> builder = module.newValueBuilder(TCircle.class); - // 48.13905780942574).x(11.57958984375 - TCircle tCircle = builder.prototype().of(48.13905780942574, 11.57958984375, 100); TPolygon tPolygon = tCircle.polygonize(360); assertTrue(tPolygon.shell().get().isValid()); - assertTrue(tPolygon.shell().get().getNumPoints() == 360 + 1); - - System.out.println(tPolygon); + assertTrue(tPolygon.shell().get().getNumPoints() == (360 + 1) ); } http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/core/testsupport/src/main/java/org/qi4j/test/indexing/AbstractAnyQueryTest.java ---------------------------------------------------------------------- diff --git a/core/testsupport/src/main/java/org/qi4j/test/indexing/AbstractAnyQueryTest.java b/core/testsupport/src/main/java/org/qi4j/test/indexing/AbstractAnyQueryTest.java index 3a2f2bf..1c5ba2e 100644 --- a/core/testsupport/src/main/java/org/qi4j/test/indexing/AbstractAnyQueryTest.java +++ b/core/testsupport/src/main/java/org/qi4j/test/indexing/AbstractAnyQueryTest.java @@ -87,7 +87,7 @@ public class AbstractAnyQueryTest throws Exception { super.setUp(); - // TestData.populate( module ); + TestData.populate( module ); this.unitOfWork = this.module.newUnitOfWork(); }
