private void updateQueryWithDataTypeFilter(Query graphQuery, JSONObject obj, User user, SearchOptions searchOptions) { String dataType = obj.getString("dataType"); String predicateString = obj.optString("predicate"); PropertyType propertyType = PropertyType.valueOf(dataType); try { if ("has".equals(predicateString)) { graphQuery.has(PropertyType.getTypeClass(propertyType)); } else if ("hasNot".equals(predicateString)) { graphQuery.hasNot(PropertyType.getTypeClass(propertyType)); } else if ("in".equals(predicateString)) { JSONArray values = obj.getJSONArray("values"); graphQuery.has(PropertyType.getTypeClass(propertyType), Contains.IN, JSONUtil.toList(values)); } else { JSONArray values = obj.getJSONArray("values"); Object value0 = jsonValueToObject(values, propertyType, 0); if (PropertyType.GEO_LOCATION.equals(propertyType)) { GeoCompare geoComparePredicate = GeoCompare.valueOf(predicateString.toUpperCase()); graphQuery.has(GeoShape.class, geoComparePredicate, value0); } else { throw new UnsupportedOperationException("Data type queries are not yet supported for type: " + dataType); } } } catch (ParseException ex) { throw new VisalloException("Could not update query with filter:\n" + obj.toString(2), ex); } }
graphQuery.has(propertyName); } else if ("hasNot".equals(predicateString)) { graphQuery.hasNot(propertyName); } else if ("in".equals(predicateString)) { graphQuery.has(propertyName, Contains.IN, JSONUtil.toList(obj.getJSONArray("values")));