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.
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 @@
@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 @@
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