Repository: zest-qi4j
Updated Branches:
  refs/heads/ramtej-fb/spatial.queries a1053748f -> c1d327e2d


http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c1d327e2/extensions/indexing-elasticsearch/src/main/java/org/qi4j/index/elasticsearch/extensions/spatial/mappings/SpatialIndexMapper.java
----------------------------------------------------------------------
diff --git 
a/extensions/indexing-elasticsearch/src/main/java/org/qi4j/index/elasticsearch/extensions/spatial/mappings/SpatialIndexMapper.java
 
b/extensions/indexing-elasticsearch/src/main/java/org/qi4j/index/elasticsearch/extensions/spatial/mappings/SpatialIndexMapper.java
index 87e7a08..ad597d6 100644
--- 
a/extensions/indexing-elasticsearch/src/main/java/org/qi4j/index/elasticsearch/extensions/spatial/mappings/SpatialIndexMapper.java
+++ 
b/extensions/indexing-elasticsearch/src/main/java/org/qi4j/index/elasticsearch/extensions/spatial/mappings/SpatialIndexMapper.java
@@ -14,7 +14,7 @@
 
 package org.qi4j.index.elasticsearch.extensions.spatial.mappings;
 
-import org.qi4j.api.geometry.internal.TGeometry;
+import org.qi4j.api.geometry.TGeometry;
 import org.qi4j.index.elasticsearch.ElasticSearchSupport;
 import 
org.qi4j.index.elasticsearch.extensions.spatial.configuration.SpatialConfiguration;
 import 
org.qi4j.index.elasticsearch.extensions.spatial.mappings.cache.MappingsCachesTable;

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c1d327e2/libraries/geometry/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/geometry/build.gradle b/libraries/geometry/build.gradle
new file mode 100644
index 0000000..8bfe036
--- /dev/null
+++ b/libraries/geometry/build.gradle
@@ -0,0 +1,13 @@
+description = "Qi4j library for add-ons to the GeoSpatial support in Qi4j 
Core."
+
+jar { manifest { name = "Qi4j Library - GeoSpatial" }}
+
+dependencies {
+  compile(project(":org.qi4j.core:org.qi4j.core.api"))
+  compile(project(":org.qi4j.core:org.qi4j.core.bootstrap"))
+
+  testCompile(project(":org.qi4j.core:org.qi4j.core.testsupport"))
+
+  testRuntime(project(":org.qi4j.core:org.qi4j.core.runtime"))
+  testRuntime(libraries.logback)
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c1d327e2/libraries/geometry/dev-status.xml
----------------------------------------------------------------------
diff --git a/libraries/geometry/dev-status.xml 
b/libraries/geometry/dev-status.xml
new file mode 100644
index 0000000..55cc45b
--- /dev/null
+++ b/libraries/geometry/dev-status.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<module xmlns="http://www.qi4j.org/schemas/2008/dev-status/1";
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+        xsi:schemaLocation="http://www.qi4j.org/schemas/2008/dev-status/1
+        http://www.qi4j.org/schemas/2008/dev-status/1/dev-status.xsd";>
+  <status>
+    <!--none,early,beta,stable,mature-->
+    <codebase>early</codebase>
+
+    <!-- none, brief, good, complete -->
+    <documentation>none</documentation>
+
+    <!-- none, some, good, complete -->
+    <unittests>none</unittests>
+  </status>
+  <licenses>
+    <license>ALv2</license>
+  </licenses>
+</module>

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c1d327e2/libraries/geometry/src/main/java/org/qi4j/library/geometry/TGeometryBuilder.java
----------------------------------------------------------------------
diff --git 
a/libraries/geometry/src/main/java/org/qi4j/library/geometry/TGeometryBuilder.java
 
b/libraries/geometry/src/main/java/org/qi4j/library/geometry/TGeometryBuilder.java
new file mode 100644
index 0000000..e1aa85f
--- /dev/null
+++ 
b/libraries/geometry/src/main/java/org/qi4j/library/geometry/TGeometryBuilder.java
@@ -0,0 +1,31 @@
+package org.qi4j.library.geometry;
+
+import org.qi4j.api.geometry.TFeature;
+import org.qi4j.api.injection.scope.Structure;
+import org.qi4j.api.structure.Module;
+import org.qi4j.api.value.ValueBuilder;
+
+public class TGeometryBuilder<T>
+{
+    @Structure
+    private Module module;
+
+    private ValueBuilder<T> builder;
+    private T geometry;
+
+    public TGeometryBuilder(Class<T> type)
+    {
+        builder = module.newValueBuilder( type );
+        geometry = builder.prototype();
+    }
+
+    public T geometry()
+    {
+        return geometry;
+    }
+
+    public T newInstance()
+    {
+        return builder.newInstance();
+    }
+}

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c1d327e2/libraries/geometry/src/main/java/org/qi4j/library/geometry/TGeometryFactory.java
----------------------------------------------------------------------
diff --git 
a/libraries/geometry/src/main/java/org/qi4j/library/geometry/TGeometryFactory.java
 
b/libraries/geometry/src/main/java/org/qi4j/library/geometry/TGeometryFactory.java
new file mode 100644
index 0000000..bc2bb0b
--- /dev/null
+++ 
b/libraries/geometry/src/main/java/org/qi4j/library/geometry/TGeometryFactory.java
@@ -0,0 +1,95 @@
+package org.qi4j.library.geometry;
+
+import org.qi4j.api.injection.scope.Structure;
+import org.qi4j.api.mixin.Mixins;
+import org.qi4j.api.structure.Module;
+import org.qi4j.library.geometry.builders.TCRSBuilder;
+import org.qi4j.library.geometry.builders.TFeatureBuilder;
+import org.qi4j.library.geometry.builders.TFeatureCollectionBuilder;
+import org.qi4j.library.geometry.builders.TLineStringBuilder;
+import org.qi4j.library.geometry.builders.TLinearRingBuilder;
+import org.qi4j.library.geometry.builders.TMultiLineStringBuilder;
+import org.qi4j.library.geometry.builders.TMultiPointBuilder;
+import org.qi4j.library.geometry.builders.TMultiPolygonsBuilder;
+import org.qi4j.library.geometry.builders.TPointBuilder;
+import org.qi4j.library.geometry.builders.TPolygonBuilder;
+
+@Mixins( TGeometryFactory.Mixin.class )
+public interface TGeometryFactory
+{
+    TCRSBuilder TCrs();
+
+    TPointBuilder TPoint();
+
+    TMultiPointBuilder TMultiPoint();
+
+    TLinearRingBuilder TLinearRing();
+
+    TLineStringBuilder TLineString();
+
+    TMultiLineStringBuilder TMultiLineString();
+
+    TPolygonBuilder TPolygon();
+
+    TMultiPolygonsBuilder TMultiPolygon();
+
+    TFeatureBuilder TFeature();
+
+    TFeatureCollectionBuilder TFeatureCollection();
+
+    class Mixin implements TGeometryFactory
+    {
+        @Structure
+        private Module module;
+
+        public TCRSBuilder TCrs()
+        {
+            return new TCRSBuilder( module );
+        }
+
+        public TPointBuilder TPoint()
+        {
+            return new TPointBuilder( module );
+        }
+
+        public TMultiPointBuilder TMultiPoint()
+        {
+            return new TMultiPointBuilder( module );
+        }
+
+        public TLinearRingBuilder TLinearRing()
+        {
+            return new TLinearRingBuilder( module );
+        }
+
+        public TLineStringBuilder TLineString()
+        {
+            return new TLineStringBuilder( module );
+        }
+
+        public TMultiLineStringBuilder TMultiLineString()
+        {
+            return new TMultiLineStringBuilder( module );
+        }
+
+        public TPolygonBuilder TPolygon()
+        {
+            return new TPolygonBuilder( module );
+        }
+
+        public TMultiPolygonsBuilder TMultiPolygon()
+        {
+            return new TMultiPolygonsBuilder( module );
+        }
+
+        public TFeatureBuilder TFeature()
+        {
+            return new TFeatureBuilder( module );
+        }
+
+        public TFeatureCollectionBuilder TFeatureCollection()
+        {
+            return new TFeatureCollectionBuilder( module );
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c1d327e2/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TCRSBuilder.java
----------------------------------------------------------------------
diff --git 
a/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TCRSBuilder.java
 
b/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TCRSBuilder.java
new file mode 100644
index 0000000..211aba1
--- /dev/null
+++ 
b/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TCRSBuilder.java
@@ -0,0 +1,31 @@
+/*
+ * 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.library.geometry.builders;
+
+import org.qi4j.api.geometry.TCRS;
+import org.qi4j.library.geometry.TGeometryBuilder;
+
+public class TCRSBuilder extends TGeometryBuilder<TCRS>
+{
+    public TCRSBuilder()
+    {
+        super( TCRS.class );
+    }
+
+    public TCRS crs( String crs )
+    {
+        return geometry().of( crs );
+    }
+}

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c1d327e2/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TFeatureBuilder.java
----------------------------------------------------------------------
diff --git 
a/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TFeatureBuilder.java
 
b/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TFeatureBuilder.java
new file mode 100644
index 0000000..0df7fd9
--- /dev/null
+++ 
b/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TFeatureBuilder.java
@@ -0,0 +1,45 @@
+/*
+ * 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.library.geometry.builders;
+
+import org.qi4j.api.geometry.TFeature;
+import org.qi4j.api.geometry.TGeometry;
+import org.qi4j.library.geometry.TGeometryBuilder;
+
+public class TFeatureBuilder  extends TGeometryBuilder<TFeature>
+{
+    public TFeatureBuilder()
+    {
+        super( TFeature.class );
+    }
+
+    public TFeatureBuilder of( TGeometry feature )
+    {
+        geometry().of( feature );
+        return this;
+    }
+
+    public TFeatureBuilder addProperty( String name, String value )
+    {
+        geometry().addProperty( name, value );
+        return this;
+    }
+
+
+    public TFeature geometry( int srid )
+    {
+        return geometry();
+    }
+}

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c1d327e2/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TFeatureCollectionBuilder.java
----------------------------------------------------------------------
diff --git 
a/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TFeatureCollectionBuilder.java
 
b/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TFeatureCollectionBuilder.java
new file mode 100644
index 0000000..39897de
--- /dev/null
+++ 
b/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TFeatureCollectionBuilder.java
@@ -0,0 +1,46 @@
+/*
+ * 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.library.geometry.builders;
+
+import java.util.List;
+import org.qi4j.api.geometry.TFeature;
+import org.qi4j.api.geometry.TFeatureCollection;
+import org.qi4j.api.structure.Module;
+import org.qi4j.library.geometry.TGeometryBuilder;
+
+public class TFeatureCollectionBuilder extends 
TGeometryBuilder<TFeatureCollection>
+{
+    public TFeatureCollectionBuilder()
+    {
+        super(TFeatureCollection.class);
+    }
+
+    public TFeatureCollectionBuilder of( List<TFeature> features )
+    {
+        geometry().of( features );
+        return this;
+    }
+
+    public TFeatureCollectionBuilder of( TFeature... features )
+    {
+        geometry().of( features );
+        return this;
+    }
+
+    public TFeatureCollection geometry( int srid )
+    {
+        return geometry();
+    }
+}

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c1d327e2/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TLineStringBuilder.java
----------------------------------------------------------------------
diff --git 
a/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TLineStringBuilder.java
 
b/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TLineStringBuilder.java
new file mode 100644
index 0000000..aa0499b
--- /dev/null
+++ 
b/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TLineStringBuilder.java
@@ -0,0 +1,57 @@
+/*
+ * 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.library.geometry.builders;
+
+import org.qi4j.api.geometry.TLineString;
+import org.qi4j.api.geometry.TPoint;
+import org.qi4j.library.geometry.TGeometryBuilder;
+
+public class TLineStringBuilder extends TGeometryBuilder<TLineString>
+{
+    public TLineStringBuilder()
+    {
+        super( TLineString.class );
+    }
+
+    public TLineStringBuilder points( double[][] points )
+    {
+        for( double yx[] : points )
+        {
+            if( yx.length < 2 )
+            {
+                return null;
+            }
+            geometry().yx( yx[ 0 ], yx[ 1 ] );
+        }
+        return this;
+    }
+
+    public TLineStringBuilder of( TPoint... points )
+    {
+        geometry().of( points );
+        return this;
+    }
+
+    public TLineStringBuilder of()
+    {
+        geometry().of();
+        return this;
+    }
+
+    public TLineString geometry( int srid )
+    {
+        return geometry();
+    }
+}

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c1d327e2/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TLinearRingBuilder.java
----------------------------------------------------------------------
diff --git 
a/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TLinearRingBuilder.java
 
b/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TLinearRingBuilder.java
new file mode 100644
index 0000000..0af807a
--- /dev/null
+++ 
b/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TLinearRingBuilder.java
@@ -0,0 +1,51 @@
+/*
+ * 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.library.geometry.builders;
+
+import org.qi4j.api.geometry.TPoint;
+import org.qi4j.api.geometry.TLinearRing;
+import org.qi4j.library.geometry.TGeometryBuilder;
+
+public class TLinearRingBuilder extends TGeometryBuilder<TLinearRing>
+{
+    public TLinearRingBuilder()
+    {
+        super( TLinearRing.class );
+    }
+
+    public TLinearRingBuilder ring( double[][] ring )
+    {
+        for( double xy[] : ring )
+        {
+            if( xy.length < 2 )
+            {
+                return null;
+            }
+            geometry().yx( xy[ 0 ], xy[ 1 ] );
+        }
+        return this;
+    }
+
+    public TLinearRingBuilder of( TPoint... points )
+    {
+        geometry().of( points );
+        return this;
+    }
+
+    public TLinearRing geometry( int srid )
+    {
+        return geometry();
+    }
+}

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c1d327e2/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TMultiLineStringBuilder.java
----------------------------------------------------------------------
diff --git 
a/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TMultiLineStringBuilder.java
 
b/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TMultiLineStringBuilder.java
new file mode 100644
index 0000000..eb16d6a
--- /dev/null
+++ 
b/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TMultiLineStringBuilder.java
@@ -0,0 +1,58 @@
+/*
+ * 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.library.geometry.builders;
+
+import java.util.List;
+import org.qi4j.api.geometry.TLineString;
+import org.qi4j.api.geometry.TMultiLineString;
+import org.qi4j.api.structure.Module;
+import org.qi4j.library.geometry.TGeometryBuilder;
+
+public class TMultiLineStringBuilder extends TGeometryBuilder<TMultiLineString>
+{
+    public TMultiLineStringBuilder( )
+    {
+        super( TMultiLineString.class );
+    }
+
+    public TMultiLineStringBuilder points( double[][][] points )
+    {
+        for( double xy[][] : points )
+        {
+            if( xy.length < 2 )
+            {
+                return null;
+            }
+        }
+        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( int srid )
+    {
+        return geometry();
+    }
+}

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c1d327e2/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TMultiPointBuilder.java
----------------------------------------------------------------------
diff --git 
a/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TMultiPointBuilder.java
 
b/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TMultiPointBuilder.java
new file mode 100644
index 0000000..c5311fb
--- /dev/null
+++ 
b/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TMultiPointBuilder.java
@@ -0,0 +1,54 @@
+/*
+ * 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.library.geometry.builders;
+
+import org.qi4j.api.geometry.TMultiPoint;
+import org.qi4j.api.geometry.TPoint;
+import org.qi4j.api.structure.Module;
+import org.qi4j.library.geometry.TGeometryBuilder;
+
+public class TMultiPointBuilder extends TGeometryBuilder<TMultiPoint>
+{
+    public TMultiPointBuilder( Module module )
+    {
+        super( TMultiPoint.class );
+    }
+
+    // Format { lat, lon }
+    public TMultiPointBuilder points( double[][] points )
+    {
+        for( double yx[] : points )
+        {
+            if( yx.length < 2 )
+            {
+                return null;
+            }
+            geometry().yx( yx[ 0 ], yx[ 1 ] );
+        }
+        return this;
+    }
+
+    public TMultiPointBuilder of( TPoint... points )
+    {
+        geometry().of( points );
+        return this;
+    }
+
+    public TMultiPoint geometry( String CRS )
+    {
+        geometry().setCRS( CRS );
+        return geometry();
+    }
+}

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c1d327e2/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TMultiPolygonsBuilder.java
----------------------------------------------------------------------
diff --git 
a/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TMultiPolygonsBuilder.java
 
b/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TMultiPolygonsBuilder.java
new file mode 100644
index 0000000..26be8ea
--- /dev/null
+++ 
b/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TMultiPolygonsBuilder.java
@@ -0,0 +1,58 @@
+/*
+ * 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.library.geometry.builders;
+
+import java.util.List;
+import org.qi4j.api.geometry.TMultiPolygon;
+import org.qi4j.api.geometry.TPolygon;
+import org.qi4j.api.structure.Module;
+import org.qi4j.library.geometry.TGeometryBuilder;
+
+public class TMultiPolygonsBuilder extends TGeometryBuilder<TMultiPolygon>
+{
+    public TMultiPolygonsBuilder(  )
+    {
+        super(TMultiPolygon.class);
+    }
+
+    public TMultiPolygonsBuilder points( double[][][] points )
+    {
+        for( double xy[][] : points )
+        {
+            if( xy.length < 2 )
+            {
+                return null;
+            }
+        }
+        return this;
+    }
+
+    public TMultiPolygonsBuilder of( List<TPolygon> polygons )
+    {
+        geometry().of( polygons );
+        return this;
+    }
+
+    public TMultiPolygonsBuilder of( TPolygon... polygons )
+    {
+        geometry().of( polygons );
+        return this;
+    }
+
+    public TMultiPolygon geometry( int srid )
+    {
+        return geometry();
+    }
+}

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c1d327e2/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TPointBuilder.java
----------------------------------------------------------------------
diff --git 
a/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TPointBuilder.java
 
b/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TPointBuilder.java
new file mode 100644
index 0000000..f12acfb
--- /dev/null
+++ 
b/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TPointBuilder.java
@@ -0,0 +1,75 @@
+/*
+ * 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.library.geometry.builders;
+
+import org.qi4j.api.geometry.TPoint;
+import org.qi4j.api.geometry.TGeometry;
+import org.qi4j.api.structure.Module;
+import org.qi4j.library.geometry.TGeometryBuilder;
+
+public class TPointBuilder  extends TGeometryBuilder<TPoint>
+{
+    public TPointBuilder( Module module )
+    {
+        super(TPoint.class);
+    }
+
+    public TPointBuilder x( double x )
+    {
+        geometry().x( x );
+        return this;
+    }
+
+    public TPointBuilder y( double y )
+    {
+        geometry().y( y );
+        return this;
+    }
+
+    public TPointBuilder z( double u )
+    {
+        geometry().z( u );
+        return this;
+    }
+
+    public TPointBuilder lat( double lat )
+    {
+        geometry().y( lat );
+        return this;
+    }
+
+    public TPointBuilder lon( double lon )
+    {
+        geometry().x( lon );
+        return this;
+    }
+
+    public TPointBuilder alt( double alt )
+    {
+        geometry().z( alt );
+        return this;
+    }
+
+    public boolean isPoint( TGeometry tGeometry )
+    {
+        return tGeometry instanceof TPoint;
+    }
+
+    public TPoint geometry( String CRS )
+    {
+        geometry().setCRS( CRS );
+        return geometry();
+    }
+}

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c1d327e2/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TPolygonBuilder.java
----------------------------------------------------------------------
diff --git 
a/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TPolygonBuilder.java
 
b/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TPolygonBuilder.java
new file mode 100644
index 0000000..873c522
--- /dev/null
+++ 
b/libraries/geometry/src/main/java/org/qi4j/library/geometry/builders/TPolygonBuilder.java
@@ -0,0 +1,56 @@
+/*
+ * 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.library.geometry.builders;
+
+import org.qi4j.api.geometry.TPolygon;
+import org.qi4j.api.geometry.TLinearRing;
+import org.qi4j.api.injection.scope.Structure;
+import org.qi4j.api.structure.Module;
+import org.qi4j.library.geometry.TGeometryBuilder;
+
+public class TPolygonBuilder extends TGeometryBuilder<TPolygon>
+{
+    @Structure
+    private Module module;
+
+    public TPolygonBuilder()
+    {
+        super( TPolygon.class );
+    }
+
+    public TPolygonBuilder shell( TLinearRing shell )
+    {
+        geometry().of( shell );
+        return this;
+    }
+
+    public TPolygonBuilder shell( double[][] shell )
+    {
+        geometry().of( module.newObject( TLinearRingBuilder.class ).ring( 
shell ).geometry() );
+        return this;
+    }
+
+    public TPolygonBuilder withHoles( TLinearRing... holes )
+    {
+        geometry().withHoles( holes );
+        return this;
+    }
+
+    public TPolygon geometry( String CRS )
+    {
+        geometry().setCRS( CRS );
+        return geometry();
+    }
+}

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c1d327e2/libraries/spatial/src/main/java/org/qi4j/library/spatial/assembly/TGeometryAssembler.java
----------------------------------------------------------------------
diff --git 
a/libraries/spatial/src/main/java/org/qi4j/library/spatial/assembly/TGeometryAssembler.java
 
b/libraries/spatial/src/main/java/org/qi4j/library/spatial/assembly/TGeometryAssembler.java
index 815e198..2ff1c0b 100644
--- 
a/libraries/spatial/src/main/java/org/qi4j/library/spatial/assembly/TGeometryAssembler.java
+++ 
b/libraries/spatial/src/main/java/org/qi4j/library/spatial/assembly/TGeometryAssembler.java
@@ -21,10 +21,10 @@ package org.qi4j.library.spatial.assembly;
 import org.cts.crs.CRSException;
 import org.cts.crs.CoordinateReferenceSystem;
 import org.qi4j.api.geometry.*;
-import org.qi4j.api.geometry.internal.Coordinate;
-import org.qi4j.api.geometry.internal.TCircle;
-import org.qi4j.api.geometry.internal.TGeometry;
-import org.qi4j.api.geometry.internal.TLinearRing;
+import org.qi4j.api.geometry.Coordinate;
+import org.qi4j.api.geometry.TCircle;
+import org.qi4j.api.geometry.TGeometry;
+import org.qi4j.api.geometry.TLinearRing;
 import org.qi4j.bootstrap.Assemblers;
 import org.qi4j.bootstrap.AssemblyException;
 import org.qi4j.bootstrap.ModuleAssembly;

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c1d327e2/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/from/FromHelper.java
----------------------------------------------------------------------
diff --git 
a/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/from/FromHelper.java
 
b/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/from/FromHelper.java
index 68ab3d9..1ff57da 100644
--- 
a/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/from/FromHelper.java
+++ 
b/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/from/FromHelper.java
@@ -19,7 +19,7 @@
 package org.qi4j.library.spatial.formats.conversions.from;
 
 import org.geojson.GeoJsonObject;
-import org.qi4j.api.geometry.internal.TGeometry;
+import org.qi4j.api.geometry.TGeometry;
 import org.qi4j.api.structure.Module;
 import org.qi4j.library.spatial.formats.conversions.to.ToHelper;
 

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c1d327e2/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/from/GeoJsonFromConverter.java
----------------------------------------------------------------------
diff --git 
a/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/from/GeoJsonFromConverter.java
 
b/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/from/GeoJsonFromConverter.java
index 70bbdb0..149ef02 100644
--- 
a/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/from/GeoJsonFromConverter.java
+++ 
b/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/from/GeoJsonFromConverter.java
@@ -20,8 +20,8 @@ package org.qi4j.library.spatial.formats.conversions.from;
 
 import org.geojson.*;
 import org.qi4j.api.geometry.*;
-import org.qi4j.api.geometry.internal.TGeometry;
-import org.qi4j.api.geometry.internal.TLinearRing;
+import org.qi4j.api.geometry.TGeometry;
+import org.qi4j.api.geometry.TLinearRing;
 import org.qi4j.api.structure.Module;
 
 import java.util.List;

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c1d327e2/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/from/TGeometryFromConverter.java
----------------------------------------------------------------------
diff --git 
a/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/from/TGeometryFromConverter.java
 
b/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/from/TGeometryFromConverter.java
index 2c05866..f5637d4 100644
--- 
a/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/from/TGeometryFromConverter.java
+++ 
b/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/from/TGeometryFromConverter.java
@@ -18,7 +18,7 @@
 
 package org.qi4j.library.spatial.formats.conversions.from;
 
-import org.qi4j.api.geometry.internal.TGeometry;
+import org.qi4j.api.geometry.TGeometry;
 import org.qi4j.api.structure.Module;
 
 

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c1d327e2/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/from/WKTFromConverter.java
----------------------------------------------------------------------
diff --git 
a/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/from/WKTFromConverter.java
 
b/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/from/WKTFromConverter.java
index 5719376..0223802 100644
--- 
a/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/from/WKTFromConverter.java
+++ 
b/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/from/WKTFromConverter.java
@@ -32,8 +32,8 @@ import com.vividsolutions.jts.geom.MultiPolygon;
 import com.vividsolutions.jts.geom.Polygon;
 import org.qi4j.api.geometry.TPoint;
 import org.qi4j.api.geometry.TPolygon;
-import org.qi4j.api.geometry.internal.TGeometry;
-import org.qi4j.api.geometry.internal.TLinearRing;
+import org.qi4j.api.geometry.TGeometry;
+import org.qi4j.api.geometry.TLinearRing;
 import org.qi4j.api.structure.Module;
 import org.qi4j.api.value.ValueBuilder;
 

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c1d327e2/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/to/GeoJsonToConverter.java
----------------------------------------------------------------------
diff --git 
a/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/to/GeoJsonToConverter.java
 
b/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/to/GeoJsonToConverter.java
index 366c98f..17af07a 100644
--- 
a/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/to/GeoJsonToConverter.java
+++ 
b/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/to/GeoJsonToConverter.java
@@ -21,7 +21,7 @@ package org.qi4j.library.spatial.formats.conversions.to;
 import org.geojson.GeoJsonObject;
 import org.geojson.Point;
 import org.qi4j.api.geometry.TPoint;
-import org.qi4j.api.geometry.internal.TGeometry;
+import org.qi4j.api.geometry.TGeometry;
 import org.qi4j.api.structure.Module;
 
 

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c1d327e2/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/to/Spatial4JToConverter.java
----------------------------------------------------------------------
diff --git 
a/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/to/Spatial4JToConverter.java
 
b/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/to/Spatial4JToConverter.java
index 27e2237..525dbbb 100644
--- 
a/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/to/Spatial4JToConverter.java
+++ 
b/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/to/Spatial4JToConverter.java
@@ -30,8 +30,8 @@ import com.vividsolutions.jts.util.GeometricShapeFactory;
 import org.geojson.GeoJsonObject;
 import org.geojson.Point;
 import org.qi4j.api.geometry.TPoint;
-import org.qi4j.api.geometry.internal.TCircle;
-import org.qi4j.api.geometry.internal.TGeometry;
+import org.qi4j.api.geometry.TCircle;
+import org.qi4j.api.geometry.TGeometry;
 import org.qi4j.api.structure.Module;
 
 

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c1d327e2/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/to/TGeometryToConverter.java
----------------------------------------------------------------------
diff --git 
a/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/to/TGeometryToConverter.java
 
b/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/to/TGeometryToConverter.java
index c80c06c..9602a5a 100644
--- 
a/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/to/TGeometryToConverter.java
+++ 
b/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/to/TGeometryToConverter.java
@@ -18,7 +18,7 @@
 
 package org.qi4j.library.spatial.formats.conversions.to;
 
-import org.qi4j.api.geometry.internal.TGeometry;
+import org.qi4j.api.geometry.TGeometry;
 import org.qi4j.api.structure.Module;
 
 /**

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c1d327e2/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/to/ToHelper.java
----------------------------------------------------------------------
diff --git 
a/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/to/ToHelper.java
 
b/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/to/ToHelper.java
index 4103075..eca8bc6 100644
--- 
a/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/to/ToHelper.java
+++ 
b/libraries/spatial/src/main/java/org/qi4j/library/spatial/formats/conversions/to/ToHelper.java
@@ -19,7 +19,7 @@
 package org.qi4j.library.spatial.formats.conversions.to;
 
 import org.geojson.GeoJsonObject;
-import org.qi4j.api.geometry.internal.TGeometry;
+import org.qi4j.api.geometry.TGeometry;
 import org.qi4j.api.structure.Module;
 
 import static 
org.qi4j.library.spatial.projections.transformations.TTransformations.Transform;

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c1d327e2/libraries/spatial/src/main/java/org/qi4j/library/spatial/projections/transformations/fromto/FromHelper.java
----------------------------------------------------------------------
diff --git 
a/libraries/spatial/src/main/java/org/qi4j/library/spatial/projections/transformations/fromto/FromHelper.java
 
b/libraries/spatial/src/main/java/org/qi4j/library/spatial/projections/transformations/fromto/FromHelper.java
index f3ebe56..089f074 100644
--- 
a/libraries/spatial/src/main/java/org/qi4j/library/spatial/projections/transformations/fromto/FromHelper.java
+++ 
b/libraries/spatial/src/main/java/org/qi4j/library/spatial/projections/transformations/fromto/FromHelper.java
@@ -18,7 +18,7 @@
 
 package org.qi4j.library.spatial.projections.transformations.fromto;
 
-import org.qi4j.api.geometry.internal.TGeometry;
+import org.qi4j.api.geometry.TGeometry;
 import org.qi4j.api.structure.Module;
 import 
org.qi4j.library.spatial.formats.conversions.from.TGeometryFromConverter;
 

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c1d327e2/libraries/spatial/src/main/java/org/qi4j/library/spatial/projections/transformations/fromto/ToHelper.java
----------------------------------------------------------------------
diff --git 
a/libraries/spatial/src/main/java/org/qi4j/library/spatial/projections/transformations/fromto/ToHelper.java
 
b/libraries/spatial/src/main/java/org/qi4j/library/spatial/projections/transformations/fromto/ToHelper.java
index eb49068..d95f3c9 100644
--- 
a/libraries/spatial/src/main/java/org/qi4j/library/spatial/projections/transformations/fromto/ToHelper.java
+++ 
b/libraries/spatial/src/main/java/org/qi4j/library/spatial/projections/transformations/fromto/ToHelper.java
@@ -23,8 +23,8 @@ import org.cts.crs.GeodeticCRS;
 import org.cts.op.CoordinateOperation;
 import org.cts.op.CoordinateOperationFactory;
 import org.qi4j.api.geometry.*;
-import org.qi4j.api.geometry.internal.Coordinate;
-import org.qi4j.api.geometry.internal.TGeometry;
+import org.qi4j.api.geometry.Coordinate;
+import org.qi4j.api.geometry.TGeometry;
 import org.qi4j.api.structure.Module;
 import org.qi4j.library.spatial.projections.ProjectionsRegistry;
 import org.slf4j.Logger;

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c1d327e2/settings.gradle
----------------------------------------------------------------------
diff --git a/settings.gradle b/settings.gradle
index 2779ea2..c2d3d40 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -14,6 +14,7 @@ include "core:functional",
         'libraries:eventsourcing-jdbm',
         'libraries:eventsourcing-rest',
         'libraries:fileconfig',
+        'libraries:geometry',
         'libraries:http',
         'libraries:invocation-cache',
         'libraries:lang-beanshell',

Reply via email to