final URI functionURI = functionNode.getFunctionURI();
/** * Optimize a single FilterNode. We want to replace a search in search * function node with an In function node. */ protected void optimize(final AST2BOpContext ctx, final StaticAnalysis sa, final JoinGroupNode group, final FilterNode filterNode) { final IValueExpressionNode veNode = filterNode.getValueExpressionNode(); if (veNode instanceof FunctionNode) { final FunctionNode funcNode = (FunctionNode) veNode; if (funcNode.getFunctionURI().equals(BDS.SEARCH_IN_SEARCH)) { filterNode.setArg(0, convert(ctx, funcNode)); } } }
/** * Optimize a single FilterNode. We want to replace a search in search * function node with an In function node. */ protected void optimize(final AST2BOpContext ctx, final StaticAnalysis sa, final JoinGroupNode group, final FilterNode filterNode) { final IValueExpressionNode veNode = filterNode.getValueExpressionNode(); if (veNode instanceof FunctionNode) { final FunctionNode funcNode = (FunctionNode) veNode; if (funcNode.getFunctionURI().equals(BDS.SEARCH_IN_SEARCH)) { filterNode.setArg(0, convert(ctx, funcNode)); } } }
final URI functionURI = functionNode.getFunctionURI();
private IValueExpression convertAggregates(final BOp exprNode) { IValueExpression expr; final BOp[] args = new BOp[exprNode.args().size()]; if (exprNode!=null && exprNode.arity()>0) { for (int i=0; i<exprNode.args().size(); i++) { final BOp arg = exprNode.args().get(i); final IValueExpression newValue = convertAggregates(arg); if (newValue!=null) { args[i] = newValue; } else { args[i] = arg; } } } if (exprNode instanceof FunctionNode) { if ((exprNode instanceof FunctionNode) && FunctionRegistry.isAggregate(((FunctionNode) exprNode).getFunctionURI())) { expr = new AggregateBase(args, null) { @Override public void reset() {} @Override public IV done() { return null; } }; } else { expr = new UnknownFunctionBOp(args, null); } } else { expr = null; } return expr; }
final URI functionURI = functionNode.getFunctionURI();
/** * Return <code>true</code> iff the {@link FunctionNode} makes use of a * {@link FunctionRegistry#BOUND} operator. * * @return <code>true</code>iff it uses <code>BOUND()</code> * * TODO Unit test. */ public boolean isBound() { if (FunctionRegistry.BOUND.equals(getFunctionURI())) return true; final int arity = arity(); for (int i = 0; i < arity; i++) { final BOp child = get(i); if (child instanceof FunctionNode) { if (!((FunctionNode) child).isBound()) { return true; } } } return false; }
private IValueExpression convertAggregates(final BOp exprNode) { IValueExpression expr; final BOp[] args = new BOp[exprNode.args().size()]; if (exprNode!=null && exprNode.arity()>0) { for (int i=0; i<exprNode.args().size(); i++) { final BOp arg = exprNode.args().get(i); final IValueExpression newValue = convertAggregates(arg); if (newValue!=null) { args[i] = newValue; } else { args[i] = arg; } } } if (exprNode instanceof FunctionNode) { if ((exprNode instanceof FunctionNode) && FunctionRegistry.isAggregate(((FunctionNode) exprNode).getFunctionURI())) { expr = new AggregateBase(args, null) { @Override public void reset() {} @Override public IV done() { return null; } }; } else { expr = new UnknownFunctionBOp(args, null); } } else { expr = null; } return expr; }
/** * Return <code>true</code> iff the {@link FunctionNode} makes use of a * {@link FunctionRegistry#BOUND} operator. * * @return <code>true</code>iff it uses <code>BOUND()</code> * * TODO Unit test. */ public boolean isBound() { if (FunctionRegistry.BOUND.equals(getFunctionURI())) return true; final int arity = arity(); for (int i = 0; i < arity; i++) { final BOp child = get(i); if (child instanceof FunctionNode) { if (!((FunctionNode) child).isBound()) { return true; } } } return false; }
final URI functionURI = functionNode.getFunctionURI();
final URI functionURI = functionNode.getFunctionURI(); if (functionURI.equals(FunctionRegistry.AND) || functionURI.equals(FunctionRegistry.OR)) {
final URI functionURI = functionNode.getFunctionURI(); if (functionURI.equals(FunctionRegistry.AND) || functionURI.equals(FunctionRegistry.OR)) {
final URI functionURI = functionNode.getFunctionURI();
final URI functionURI = functionNode.getFunctionURI();
final URI functionURI = functionNode.getFunctionURI();
final URI functionURI = functionNode.getFunctionURI();
final URI functionURI = functionNode.getFunctionURI();
final URI functionURI = functionNode.getFunctionURI();
private void processFunction( final FunctionNode function, final Map<VarNode, RangeNode> ranges) { final URI uri = function.getFunctionURI();
private void processFunction( final FunctionNode function, final Map<VarNode, RangeNode> ranges) { final URI uri = function.getFunctionURI();