You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@unomi.apache.org by sh...@apache.org on 2020/11/11 09:21:00 UTC

[unomi] 14/17: feat(geo location condition): add support for getting location path f… (#61) (#210)

This is an automated email from the ASF dual-hosted git repository.

shuber pushed a commit to branch unomi-1.5.x
in repository https://gitbox.apache.org/repos/asf/unomi.git

commit 03da6d7473f7d5f706722732d773de8b53630012
Author: Shir Bromberg <sb...@yotpo.com>
AuthorDate: Tue Nov 10 11:55:47 2020 +0200

    feat(geo location condition): add support for getting location path f… (#61) (#210)
    
    geo location condition: add support for getting location path from parameters and cast integers.
    
    (cherry picked from commit 1904dacc5933490dd523787c8f78c0e2c427f1e7)
---
 .../GeoLocationByPointSessionConditionESQueryBuilder.java        | 9 +++++----
 .../cxs/conditions/geoLocationByPointSessionCondition.json       | 5 +++++
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/GeoLocationByPointSessionConditionESQueryBuilder.java b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/GeoLocationByPointSessionConditionESQueryBuilder.java
index 001bd3d..21d27b1 100644
--- a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/GeoLocationByPointSessionConditionESQueryBuilder.java
+++ b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/GeoLocationByPointSessionConditionESQueryBuilder.java
@@ -29,14 +29,15 @@ public class GeoLocationByPointSessionConditionESQueryBuilder implements Conditi
     @Override
     public QueryBuilder buildQuery(Condition condition, Map<String, Object> context, ConditionESQueryBuilderDispatcher dispatcher) {
         String type = (String) condition.getParameter("type");
+        String name = condition.getParameter("name") == null ? "location" : (String) condition.getParameter("name");
 
         if("circle".equals(type)) {
-            Double circleLatitude = (Double) condition.getParameter("circleLatitude");
-            Double circleLongitude = (Double) condition.getParameter("circleLongitude");
+            Double circleLatitude = ((Number) condition.getParameter("circleLatitude")).doubleValue();
+            Double circleLongitude = ((Number) condition.getParameter("circleLongitude")).doubleValue();
             String distance = condition.getParameter("distance").toString();
 
             if(circleLatitude != null && circleLongitude != null && distance != null) {
-                return QueryBuilders.geoDistanceQuery("location")
+                return QueryBuilders.geoDistanceQuery(name)
                         .point(circleLatitude, circleLongitude)
                         .distance(distance);
             }
@@ -47,7 +48,7 @@ public class GeoLocationByPointSessionConditionESQueryBuilder implements Conditi
             Double rectLongitudeSW = (Double) condition.getParameter("rectLongitudeSW");
 
             if(rectLatitudeNE != null && rectLongitudeNE != null && rectLatitudeSW != null && rectLongitudeSW != null) {
-                return QueryBuilders.geoBoundingBoxQuery("location")
+                return QueryBuilders.geoBoundingBoxQuery(name)
                         .setCorners(rectLatitudeNE, rectLongitudeNE,rectLatitudeSW, rectLongitudeSW);
             }
         }
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/geoLocationByPointSessionCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/geoLocationByPointSessionCondition.json
index 809d690..f33be79 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/geoLocationByPointSessionCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/geoLocationByPointSessionCondition.json
@@ -54,6 +54,11 @@
       "id": "distance",
       "type": "string",
       "multivalued": false
+    },
+    {
+      "id": "name",
+      "type": "string",
+      "multivalued": false
     }
   ]
 }
\ No newline at end of file