/** * Adds a range feature with a given value to the predicate query. * This feature is applied to all sub queries. * @param key name of the feature to be set in this query. * @param value value of the feature. */ public void addRangeFeature(String key, long value) { addRangeFeature(key, value, ALL_SUB_QUERIES); }
@Override protected void addAttribute(String attribute, String value) { item.addRangeFeature(attribute, Long.parseLong(value)); }
@Override protected void addAttribute(String attribute, String value, BigInteger subQueryMask) { item.addRangeFeature(attribute, Long.parseLong(value), subQueryMask.longValue()); } }
/** * Adds a range feature with a given value to the predicate query. * @param key name of the feature to be set in this query. * @param value value of the feature. * @param subQueryBitmap bitmap specifying which sub queries this feature applies to. */ public void addRangeFeature(String key, long value, long subQueryBitmap) { addRangeFeature(new RangeEntry(key, value, subQueryBitmap)); }
@NonNull private Item buildPredicate(OperatorNode<ExpressionOperator> ast) { List<OperatorNode<ExpressionOperator>> args = ast.getArgument(1); Preconditions.checkArgument(args.size() == 3, "Expected 3 arguments, got %s.", args.size()); PredicateQueryItem item = new PredicateQueryItem(); item.setIndexName(getIndex(args.get(0))); addFeatures(args.get(1), (key, value, subqueryBitmap) -> item.addFeature(key, (String) value, subqueryBitmap), PredicateQueryItem.ALL_SUB_QUERIES); addFeatures(args.get(2), (key, value, subqueryBitmap) -> { if (value instanceof Long) { item.addRangeFeature(key, (Long) value, subqueryBitmap); } else { item.addRangeFeature(key, (Integer) value, subqueryBitmap); } }, PredicateQueryItem.ALL_SUB_QUERIES); return leafStyleSettings(ast, item); }
@NonNull private Item buildPredicate(String key, Inspector value) { HashMap<Integer, Inspector> children = getChildrenMap(value); String field = children.get(0).asString(); Inspector args = children.get(1); Preconditions.checkArgument(children.size() == 3, "Expected 3 arguments, got %s.", children.size()); PredicateQueryItem item = new PredicateQueryItem(); item.setIndexName(field); List<Inspector> argumentList = valueListFromInspector(getChildren(value)); // Adding attributes argumentList.get(1).traverse((ObjectTraverser) (attrKey, attrValue) -> { if (attrValue.type() == ARRAY){ List<Inspector> attributes = valueListFromInspector(attrValue); attributes.forEach( (attribute) -> item.addFeature(attrKey, attribute.asString())); } else { item.addFeature(attrKey, attrValue.asString()); } }); // Adding range attributes argumentList.get(2).traverse((ObjectTraverser) (attrKey, attrValue) -> item.addRangeFeature(attrKey, (int)attrValue.asDouble())); return leafStyleSettings(getAnnotations(value), item); }