/** * Wrap collection of JexlNodes into an ASTAndNode * * @param children * @return */ public static JexlNode createAndNode(Iterable<? extends JexlNode> children) { return wrapChildren(new ASTAndNode(ParserTreeConstants.JJTANDNODE), children); }
/** * Wrap collection of JexlNodes into an ASTAndNode * * @param children * @return */ public static JexlNode createUnwrappedAndNode(Iterable<? extends JexlNode> children) { return setChildren(new ASTAndNode(ParserTreeConstants.JJTANDNODE), children); }
protected static Map<LiteralRange<?>,List<JexlNode>> getBoundedRanges(List<JexlNode> rangeNodes, List<JexlNode> nonIndexedRangeNodes, List<JexlNode> otherNodes) { // if the non-indexed range nodes were split out, then lets group them back into their AND expressions and put them in the // other node list (see getBoundedRanges vs. getBoundedRangesIndexAgnostic) if (nonIndexedRangeNodes != null && otherNodes != null) { Map<LiteralRange<?>,List<JexlNode>> ranges = getBoundedRanges(nonIndexedRangeNodes, otherNodes); for (List<JexlNode> range : ranges.values()) { // create a ref -> ref_exp -> and -> <range nodes> ASTAndNode andNode = new ASTAndNode(ParserTreeConstants.JJTANDNODE); andNode = JexlNodes.children(andNode, range.get(0), range.get(1)); ASTReferenceExpression refExpNode = JexlNodes.wrap(andNode); ASTReference refNode = JexlNodes.makeRef(refExpNode); otherNodes.add(refNode); } } return getBoundedRanges(rangeNodes, otherNodes); }
JexlNode parentNode = (containerType.equals(ContainerType.OR_NODE) ? new ASTOrNode(ParserTreeConstants.JJTORNODE) : new ASTAndNode( ParserTreeConstants.JJTANDNODE));
private JexlNode pushFunctionIntoExceededValueRange(Collection<JexlNode> functions, JexlNode range) { JexlNode source = ExceededValueThresholdMarkerJexlNode.getExceededValueThresholdSource(range); source = JexlASTHelper.dereference(source); JexlNode parent = source.jjtGetParent(); ASTAndNode andNode = new ASTAndNode(ParserTreeConstants.JJTANDNODE); JexlNode[] allChildren = new JexlNode[functions.size() + 1]; int i = 0; allChildren[i++] = source; for (JexlNode function : functions) { allChildren[i++] = function; } andNode = children(andNode, allChildren); children(parent, andNode); return range; }
public FunctionFilter(List<ASTFunctionNode> nodes) { ASTJexlScript script = new ASTJexlScript(ParserTreeConstants.JJTJEXLSCRIPT); if (nodes.size() > 1) { ASTAndNode andNode = new ASTAndNode(ParserTreeConstants.JJTANDNODE); children(script, andNode); children(andNode, nodes.toArray(new JexlNode[nodes.size()])); } else { children(script, nodes.get(0)); } String query = JexlStringBuildingVisitor.buildQuery(script); JexlArithmetic arithmetic = new DefaultArithmetic(); // Get a JexlEngine initialized with the correct JexlArithmetic for // this Document DatawaveJexlEngine engine = ArithmeticJexlEngines.getEngine(arithmetic); // Evaluate the JexlContext against the Script this.script = engine.createScript(query); }
ASTAndNode onlyRangeNodes = new ASTAndNode(ParserTreeConstants.JJTANDNODE);
@Override public Object visit(ASTAndNode node, Object data) { ASTAndNode newNode = new ASTAndNode(ParserTreeConstants.JJTANDNODE); newNode.image = node.image; visit(node, newNode, data); switch (newNode.jjtGetNumChildren()) { case 0: return null; case 1: JexlNode child = newNode.jjtGetChild(0); JexlNodes.promote(newNode, child); return child; default: return newNode; } }
private JexlNode pushFunctionIntoExceededValueRange(JexlNode filter, JexlNode range) { JexlNode source = ExceededValueThresholdMarkerJexlNode.getExceededValueThresholdSource(range); source = JexlASTHelper.dereference(source); JexlNode parent = source.jjtGetParent(); ASTAndNode andNode = new ASTAndNode(ParserTreeConstants.JJTANDNODE); andNode = children(andNode, source, filter); children(parent, andNode); return range; }
ASTAndNode rangeNodes = new ASTAndNode(ParserTreeConstants.JJTANDNODE);
ASTAndNode onlyRangeNodes = new ASTAndNode(ParserTreeConstants.JJTANDNODE);
JexlNode newAnd = new ASTAndNode(ParserTreeConstants.JJTANDNODE);
JexlNode parentNode = (containerType.equals(ContainerType.OR_NODE) ? new ASTOrNode(ParserTreeConstants.JJTORNODE) : new ASTAndNode( ParserTreeConstants.JJTANDNODE)); int i = 0;
JexlNode parentNode = (containerType.equals(ContainerType.OR_NODE) ? new ASTOrNode(ParserTreeConstants.JJTORNODE) : new ASTAndNode( ParserTreeConstants.JJTANDNODE)); JexlNodes.ensureCapacity(parentNode, fieldValues.size());
/** * @param delayedPredicates * @return */ protected JexlNode reverseDepth(JexlNode parentNode, List<JexlNode> delayedPredicates) { JexlNode returnNode = ASTDelayedPredicate.create(parentNode); JexlNode newAnd = new ASTAndNode(ParserTreeConstants.JJTANDNODE); int i = 0; for (JexlNode delayedNode : delayedPredicates) { newAnd.jjtAddChild(delayedNode.jjtGetChild(0), i); i++; } newAnd.jjtSetParent(returnNode); returnNode.jjtAddChild(newAnd, 0); return returnNode; }
JexlNode parentNode = (containerType.equals(ContainerType.OR_NODE) ? new ASTOrNode(ParserTreeConstants.JJTORNODE) : new ASTAndNode( ParserTreeConstants.JJTANDNODE)); JexlNodes.ensureCapacity(parentNode, fieldValues.size());
ASTAndNode newNode = new ASTAndNode(ParserTreeConstants.JJTANDNODE); newNode.image = node.image; newNode.jjtSetParent(node.jjtGetParent());
@Override public Object visit(ASTAndNode node, Object data) { ASTAndNode newNode = new ASTAndNode(ParserTreeConstants.JJTANDNODE); newNode.image = node.image;
ASTAndNode jjtn001 = new ASTAndNode(JJTANDNODE); boolean jjtc001 = true; jjtree.openNodeScope(jjtn001);
protected JexlNode optimizeTree(JexlNode currentNode, JexlNode newNode, Object data) { if ((currentNode instanceof ASTAndNode) && hasChildOr(currentNode)) { ASTAndNode andNode = new ASTAndNode(ParserTreeConstants.JJTANDNODE); andNode.image = currentNode.image; andNode.jjtSetParent(currentNode.jjtGetParent());