http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialBench.java ---------------------------------------------------------------------- diff --git a/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialBench.java b/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialBench.java index c45fb2a..8a4a0fd 100644 --- a/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialBench.java +++ b/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialBench.java @@ -11,8 +11,10 @@ import org.qi4j.api.query.Query; import org.qi4j.api.unitofwork.UnitOfWork; import org.qi4j.bootstrap.AssemblyException; import org.qi4j.bootstrap.ModuleAssembly; +import org.qi4j.entitystore.riak.RiakHttpMapEntityStoreAssembler; import org.qi4j.entitystore.sql.assembly.DerbySQLEntityStoreAssembler; import org.qi4j.index.elasticsearch.ElasticSearchConfiguration; +import org.qi4j.index.elasticsearch.assembly.ESClusterIndexQueryAssembler; import org.qi4j.index.elasticsearch.assembly.ESFilesystemIndexQueryAssembler; import org.qi4j.index.elasticsearch.extension.spatial.utils.RandomPoint; import org.qi4j.index.elasticsearch.extensions.spatial.configuration.SpatialConfiguration; @@ -47,50 +49,6 @@ public class ElasticSearchSpatialBench assumeNoIbmJdk(); } - protected boolean isExpressionSupported(Query<?> expression) - { - return true; - } - -/** - protected boolean isExpressionSupported(Query<?> expression) - { - QueryImpl queryImpl = (QueryImpl)expression; - System.out.println("### " + expression.getClass()); - - System.out.println(queryImpl.resultType()); - - System.out.println("getWhereClause " + queryImpl.getWhereClause().getClass().getSimpleName()); - - System.out.println(((SpatialPredicatesSpecification)queryImpl.getWhereClause()).value()); - - boolean hasOrderBySegments = false; - if (queryImpl.getOrderBySegments() != null && queryImpl.getOrderBySegments().iterator().hasNext()) - { - hasOrderBySegments = true; - } - // public static boolean isSupported(Class expression, Class<? extends TGeometry> geometryOfProperty,Class<? extends TGeometry> geometryOfFilter, Boolean orderBy, INDEXING_METHOD Type ) - - Class geometryOfProperty = InternalUtils.classOfPropertyType(((SpatialPredicatesSpecification)queryImpl.getWhereClause()).property()); - TGeometry geometryOfFilter = ((SpatialPredicatesSpecification)queryImpl.getWhereClause()).value(); - - // System.out.println("Operator " + ((SpatialPredicatesSpecification)queryImpl.getWhereClause()).operator().getClass()); - - System.out.println("geometryOfProperty " + geometryOfProperty); - System.out.println("geometryOfFilter " + InternalUtils.classOfGeometry(geometryOfFilter)); - - System.out.println("Exression " + expression.getClass()); - - return SpatialFunctionsSupportMatrix.isSupported - ( - queryImpl.getWhereClause().getClass(), - geometryOfProperty, - InternalUtils.classOfGeometry(geometryOfFilter), - hasOrderBySegments, - SpatialFunctionsSupportMatrix.INDEX_MAPPING_TPOINT_METHOD.TPOINT_AS_GEOPOINT - ); - } - */ @Override public void assemble( ModuleAssembly module ) @@ -104,69 +62,44 @@ public class ElasticSearchSpatialBench // Config module - ModuleAssembly configIndex = module.layer().module( "configIndex" ); - new EntityTestAssembler().assemble( configIndex ); + ModuleAssembly config = module.layer().module( "config" ); + new EntityTestAssembler().assemble( config ); - configIndex.values(SpatialConfiguration.Configuration.class, + config.values(SpatialConfiguration.Configuration.class, SpatialConfiguration.FinderConfiguration.class, SpatialConfiguration.IndexerConfiguration.class, SpatialConfiguration.IndexingMethod.class, SpatialConfiguration.ProjectionSupport.class). visibleIn(Visibility.application); + // Index/Query - new ESFilesystemIndexQueryAssembler(). - withConfig(configIndex,Visibility.layer ). - identifiedBy("ElasticSearchConfigurationVariant2"). + new ESClusterIndexQueryAssembler(). + withConfig(config, Visibility.layer). + identifiedBy("ElasticSearchGeoShapeIndexing"). assemble(module); - - ElasticSearchConfiguration esConfig = configIndex.forMixin( ElasticSearchConfiguration.class ).declareDefaults(); - esConfig.indexNonAggregatedAssociations().set( Boolean.TRUE ); - esConfig.indexPointMappingMethod().set(ElasticSearchConfiguration.INDEX_MAPPING_POINT_METHOD.GEO_POINT); - + ElasticSearchConfiguration esConfig = config.forMixin(ElasticSearchConfiguration.class).declareDefaults(); + esConfig.indexNonAggregatedAssociations().set(Boolean.TRUE); // FileConfig FileConfigurationOverride override = new FileConfigurationOverride(). - withData( new File( DATA_DIR, "qi4j-data" ) ). - withLog( new File( DATA_DIR, "qi4j-logs" ) ). - withTemporary( new File( DATA_DIR, "qi4j-temp" ) ); - module.services( FileConfigurationService.class ). - setMetaInfo( override ); + withData(new File(DATA_DIR, "qi4j-data")). + withLog(new File(DATA_DIR, "qi4j-logs")). + withTemporary(new File(DATA_DIR, "qi4j-temp")); + module.services(FileConfigurationService.class). + setMetaInfo(override); + // In-Memory Entity Store + // new EntityTestAssembler().assemble( module ); - configIndex.services(FileConfigurationService.class) - // .identifiedBy("ElasticSearchConfigurationVariant1") - .setMetaInfo(override) - .visibleIn(Visibility.application); - // clear index mapping caches during junit testcases - // SpatialIndexMapper.IndexMappingCache.clear(); - - ModuleAssembly configStore = module.layer().module( "configStore" ); - new EntityTestAssembler().assemble( configStore ); + /** RIAK */ + ModuleAssembly configRiak = module.layer().module( "configRiak" ); + new EntityTestAssembler().assemble( configRiak ); new OrgJsonValueSerializationAssembler().assemble( module ); - // START SNIPPET: assembly - // DataSourceService - new DBCPDataSourceServiceAssembler(). - identifiedBy( "derby-datasource-service" ). - visibleIn( Visibility.module ). - withConfig( configStore, Visibility.layer ). - assemble( module ); - - // DataSource - new DataSourceAssembler(). - withDataSourceServiceIdentity( "derby-datasource-service" ). - identifiedBy( "derby-datasource" ). - visibleIn( Visibility.module ). - withCircuitBreaker(). - assemble( module ); - - // SQL EntityStore - new DerbySQLEntityStoreAssembler(). - visibleIn( Visibility.application ). - withConfig( configStore, Visibility.layer ). - assemble( module ); + new RiakHttpMapEntityStoreAssembler().withConfig( configRiak, Visibility.layer ).assemble( module ); + /** +++ */ } @Test @@ -217,12 +150,12 @@ public class ElasticSearchSpatialBench UnitOfWork unitOfWork = module.newUnitOfWork(); - for (int i = 0; i < 5000; i++) { + for (int i = 0; i < 10000; i++) { double[] xy = nextSpherePt2D(); //System.out.println("Degrees " + DistanceUtils.toDegrees(xy[0]) + "," + DistanceUtils.toDegrees(xy[1])); TPoint point = TPoint(module).lat(DistanceUtils.toDegrees(xy[0])).lon(DistanceUtils.toDegrees(xy[1])).geometry(); - EntityBuilder<SpatialRegressionEntity> pointBuilder = unitOfWork.newEntityBuilder(SpatialRegressionEntity.class); + EntityBuilder<SpatialAEntity> pointBuilder = unitOfWork.newEntityBuilder(SpatialAEntity.class); pointBuilder.instance().point().set(point); pointBuilder.newInstance(); } @@ -241,7 +174,6 @@ public class ElasticSearchSpatialBench public double[] nextSpherePt2D() { - // return new RandomPoint(seed++).nextSpherePt(2); return randomPoint.nextSpherePt(2); } }
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialExtensionClusterQueryTest.java ---------------------------------------------------------------------- diff --git a/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialExtensionClusterQueryTest.java b/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialExtensionClusterQueryTest.java deleted file mode 100644 index 33474a5..0000000 --- a/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialExtensionClusterQueryTest.java +++ /dev/null @@ -1,640 +0,0 @@ -package org.qi4j.index.elasticsearch.extension.spatial; - -import org.junit.BeforeClass; -import org.junit.Rule; -import org.junit.Test; -import org.qi4j.api.common.Visibility; -import org.qi4j.api.entity.EntityBuilder; -import org.qi4j.api.geometry.*; -import org.qi4j.api.geometry.internal.TGeometry; -import org.qi4j.api.geometry.internal.TGeometryRoot; -import org.qi4j.api.query.Query; -import org.qi4j.api.query.QueryBuilder; -import org.qi4j.api.query.QueryExpressions; -import org.qi4j.api.query.grammar.OrderBy; -import org.qi4j.api.unitofwork.UnitOfWork; -import org.qi4j.bootstrap.AssemblyException; -import org.qi4j.bootstrap.ModuleAssembly; -import org.qi4j.index.elasticsearch.ElasticSearchConfiguration; -import org.qi4j.index.elasticsearch.assembly.ESClusterIndexQueryAssembler; -import org.qi4j.index.elasticsearch.extension.spatial.model.VerifyStatialTypes; -import org.qi4j.index.elasticsearch.extension.spatial.model.entity.SpatialEntity; -import org.qi4j.library.fileconfig.FileConfigurationOverride; -import org.qi4j.library.fileconfig.FileConfigurationService; -import org.qi4j.spi.query.EntityFinderException; -import org.qi4j.test.EntityTestAssembler; -import org.qi4j.test.indexing.AbstractSpatialQueryTest; -import org.qi4j.test.indexing.model.Domain; -import org.qi4j.test.indexing.model.Nameable; -import org.qi4j.test.util.DelTreeAfter; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.assertFalse; - -import java.io.File; - -import static org.qi4j.api.geometry.TGeometryFactory.*; -import static org.qi4j.api.query.QueryExpressions.ge; -import static org.qi4j.api.query.QueryExpressions.gt; -import static org.qi4j.api.query.QueryExpressions.lt; -import static org.qi4j.api.query.QueryExpressions.templateFor; -import static org.qi4j.api.query.grammar.extensions.spatial.SpatialQueryExpressions.*; -import static org.qi4j.test.indexing.NameableAssert.verifyUnorderedResults; -import static org.qi4j.test.util.Assume.assumeNoIbmJdk; - -/** - * Created by jakes on 2/8/14. - */ -public class ElasticSearchSpatialExtensionClusterQueryTest - extends AbstractSpatialQueryTest { - private static final File DATA_DIR = new File("build/tmp/es-money-query-test"); - @Rule - public final DelTreeAfter delTreeAfter = new DelTreeAfter(DATA_DIR); - - @BeforeClass - public static void beforeClass_IBMJDK() { - assumeNoIbmJdk(); - } - - // Types definition of later comparison - private TPoint _tPoint; - private TMultiPoint _tMultiPoint; - private TLineString _tLineString; - private TPolygon _tPolygon; - - - @Override - public void assemble(ModuleAssembly module) - throws AssemblyException { - super.assemble(module); - - module.entities(SpatialEntity.class); - - // Config module - ModuleAssembly config = module.layer().module("config"); - new EntityTestAssembler().assemble(config); - - // Index/Query - new ESClusterIndexQueryAssembler(). - withConfig(config, Visibility.layer). - assemble(module); - ElasticSearchConfiguration esConfig = config.forMixin(ElasticSearchConfiguration.class).declareDefaults(); - esConfig.indexNonAggregatedAssociations().set(Boolean.TRUE); - - // FileConfig - FileConfigurationOverride override = new FileConfigurationOverride(). - withData(new File(DATA_DIR, "qi4j-data")). - withLog(new File(DATA_DIR, "qi4j-logs")). - withTemporary(new File(DATA_DIR, "qi4j-temp")); - module.services(FileConfigurationService.class). - setMetaInfo(override); - } - - // @Override - public void setUp() - throws Exception { - super.setUp(); - - _tPoint = TPoint(module).x(11.57958984375).y(48.13905780942574).geometry(); - - _tMultiPoint = TMultiPoint(module).points(new double[][] - { - {11.57958984375, 48.13905780942574}, - {11.599502563476562, 48.14913756559802}, - }).geometry(); - _tLineString = TlineString(module).points(new double[][] - { - {11.550750732421875, 48.109035906197036}, - {11.552810668945312, 48.16608541901253}, - }).geometry(); - - _tPolygon = TPolygon(module) - - .shell - ( - TLinearRing(module).ring(new double[][] - { - {11.475906372070312, 48.14478518644042}, - {11.572723388671875, 48.18760570101003}, - {11.692886352539062, 48.140432438188135}, - {11.679153442382812, 48.08243697630599}, - {11.581306457519531, 48.07211472138644}, - {11.522941589355469, 48.10124109364004}, - {11.470069885253906, 48.10949438777014}, - {11.475906372070312, 48.14478518644042}, - - }).geometry() - ) - - .withHoles - ( - TLinearRing(module).ring(new double[][] - { - {11.53839111328125, 48.13837048124154}, - {11.614952087402344, 48.15028286718964}, - {11.640357971191406, 48.10513864768105}, - {11.558303833007812, 48.103304541415994}, - {11.53839111328125, 48.13837048124154} - - }).geometry() - ) - .geometry(); - - - try (UnitOfWork unitOfWork = module.newUnitOfWork()) { - - - // TPoint - { - EntityBuilder<SpatialEntity> pointBuilder = unitOfWork.newEntityBuilder(SpatialEntity.class, "Point"); - pointBuilder.instance().point().set(_tPoint); - pointBuilder.newInstance(); - } - - // TMultiPoint - { - EntityBuilder<SpatialEntity> mPointBuilder = unitOfWork.newEntityBuilder(SpatialEntity.class, "MultiPoint"); - mPointBuilder.instance().mPoint().set(_tMultiPoint); - mPointBuilder.newInstance(); - } - - // TLineString - { - EntityBuilder<SpatialEntity> tlineStringBuilder = unitOfWork.newEntityBuilder(SpatialEntity.class, "LineString"); - tlineStringBuilder.instance().line().set(_tLineString); - tlineStringBuilder.newInstance(); - } - - // TPolygon - { - EntityBuilder<SpatialEntity> tPolygonBuilder = unitOfWork.newEntityBuilder(SpatialEntity.class, "Polygon"); - tPolygonBuilder.instance().polygon().set(_tPolygon); - tPolygonBuilder.newInstance(); - } - - unitOfWork.complete(); - - } catch (Exception _ex) { - _ex.printStackTrace(); - } - - } - - @Test - public void nothing() - { - - } - - - @Test - public void WhenQueryForAPointThenCompareResults() - { - QueryBuilder<VerifyStatialTypes> qb = this.module.newQueryBuilder(VerifyStatialTypes.class); - - Query<VerifyStatialTypes> query = unitOfWork.newQuery( - qb - .where( - ST_Within - ( - templateFor(VerifyStatialTypes.class).point(), - TPoint(module).y(48.13905780941111).x(11.57958981111).geometry(), - 999, - TUnit.METER - ) - )); - - - query.find(); - assertEquals(1, query.count()); - TPoint tPoint = query.iterator().next().point().get(); - assertTrue(tPoint.compareTo(_tPoint) == 0); - } - - - @Test - public void WhenQueryWithUnsupportedProjectionForAPointThenCompareResults() throws Exception { - QueryBuilder<VerifyStatialTypes> qb = this.module.newQueryBuilder(VerifyStatialTypes.class); - - Query<VerifyStatialTypes> query = unitOfWork.newQuery( - qb - .where( - ST_Within - ( - templateFor(VerifyStatialTypes.class).point(), - TPoint(module).x(1286436.5975464052).y(2389280.7514562616).geometry("EPSG:27572"), - 999, - TUnit.METER - ) - )); - - - query.find(); - assertEquals(query.count(), 1); - TPoint tPoint = query.iterator().next().point().get(); - assertTrue(tPoint.compareTo(_tPoint) == 0); - - // Transform(module).from(tPoint).to("EPSG:27572"); - - System.out.println(tPoint); - } - - @Test - public void WhenQueryForAPointThenOrderAndCompareResults() { - QueryBuilder<VerifyStatialTypes> qb = this.module.newQueryBuilder(VerifyStatialTypes.class); - - Query<VerifyStatialTypes> query = unitOfWork.newQuery( - qb - .where( - ST_Within - ( - templateFor(VerifyStatialTypes.class).point(), - TPoint(module).x(11.57958981111).y(48.13905780941111).geometry(), - 999, - TUnit.METER - ) - )) - - - .orderBy(templateFor(VerifyStatialTypes.class).point(), _tPoint, OrderBy.Order.ASCENDING); - - - query.find(); - assertEquals(query.count(), 1); - TPoint tPoint = query.iterator().next().point().get(); - assertTrue(tPoint.compareTo(_tPoint) == 0); - } - - - @Test - public void script02() - throws EntityFinderException - { - final QueryBuilder<Domain> qb = this.module.newQueryBuilder( Domain.class ); - final Nameable nameable = templateFor( Nameable.class ); - final Query<Domain> query = unitOfWork.newQuery( qb.where( eq( nameable.name(), "Gaming" ) ) ); - System.out.println( "*** script02: " + query ); - verifyUnorderedResults( query, "Gaming" ); - } - - - @Test - public void WhenST_DisjointForAPointThenOrderAndCompareResults() { - QueryBuilder<VerifyStatialTypes> qb = this.module.newQueryBuilder(VerifyStatialTypes.class); - - Query<VerifyStatialTypes> query = unitOfWork.newQuery( - qb - .where(// and( - ST_Disjoint - ( - templateFor(VerifyStatialTypes.class).point(), - TPoint(module).x(10.57958981111).y(47.13905780941111).geometry(), - 1, - TUnit.METER - ) - // eq( templateFor(VerifyStatialTypes.class).point().get(), "Gaming" ) - // ,QueryExpressions.eq(templateFor(VerifyStatialTypes.class).foo(), "foo") - // ) - )) - - - .orderBy(templateFor(VerifyStatialTypes.class).point(), _tPoint, OrderBy.Order.ASCENDING); - - - query.find(); - assertEquals(3, query.count()); - // TGeometry tGeometry = query.iterator().next().point().get(); - - VerifyStatialTypes result = query.iterator().next(); - -/** - if (tGeometry.getType() == TGeometry.TGEOMETRY_TYPE.POLYGON) - { - System.out.println("is polygon"); - } - */ - // assertTrue(tPoint.compareTo(_tPoint) == 0); - - } - - - @Test - public void WhenST_IntersectsForAPointThenOrderAndCompareResults() { - QueryBuilder<VerifyStatialTypes> qb = this.module.newQueryBuilder(VerifyStatialTypes.class); - - Query<VerifyStatialTypes> query = unitOfWork.newQuery( - qb - .where( - ST_Intersects - ( - templateFor(VerifyStatialTypes.class).point(), - TPoint(module).x(11.57958981111).y(48.13905780941111).geometry(), - 999, - TUnit.METER - ) - )) - - - .orderBy(templateFor(VerifyStatialTypes.class).point(), _tPoint, OrderBy.Order.ASCENDING); - - - query.find(); - assertEquals(3, query.count()); - // TGeometry tGeometry = query.iterator().next().point().get(); - - VerifyStatialTypes result = query.iterator().next(); - -/** - if (tGeometry.getType() == TGeometry.TGEOMETRY_TYPE.POLYGON) - { - System.out.println("is polygon"); - } - */ - // assertTrue(tPoint.compareTo(_tPoint) == 0); - - } - - @Test - public void WhenST_DisjointForAPointUsingPolygonAreaThenOrderAndCompareResults() { - QueryBuilder<VerifyStatialTypes> qb = this.module.newQueryBuilder(VerifyStatialTypes.class); - - Query<VerifyStatialTypes> query = unitOfWork.newQuery( - qb - .where( - ST_Disjoint - ( - templateFor(VerifyStatialTypes.class).point(), - TPolygon(module) - .shell - ( - new double[][] - { - {11.32965087890625, 48.122101028190805}, - {11.394195556640625, 48.28593438872724}, - {11.9366455078125, 48.232906106325146}, - {11.852874755859375, 47.95038564051011}, - {11.36810302734375, 47.94486657921015}, - {11.32965087890625, 48.122101028190805} - } - ).geometry() - ) - )) - - .orderBy(templateFor(VerifyStatialTypes.class).point(), _tPoint, OrderBy.Order.ASCENDING); - - - query.find(); - // assertEquals(query.count(), 1); - // TPoint tPoint = query.iterator().next().point().get(); - VerifyStatialTypes types = query.iterator().next(); - System.out.println("Result " + types.polygon().get()); - // assertTrue(tPoint.compareTo(_tPoint) == 0); - } - - - @Test - public void WhenQueryForAPointUsingPolygonAreaThenOrderAndCompareResults() { - QueryBuilder<VerifyStatialTypes> qb = this.module.newQueryBuilder(VerifyStatialTypes.class); - - Query<VerifyStatialTypes> query = unitOfWork.newQuery( - qb - .where( - ST_Within - ( - templateFor(VerifyStatialTypes.class).point(), - TPolygon(module) - .shell - ( - new double[][] - { - {11.32965087890625, 48.122101028190805}, - {11.394195556640625, 48.28593438872724}, - {11.9366455078125, 48.232906106325146}, - {11.852874755859375, 47.95038564051011}, - {11.36810302734375, 47.94486657921015}, - {11.32965087890625, 48.122101028190805} - } - ).geometry() - ) - )) - - .orderBy(templateFor(VerifyStatialTypes.class).point(), _tPoint, OrderBy.Order.ASCENDING); - - - query.find(); - assertEquals(query.count(), 1); - TPoint tPoint = query.iterator().next().point().get(); - assertTrue(tPoint.compareTo(_tPoint) == 0); - } - - @Test - public void WhenQueryForALineUsingPolygonAreaThenOrderAndCompareResults() { - QueryBuilder<VerifyStatialTypes> qb = this.module.newQueryBuilder(VerifyStatialTypes.class); - - Query<VerifyStatialTypes> query = unitOfWork.newQuery( - qb - .where( - ST_Within - ( - templateFor(VerifyStatialTypes.class).line(), - TPolygon(module) - .shell - ( - new double[][] - { - {11.32965087890625, 48.122101028190805}, - {11.394195556640625, 48.28593438872724}, - {11.9366455078125, 48.232906106325146}, - {11.852874755859375, 47.95038564051011}, - {11.36810302734375, 47.94486657921015}, - {11.32965087890625, 48.122101028190805} - } - ).geometry() - ) - )); - - // .orderBy(templateFor(VerifyStatialTypes.class).point(), _tPoint, OrderBy.Order.ASCENDING); - - - query.find(); - assertEquals(1, query.count()); - TLineString tLineString = query.iterator().next().line().get(); - System.out.println(tLineString); - // TPoint tPoint = query.iterator().next().point().get(); - // assertTrue(tPoint.compareTo(_tPoint) == 0); - } - - - @Test - public void WhenQueryForALineUsingPolygonAreaThenOrderAndCompareResultsV2() { - QueryBuilder<VerifyStatialTypes> qb = this.module.newQueryBuilder(VerifyStatialTypes.class); - - Query<VerifyStatialTypes> query = unitOfWork.newQuery( - qb - .where( - ST_Within - ( - templateFor(VerifyStatialTypes.class).point(), - TPolygon(module) - .shell - ( - new double[][] - { - {11.32965087890625, 48.122101028190805}, - {11.394195556640625, 48.28593438872724}, - {11.9366455078125, 48.232906106325146}, - {11.852874755859375, 47.95038564051011}, - {11.36810302734375, 47.94486657921015}, - {11.32965087890625, 48.122101028190805} - } - ).geometry() - ) - )).orderBy(templateFor(VerifyStatialTypes.class).point(), _tPoint, OrderBy.Order.ASCENDING); - - - query.find(); - assertEquals(1, query.count()); - TLineString tLineString = query.iterator().next().line().get(); - System.out.println(tLineString); - // TPoint tPoint = query.iterator().next().point().get(); - // assertTrue(tPoint.compareTo(_tPoint) == 0); - } - - - @Test - public void WhenST_Intersects_ForALineUsingPolygonAreaThenOrderAndCompareResults() { - QueryBuilder<VerifyStatialTypes> qb = this.module.newQueryBuilder(VerifyStatialTypes.class); - - Query<VerifyStatialTypes> query = unitOfWork.newQuery( - qb - .where( - ST_Intersects - ( - templateFor(VerifyStatialTypes.class).point(), - TPolygon(module) - .shell - ( - new double[][] - { - {11.32965087890625, 48.122101028190805}, - {11.394195556640625, 48.28593438872724}, - {11.9366455078125, 48.232906106325146}, - {11.852874755859375, 47.95038564051011}, - {11.36810302734375, 47.94486657921015}, - {11.32965087890625, 48.122101028190805} - } - ).geometry() - ) - )); - - // .orderBy(templateFor(VerifyStatialTypes.class).point(), _tPoint, OrderBy.Order.ASCENDING); - - - query.find(); - assertEquals(1, query.count()); - TLineString tLineString = query.iterator().next().line().get(); - System.out.println(tLineString); - // TPoint tPoint = query.iterator().next().point().get(); - // assertTrue(tPoint.compareTo(_tPoint) == 0); - } - - - @Test - public void When_QueryForAWKTPointThenCompareResults() - { - QueryBuilder<VerifyStatialTypes> qb = this.module.newQueryBuilder(VerifyStatialTypes.class); - - Query<VerifyStatialTypes> query = unitOfWork.newQuery( - qb - .where( - ST_Within - ( - templateFor(VerifyStatialTypes.class).point(), - ST_GeometryFromText("POINT(11.57958981111 48.13905780941111 )"), - 999, - TUnit.METER - ) - )) - .orderBy(templateFor(VerifyStatialTypes.class).point(), _tPoint, OrderBy.Order.ASCENDING); - - query.find(); - assertEquals(query.count(), 1); - TPoint tPoint = query.iterator().next().point().get(); - assertTrue(tPoint.compareTo(_tPoint) == 0); - - } - - /** - @Test - public void WhenQueryForAMultiPointThenCompareResults() { - - QueryBuilder<VerifyStatialTypes> qb = this.module.newQueryBuilder(VerifyStatialTypes.class); - - Query<VerifyStatialTypes> query = unitOfWork.newQuery( - qb - .where( - ST_Within - ( - templateFor(VerifyStatialTypes.class).mPoint(), - TPOINT(module).x(11.57958981111).y(48.13905780941111).geometry() - ) - )); - query.find(); - assertEquals(query.count(), 1); - TPoint tPoint = query.iterator().next().point().get(); - assertTrue(tPoint.compareTo(_tPoint) == 0); - } -*/ - - @Test - public void WhenQueryForAPolygonThenCompareResults() { - QueryBuilder<VerifyStatialTypes> qb = this.module.newQueryBuilder(VerifyStatialTypes.class); - - Query<VerifyStatialTypes> query = unitOfWork.newQuery( - qb - .where( - ST_Within - ( - templateFor(VerifyStatialTypes.class).polygon(), - - TPolygon(module) - .shell - ( - new double[][] - { - {11.32965087890625, 48.122101028190805}, - {11.394195556640625, 48.28593438872724}, - {11.9366455078125, 48.232906106325146}, - {11.852874755859375, 47.95038564051011}, - {11.36810302734375, 47.94486657921015}, - {11.32965087890625, 48.122101028190805} - } - ).geometry() - ) - )); - - - query.find(); - - assertEquals(query.count(), 1); - TPolygon tPolygon = query.iterator().next().polygon().get(); - assertTrue(tPolygon.holes().get().size() == 1); - assertTrue(tPolygon.shell().get().compareTo(_tPolygon.shell().get()) == 0); - assertFalse(tPolygon.holes().get().get(0).compareTo(_tPolygon.shell().get()) == 0); - assertTrue(tPolygon.holes().get().get(0).compareTo(_tPolygon.holes().get().get(0)) == 0); - } - - - // @Test - public void fooPerf() { - long start = System.currentTimeMillis(); - for (int i = 0; i < 1000; i++) { - WhenQueryForAPolygonThenCompareResults(); - } - long end = System.currentTimeMillis(); - - System.out.println("Duration " + (end - start) + " ms"); - } - -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialQueryTestUsingGeoPointIndexing.java ---------------------------------------------------------------------- diff --git a/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialQueryTestUsingGeoPointIndexing.java b/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialQueryTestUsingGeoPointIndexing.java new file mode 100644 index 0000000..6200b68 --- /dev/null +++ b/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialQueryTestUsingGeoPointIndexing.java @@ -0,0 +1,159 @@ +/* + * 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.index.elasticsearch.extension.spatial; + +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Rule; +import org.junit.Test; +import org.qi4j.api.common.Visibility; +import org.qi4j.api.query.Query; +import org.qi4j.api.query.QueryExecutionException; +import org.qi4j.bootstrap.AssemblyException; +import org.qi4j.bootstrap.ModuleAssembly; +import org.qi4j.index.elasticsearch.ElasticSearchConfiguration; +import org.qi4j.index.elasticsearch.assembly.ESFilesystemIndexQueryAssembler; +import org.qi4j.index.elasticsearch.extensions.spatial.configuration.SpatialConfiguration; +import org.qi4j.library.fileconfig.FileConfigurationOverride; +import org.qi4j.library.fileconfig.FileConfigurationService; +import org.qi4j.library.spatial.v2.assembly.TGeometryAssembler; +import org.qi4j.spi.query.EntityFinderException; +import org.qi4j.test.EntityTestAssembler; +import org.qi4j.test.indexing.AbstractSpatialRegressionTest; +import org.qi4j.test.util.DelTreeAfter; + +import java.io.File; + +import static org.qi4j.test.util.Assume.*; + + +public class ElasticSearchSpatialQueryTestUsingGeoPointIndexing + extends AbstractSpatialRegressionTest +{ + private static final File DATA_DIR = new File( "build/tmp/es-spatial-query-test" ); + @Rule + public final DelTreeAfter delTreeAfter = new DelTreeAfter( DATA_DIR ); + + @BeforeClass + public static void beforeClass_IBMJDK() + { + assumeNoIbmJdk(); + } + + + @Override + public void assemble( ModuleAssembly module ) + throws AssemblyException + { + super.assemble( module ); + + // Geometry support + new TGeometryAssembler().assemble(module); + + // Config module + ModuleAssembly config = module.layer().module( "config" ); + new EntityTestAssembler().assemble( config ); + + config.values(SpatialConfiguration.Configuration.class, + SpatialConfiguration.FinderConfiguration.class, + SpatialConfiguration.IndexerConfiguration.class, + SpatialConfiguration.IndexingMethod.class, + SpatialConfiguration.ProjectionSupport.class). + visibleIn(Visibility.application); + + // Index/Query + new ESFilesystemIndexQueryAssembler(). + withConfig(config,Visibility.layer ). + identifiedBy("ElasticSearchGeoPointIndexing"). + assemble(module); + + ElasticSearchConfiguration esConfig = config.forMixin( ElasticSearchConfiguration.class ).declareDefaults(); + esConfig.indexNonAggregatedAssociations().set( Boolean.TRUE ); + + + // FileConfig + FileConfigurationOverride override = new FileConfigurationOverride(). + withData( new File( DATA_DIR, "qi4j-data" ) ). + withLog( new File( DATA_DIR, "qi4j-logs" ) ). + withTemporary( new File( DATA_DIR, "qi4j-temp" ) ); + module.services( FileConfigurationService.class ). + setMetaInfo( override ); + + + config.services(FileConfigurationService.class) + .setMetaInfo(override) + .visibleIn(Visibility.application); + } + + + + @Test (expected=QueryExecutionException.class) + @Override + public void script02a() + throws EntityFinderException + { + super.script02a(); + } + + @Test (expected=QueryExecutionException.class) + @Override + public void script02b() + throws EntityFinderException + { + super.script02b(); + } + + @Test (expected=QueryExecutionException.class) + @Override + public void script02c() + throws EntityFinderException + { + super.script02c(); + } + + @Test (expected=QueryExecutionException.class) + @Override + public void script02d() + throws EntityFinderException + { + super.script02d(); + } + + @Test (expected=QueryExecutionException.class) + @Override + public void script02e() + throws EntityFinderException + { + super.script02e(); + } + + @Test (expected=QueryExecutionException.class) + @Override + public void script02f() + throws EntityFinderException + { + super.script02f(); + } + + @Test (expected=QueryExecutionException.class) + @Override + public void script03a() + throws EntityFinderException + { + super.script03a(); + } + + +} http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialQueryTestUsingGeoShapeIndexing.java ---------------------------------------------------------------------- diff --git a/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialQueryTestUsingGeoShapeIndexing.java b/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialQueryTestUsingGeoShapeIndexing.java new file mode 100644 index 0000000..6f227f1 --- /dev/null +++ b/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialQueryTestUsingGeoShapeIndexing.java @@ -0,0 +1,140 @@ +/* + * 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.index.elasticsearch.extension.spatial; + +import org.junit.BeforeClass; +import org.junit.Rule; +import org.junit.Test; +import org.qi4j.api.common.Visibility; +import org.qi4j.api.query.Query; +import org.qi4j.api.query.QueryExecutionException; +import org.qi4j.bootstrap.AssemblyException; +import org.qi4j.bootstrap.ModuleAssembly; +import org.qi4j.index.elasticsearch.ElasticSearchConfiguration; +import org.qi4j.index.elasticsearch.assembly.ESFilesystemIndexQueryAssembler; +import org.qi4j.index.elasticsearch.extensions.spatial.configuration.SpatialConfiguration; +import org.qi4j.library.fileconfig.FileConfigurationOverride; +import org.qi4j.library.fileconfig.FileConfigurationService; +import org.qi4j.library.spatial.v2.assembly.TGeometryAssembler; +import org.qi4j.spi.query.EntityFinderException; +import org.qi4j.test.EntityTestAssembler; +import org.qi4j.test.indexing.AbstractSpatialRegressionTest; +import org.qi4j.test.util.DelTreeAfter; + +import java.io.File; + +import static org.qi4j.test.util.Assume.*; + + +public class ElasticSearchSpatialQueryTestUsingGeoShapeIndexing + extends AbstractSpatialRegressionTest +{ + private static final File DATA_DIR = new File( "build/tmp/es-spatial-query-test" ); + @Rule + public final DelTreeAfter delTreeAfter = new DelTreeAfter( DATA_DIR ); + + @BeforeClass + public static void beforeClass_IBMJDK() + { + assumeNoIbmJdk(); + } + + + @Override + public void assemble( ModuleAssembly module ) + throws AssemblyException + { + super.assemble( module ); + + // Geometry support + new TGeometryAssembler().assemble(module); + + // Config module + ModuleAssembly config = module.layer().module( "config" ); + new EntityTestAssembler().assemble( config ); + + config.values(SpatialConfiguration.Configuration.class, + SpatialConfiguration.FinderConfiguration.class, + SpatialConfiguration.IndexerConfiguration.class, + SpatialConfiguration.IndexingMethod.class, + SpatialConfiguration.ProjectionSupport.class). + visibleIn(Visibility.application); + + // Index/Query + new ESFilesystemIndexQueryAssembler(). + withConfig(config,Visibility.layer ). + identifiedBy("ElasticSearchGeoShapeIndexing"). + assemble(module); + + ElasticSearchConfiguration esConfig = config.forMixin( ElasticSearchConfiguration.class ).declareDefaults(); + esConfig.indexNonAggregatedAssociations().set( Boolean.TRUE ); + + + // FileConfig + FileConfigurationOverride override = new FileConfigurationOverride(). + withData( new File( DATA_DIR, "qi4j-data" ) ). + withLog( new File( DATA_DIR, "qi4j-logs" ) ). + withTemporary( new File( DATA_DIR, "qi4j-temp" ) ); + module.services( FileConfigurationService.class ). + setMetaInfo( override ); + + + config.services(FileConfigurationService.class) + .setMetaInfo(override) + .visibleIn(Visibility.application); + } + + + @Test(expected=QueryExecutionException.class) + @Override + public void script01c() + throws EntityFinderException + { + super.script01c(); // <- no orderBy() support for GeoShapes + } + + @Test(expected=QueryExecutionException.class) + @Override + public void script01d() + throws EntityFinderException + { + super.script01d(); // <- no orderBy() support for GeoShapes + } + + @Test(expected=QueryExecutionException.class) + @Override + public void script01e() + throws EntityFinderException + { + super.script01e(); // <- no orderBy() support for GeoShapes + } + + @Test(expected=QueryExecutionException.class) + @Override + public void script01f() + throws EntityFinderException + { + super.script01f(); // <- no orderBy() support for GeoShapes + } + + @Test(expected=QueryExecutionException.class) + @Override + public void script03c() + throws EntityFinderException + { + super.script03c(); // <- no orderBy() support for GeoShapes + } + +} http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialQueryTestUsingUsingDefaults.java ---------------------------------------------------------------------- diff --git a/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialQueryTestUsingUsingDefaults.java b/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialQueryTestUsingUsingDefaults.java new file mode 100644 index 0000000..f5a8337 --- /dev/null +++ b/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialQueryTestUsingUsingDefaults.java @@ -0,0 +1,153 @@ +/* + * 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.index.elasticsearch.extension.spatial; + +import org.junit.BeforeClass; +import org.junit.Rule; +import org.junit.Test; +import org.qi4j.api.common.Visibility; +import org.qi4j.api.query.QueryExecutionException; +import org.qi4j.bootstrap.AssemblyException; +import org.qi4j.bootstrap.ModuleAssembly; +import org.qi4j.index.elasticsearch.ElasticSearchConfiguration; +import org.qi4j.index.elasticsearch.assembly.ESFilesystemIndexQueryAssembler; +import org.qi4j.index.elasticsearch.extensions.spatial.configuration.SpatialConfiguration; +import org.qi4j.library.fileconfig.FileConfigurationOverride; +import org.qi4j.library.fileconfig.FileConfigurationService; +import org.qi4j.library.spatial.v2.assembly.TGeometryAssembler; +import org.qi4j.spi.query.EntityFinderException; +import org.qi4j.test.EntityTestAssembler; +import org.qi4j.test.indexing.AbstractSpatialRegressionTest; +import org.qi4j.test.util.DelTreeAfter; + +import java.io.File; + +import static org.qi4j.test.util.Assume.assumeNoIbmJdk; + +/** + * Created by jj on 21.12.14. + */ +public class ElasticSearchSpatialQueryTestUsingUsingDefaults + extends AbstractSpatialRegressionTest +{ + private static final File DATA_DIR = new File( "build/tmp/es-spatial-query-test" ); + @Rule + public final DelTreeAfter delTreeAfter = new DelTreeAfter( DATA_DIR ); + + @BeforeClass + public static void beforeClass_IBMJDK() + { + assumeNoIbmJdk(); + } + + + @Override + public void assemble( ModuleAssembly module ) + throws AssemblyException + { + super.assemble( module ); + + // Geometry support + new TGeometryAssembler().assemble(module); + + + + // Config module + ModuleAssembly config = module.layer().module( "config" ); + new EntityTestAssembler().assemble( config ); + + config.values(SpatialConfiguration.Configuration.class, + SpatialConfiguration.FinderConfiguration.class, + SpatialConfiguration.IndexerConfiguration.class, + SpatialConfiguration.IndexingMethod.class, + SpatialConfiguration.ProjectionSupport.class). + visibleIn(Visibility.application); + + // Index/Query + new ESFilesystemIndexQueryAssembler(). + withConfig(config,Visibility.layer ). + assemble(module); + + ElasticSearchConfiguration esConfig = config.forMixin( ElasticSearchConfiguration.class ).declareDefaults(); + esConfig.indexNonAggregatedAssociations().set( Boolean.TRUE ); + + + // FileConfig + FileConfigurationOverride override = new FileConfigurationOverride(). + withData( new File( DATA_DIR, "qi4j-data" ) ). + withLog( new File( DATA_DIR, "qi4j-logs" ) ). + withTemporary( new File( DATA_DIR, "qi4j-temp" ) ); + module.services( FileConfigurationService.class ). + setMetaInfo( override ); + + + config.services(FileConfigurationService.class) + .setMetaInfo(override) + .visibleIn(Visibility.application); + } + + + + @Test (expected=QueryExecutionException.class) + public void script02a() + throws EntityFinderException + { + super.script02a(); + } + + @Test (expected=QueryExecutionException.class) + public void script02b() + throws EntityFinderException + { + super.script02b(); + } + + @Test (expected=QueryExecutionException.class) + public void script02c() + throws EntityFinderException + { + super.script02c(); + } + + @Test (expected=QueryExecutionException.class) + public void script02d() + throws EntityFinderException + { + super.script02d(); + } + + @Test (expected=QueryExecutionException.class) + public void script02e() + throws EntityFinderException + { + super.script02e(); + } + + @Test (expected=QueryExecutionException.class) + public void script02f() + throws EntityFinderException + { + super.script02f(); + } + + @Test (expected=QueryExecutionException.class) + public void script03a() + throws EntityFinderException + { + super.script03a(); + } + + +} http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialRegressionQueryClusterTest.java ---------------------------------------------------------------------- diff --git a/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialRegressionQueryClusterTest.java b/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialRegressionQueryClusterTest.java index 0ad7c1c..d4ec9fe 100644 --- a/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialRegressionQueryClusterTest.java +++ b/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialRegressionQueryClusterTest.java @@ -72,7 +72,6 @@ public class ElasticSearchSpatialRegressionQueryClusterTest assemble(module); ElasticSearchConfiguration esConfig = config.forMixin(ElasticSearchConfiguration.class).declareDefaults(); esConfig.indexNonAggregatedAssociations().set(Boolean.TRUE); - esConfig.indexPointMappingMethod().set(ElasticSearchConfiguration.INDEX_MAPPING_POINT_METHOD.GEO_POINT); // FileConfig http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialRegressionQueryVariant1Test.java ---------------------------------------------------------------------- diff --git a/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialRegressionQueryVariant1Test.java b/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialRegressionQueryVariant1Test.java deleted file mode 100644 index 66cdc73..0000000 --- a/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialRegressionQueryVariant1Test.java +++ /dev/null @@ -1,131 +0,0 @@ -package org.qi4j.index.elasticsearch.extension.spatial; - -import org.junit.BeforeClass; -import org.junit.Rule; -import org.qi4j.api.common.Visibility; -import org.qi4j.api.query.Query; -import org.qi4j.bootstrap.AssemblyException; -import org.qi4j.bootstrap.ModuleAssembly; -import org.qi4j.index.elasticsearch.ElasticSearchConfiguration; -import org.qi4j.index.elasticsearch.assembly.ESFilesystemIndexQueryAssembler; -import org.qi4j.index.elasticsearch.extensions.spatial.configuration.SpatialConfiguration; -import org.qi4j.library.fileconfig.FileConfigurationOverride; -import org.qi4j.library.fileconfig.FileConfigurationService; -import org.qi4j.library.spatial.v2.assembly.TGeometryAssembler; -import org.qi4j.test.EntityTestAssembler; -import org.qi4j.test.indexing.AbstractSpatialRegressionTest; -import org.qi4j.test.util.DelTreeAfter; - -import java.io.File; - -import static org.qi4j.test.util.Assume.*; - -/** - * Created by jj on 21.12.14. - */ -public class ElasticSearchSpatialRegressionQueryVariant1Test - extends AbstractSpatialRegressionTest -{ - private static final File DATA_DIR = new File( "build/tmp/es-spatial-query-test" ); - @Rule - public final DelTreeAfter delTreeAfter = new DelTreeAfter( DATA_DIR ); - - @BeforeClass - public static void beforeClass_IBMJDK() - { - assumeNoIbmJdk(); - } - - protected boolean isExpressionSupported(Query<?> expression) - { - return true; - } - -/** - protected boolean isExpressionSupported(Query<?> expression) - { - QueryImpl queryImpl = (QueryImpl)expression; - System.out.println("### " + expression.getClass()); - - System.out.println(queryImpl.resultType()); - - System.out.println("getWhereClause " + queryImpl.getWhereClause().getClass().getSimpleName()); - - System.out.println(((SpatialPredicatesSpecification)queryImpl.getWhereClause()).value()); - - boolean hasOrderBySegments = false; - if (queryImpl.getOrderBySegments() != null && queryImpl.getOrderBySegments().iterator().hasNext()) - { - hasOrderBySegments = true; - } - // public static boolean isSupported(Class expression, Class<? extends TGeometry> geometryOfProperty,Class<? extends TGeometry> geometryOfFilter, Boolean orderBy, INDEXING_METHOD Type ) - - Class geometryOfProperty = InternalUtils.classOfPropertyType(((SpatialPredicatesSpecification)queryImpl.getWhereClause()).property()); - TGeometry geometryOfFilter = ((SpatialPredicatesSpecification)queryImpl.getWhereClause()).value(); - - // System.out.println("Operator " + ((SpatialPredicatesSpecification)queryImpl.getWhereClause()).operator().getClass()); - - System.out.println("geometryOfProperty " + geometryOfProperty); - System.out.println("geometryOfFilter " + InternalUtils.classOfGeometry(geometryOfFilter)); - - System.out.println("Exression " + expression.getClass()); - - return SpatialFunctionsSupportMatrix.isSupported - ( - queryImpl.getWhereClause().getClass(), - geometryOfProperty, - InternalUtils.classOfGeometry(geometryOfFilter), - hasOrderBySegments, - SpatialFunctionsSupportMatrix.INDEX_MAPPING_TPOINT_METHOD.TPOINT_AS_GEOPOINT - ); - } - */ - - @Override - public void assemble( ModuleAssembly module ) - throws AssemblyException - { - super.assemble( module ); - - // Geometry support - new TGeometryAssembler().assemble(module); - - - - // Config module - ModuleAssembly config = module.layer().module( "config" ); - new EntityTestAssembler().assemble( config ); - - config.values(SpatialConfiguration.Configuration.class, - SpatialConfiguration.FinderConfiguration.class, - SpatialConfiguration.IndexerConfiguration.class, - SpatialConfiguration.IndexingMethod.class, - SpatialConfiguration.ProjectionSupport.class). - visibleIn(Visibility.application); - - // Index/Query - new ESFilesystemIndexQueryAssembler(). - withConfig(config,Visibility.layer ). - identifiedBy("ElasticSearchConfigurationVariant1"). - assemble(module); - - ElasticSearchConfiguration esConfig = config.forMixin( ElasticSearchConfiguration.class ).declareDefaults(); - esConfig.indexNonAggregatedAssociations().set( Boolean.TRUE ); - esConfig.indexPointMappingMethod().set(ElasticSearchConfiguration.INDEX_MAPPING_POINT_METHOD.GEO_POINT); - - - // FileConfig - FileConfigurationOverride override = new FileConfigurationOverride(). - withData( new File( DATA_DIR, "qi4j-data" ) ). - withLog( new File( DATA_DIR, "qi4j-logs" ) ). - withTemporary( new File( DATA_DIR, "qi4j-temp" ) ); - module.services( FileConfigurationService.class ). - setMetaInfo( override ); - - - config.services(FileConfigurationService.class) - // .identifiedBy("ElasticSearchConfigurationVariant1") - .setMetaInfo(override) - .visibleIn(Visibility.application); - } -} http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialRegressionQueryVariant2Test.java ---------------------------------------------------------------------- diff --git a/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialRegressionQueryVariant2Test.java b/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialRegressionQueryVariant2Test.java deleted file mode 100644 index 322defa..0000000 --- a/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialRegressionQueryVariant2Test.java +++ /dev/null @@ -1,131 +0,0 @@ -package org.qi4j.index.elasticsearch.extension.spatial; - -import org.junit.BeforeClass; -import org.junit.Rule; -import org.qi4j.api.common.Visibility; -import org.qi4j.api.query.Query; -import org.qi4j.bootstrap.AssemblyException; -import org.qi4j.bootstrap.ModuleAssembly; -import org.qi4j.index.elasticsearch.ElasticSearchConfiguration; -import org.qi4j.index.elasticsearch.assembly.ESFilesystemIndexQueryAssembler; -import org.qi4j.index.elasticsearch.extensions.spatial.configuration.SpatialConfiguration; -import org.qi4j.library.fileconfig.FileConfigurationOverride; -import org.qi4j.library.fileconfig.FileConfigurationService; -import org.qi4j.library.spatial.v2.assembly.TGeometryAssembler; -import org.qi4j.test.EntityTestAssembler; -import org.qi4j.test.indexing.AbstractSpatialRegressionTest; -import org.qi4j.test.util.DelTreeAfter; - -import java.io.File; - -import static org.qi4j.test.util.Assume.*; - -/** - * Created by jj on 21.12.14. - */ -public class ElasticSearchSpatialRegressionQueryVariant2Test - extends AbstractSpatialRegressionTest -{ - private static final File DATA_DIR = new File( "build/tmp/es-spatial-query-test" ); - @Rule - public final DelTreeAfter delTreeAfter = new DelTreeAfter( DATA_DIR ); - - @BeforeClass - public static void beforeClass_IBMJDK() - { - assumeNoIbmJdk(); - } - - protected boolean isExpressionSupported(Query<?> expression) - { - return true; - } - -/** - protected boolean isExpressionSupported(Query<?> expression) - { - QueryImpl queryImpl = (QueryImpl)expression; - System.out.println("### " + expression.getClass()); - - System.out.println(queryImpl.resultType()); - - System.out.println("getWhereClause " + queryImpl.getWhereClause().getClass().getSimpleName()); - - System.out.println(((SpatialPredicatesSpecification)queryImpl.getWhereClause()).value()); - - boolean hasOrderBySegments = false; - if (queryImpl.getOrderBySegments() != null && queryImpl.getOrderBySegments().iterator().hasNext()) - { - hasOrderBySegments = true; - } - // public static boolean isSupported(Class expression, Class<? extends TGeometry> geometryOfProperty,Class<? extends TGeometry> geometryOfFilter, Boolean orderBy, INDEXING_METHOD Type ) - - Class geometryOfProperty = InternalUtils.classOfPropertyType(((SpatialPredicatesSpecification)queryImpl.getWhereClause()).property()); - TGeometry geometryOfFilter = ((SpatialPredicatesSpecification)queryImpl.getWhereClause()).value(); - - // System.out.println("Operator " + ((SpatialPredicatesSpecification)queryImpl.getWhereClause()).operator().getClass()); - - System.out.println("geometryOfProperty " + geometryOfProperty); - System.out.println("geometryOfFilter " + InternalUtils.classOfGeometry(geometryOfFilter)); - - System.out.println("Exression " + expression.getClass()); - - return SpatialFunctionsSupportMatrix.isSupported - ( - queryImpl.getWhereClause().getClass(), - geometryOfProperty, - InternalUtils.classOfGeometry(geometryOfFilter), - hasOrderBySegments, - SpatialFunctionsSupportMatrix.INDEX_MAPPING_TPOINT_METHOD.TPOINT_AS_GEOPOINT - ); - } - */ - - @Override - public void assemble( ModuleAssembly module ) - throws AssemblyException - { - super.assemble( module ); - - // Geometry support - new TGeometryAssembler().assemble(module); - - - - // Config module - ModuleAssembly config = module.layer().module( "config" ); - new EntityTestAssembler().assemble( config ); - - config.values(SpatialConfiguration.Configuration.class, - SpatialConfiguration.FinderConfiguration.class, - SpatialConfiguration.IndexerConfiguration.class, - SpatialConfiguration.IndexingMethod.class, - SpatialConfiguration.ProjectionSupport.class). - visibleIn(Visibility.application); - - // Index/Query - new ESFilesystemIndexQueryAssembler(). - withConfig(config,Visibility.layer ). - identifiedBy("ElasticSearchConfigurationVariant2"). - assemble(module); - - ElasticSearchConfiguration esConfig = config.forMixin( ElasticSearchConfiguration.class ).declareDefaults(); - esConfig.indexNonAggregatedAssociations().set( Boolean.TRUE ); - esConfig.indexPointMappingMethod().set(ElasticSearchConfiguration.INDEX_MAPPING_POINT_METHOD.GEO_POINT); - - - // FileConfig - FileConfigurationOverride override = new FileConfigurationOverride(). - withData( new File( DATA_DIR, "qi4j-data" ) ). - withLog( new File( DATA_DIR, "qi4j-logs" ) ). - withTemporary( new File( DATA_DIR, "qi4j-temp" ) ); - module.services( FileConfigurationService.class ). - setMetaInfo( override ); - - - config.services(FileConfigurationService.class) - // .identifiedBy("ElasticSearchConfigurationVariant1") - .setMetaInfo(override) - .visibleIn(Visibility.application); - } -} http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant1.properties ---------------------------------------------------------------------- diff --git a/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant1.properties b/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant1.properties deleted file mode 100644 index 583a96f..0000000 --- a/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant1.properties +++ /dev/null @@ -1,28 +0,0 @@ -spatial = { \ - \ - Enabled : true, \ - \ - Indexer=\ - { \ - Method=\ - { \ - Type = "GEO_POINT", \ - Precision = 1m, \ - }, \ - Projection=\ - { \ - ConversionEnabled = true, \ - ConversionAccuracy = 1m, \ - }, \ - }, \ - \ - \ - Finder=\ - { \ - Projection=\ - { \ - ConversionEnabled = true, \ - ConversionAccuracy = 1m, \ - } \ - } \ - } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant2.properties ---------------------------------------------------------------------- diff --git a/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant2.properties b/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant2.properties deleted file mode 100644 index 3837000..0000000 --- a/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant2.properties +++ /dev/null @@ -1,28 +0,0 @@ -spatial = { \ - \ - Enabled : true, \ - \ - Indexer=\ - { \ - Method=\ - { \ - Type = "GEO_SHAPE", \ - Precision = 1m, \ - }, \ - Projection=\ - { \ - ConversionEnabled = true, \ - ConversionAccuracy = 1m, \ - }, \ - }, \ - \ - \ - Finder=\ - { \ - Projection=\ - { \ - ConversionEnabled = true, \ - ConversionAccuracy = 1m, \ - } \ - } \ - } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant2Backup.properties ---------------------------------------------------------------------- diff --git a/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant2Backup.properties b/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant2Backup.properties deleted file mode 100644 index 3837000..0000000 --- a/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant2Backup.properties +++ /dev/null @@ -1,28 +0,0 @@ -spatial = { \ - \ - Enabled : true, \ - \ - Indexer=\ - { \ - Method=\ - { \ - Type = "GEO_SHAPE", \ - Precision = 1m, \ - }, \ - Projection=\ - { \ - ConversionEnabled = true, \ - ConversionAccuracy = 1m, \ - }, \ - }, \ - \ - \ - Finder=\ - { \ - Projection=\ - { \ - ConversionEnabled = true, \ - ConversionAccuracy = 1m, \ - } \ - } \ - } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant2_Backup_.properties ---------------------------------------------------------------------- diff --git a/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant2_Backup_.properties b/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant2_Backup_.properties deleted file mode 100644 index 3837000..0000000 --- a/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant2_Backup_.properties +++ /dev/null @@ -1,28 +0,0 @@ -spatial = { \ - \ - Enabled : true, \ - \ - Indexer=\ - { \ - Method=\ - { \ - Type = "GEO_SHAPE", \ - Precision = 1m, \ - }, \ - Projection=\ - { \ - ConversionEnabled = true, \ - ConversionAccuracy = 1m, \ - }, \ - }, \ - \ - \ - Finder=\ - { \ - Projection=\ - { \ - ConversionEnabled = true, \ - ConversionAccuracy = 1m, \ - } \ - } \ - } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchGeoPointIndexing.properties ---------------------------------------------------------------------- diff --git a/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchGeoPointIndexing.properties b/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchGeoPointIndexing.properties new file mode 100644 index 0000000..67b6774 --- /dev/null +++ b/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchGeoPointIndexing.properties @@ -0,0 +1,28 @@ +spatial = { \ + \ + Enabled : true, \ + \ + Indexer=\ + { \ + Method=\ + { \ + Type = "GEO_POINT", \ + Precision = 1m, \ + }, \ + Projection=\ + { \ + ConversionEnabled = true, \ + ConversionAccuracy = 2m, \ + }, \ + }, \ + \ + \ + Finder=\ + { \ + Projection=\ + { \ + ConversionEnabled = true, \ + ConversionAccuracy = 2m, \ + } \ + } \ + } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchGeoShapeIndexing.properties ---------------------------------------------------------------------- diff --git a/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchGeoShapeIndexing.properties b/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchGeoShapeIndexing.properties new file mode 100644 index 0000000..3837000 --- /dev/null +++ b/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchGeoShapeIndexing.properties @@ -0,0 +1,28 @@ +spatial = { \ + \ + Enabled : true, \ + \ + Indexer=\ + { \ + Method=\ + { \ + Type = "GEO_SHAPE", \ + Precision = 1m, \ + }, \ + Projection=\ + { \ + ConversionEnabled = true, \ + ConversionAccuracy = 1m, \ + }, \ + }, \ + \ + \ + Finder=\ + { \ + Projection=\ + { \ + ConversionEnabled = true, \ + ConversionAccuracy = 1m, \ + } \ + } \ + } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/libraries/spatial/src/main/java/org/qi4j/library/spatial/transformations/geojson/internal/TransformationBuilder.java ---------------------------------------------------------------------- diff --git a/libraries/spatial/src/main/java/org/qi4j/library/spatial/transformations/geojson/internal/TransformationBuilder.java b/libraries/spatial/src/main/java/org/qi4j/library/spatial/transformations/geojson/internal/TransformationBuilder.java index 1be42f9..ab7f559 100644 --- a/libraries/spatial/src/main/java/org/qi4j/library/spatial/transformations/geojson/internal/TransformationBuilder.java +++ b/libraries/spatial/src/main/java/org/qi4j/library/spatial/transformations/geojson/internal/TransformationBuilder.java @@ -61,9 +61,9 @@ public class TransformationBuilder { LineString lineString = (LineString)geojson; - TLineString tLineString = TlineString(module).of().geometry(); + TLineString tLineString = TLineString(module).of().geometry(); for (LngLatAlt xyz : lineString.getCoordinates() ) { - tLineString = TlineString(module).of( + tLineString = TLineString(module).of( TPoint(module) .x(xyz.getLatitude()) .y(xyz.getLongitude()) http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/libraries/spatial/src/main/java/org/qi4j/library/spatial/v2/assembly/TGeometryAssembler.java ---------------------------------------------------------------------- diff --git a/libraries/spatial/src/main/java/org/qi4j/library/spatial/v2/assembly/TGeometryAssembler.java b/libraries/spatial/src/main/java/org/qi4j/library/spatial/v2/assembly/TGeometryAssembler.java index b6373ab..f427128 100644 --- a/libraries/spatial/src/main/java/org/qi4j/library/spatial/v2/assembly/TGeometryAssembler.java +++ b/libraries/spatial/src/main/java/org/qi4j/library/spatial/v2/assembly/TGeometryAssembler.java @@ -39,6 +39,7 @@ public class TGeometryAssembler TPoint.class, TMultiPoint.class, TLineString.class, + TMultiLineString.class, TPolygon.class, TMultiPolygon.class, TFeature.class, http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/libraries/spatial/src/main/java/org/qi4j/library/spatial/v2/conversions/from/GeoJsonFromConverter.java ---------------------------------------------------------------------- diff --git a/libraries/spatial/src/main/java/org/qi4j/library/spatial/v2/conversions/from/GeoJsonFromConverter.java b/libraries/spatial/src/main/java/org/qi4j/library/spatial/v2/conversions/from/GeoJsonFromConverter.java index d80b3da..217d80e 100644 --- a/libraries/spatial/src/main/java/org/qi4j/library/spatial/v2/conversions/from/GeoJsonFromConverter.java +++ b/libraries/spatial/src/main/java/org/qi4j/library/spatial/v2/conversions/from/GeoJsonFromConverter.java @@ -58,7 +58,7 @@ public class GeoJsonFromConverter { LineString lineString = (LineString)geojson; - TLineString tLineString = TlineString(module).of().geometry(); + TLineString tLineString = TLineString(module).of().geometry(); for (LngLatAlt xyz : lineString.getCoordinates() ) { tLineString.of(
