Package org.datanucleus.query.expression

Examples of org.datanucleus.query.expression.Expression


            // Static function
            if (method.equals("count"))
            {
                Collection coll = (Collection)state.get(JavaQueryEvaluator.RESULTS_SET);
                SetExpression setexpr = new SetExpression(coll, candidateAlias);
                Expression paramExpr = (Expression)invokeExpr.getArguments().get(0);
                if (paramExpr.getOperator() == Expression.OP_DISTINCT)
                {
                    Collection processable = new HashSet(coll); // No dups in HashSet
                    coll = processable;
                }
                return setexpr.count(paramExpr, this);
            }
            else if (method.equals("sum"))
            {
                Collection coll = (Collection)state.get(JavaQueryEvaluator.RESULTS_SET);
                SetExpression setexpr = new SetExpression(coll, candidateAlias);
                Expression paramExpr = (Expression)invokeExpr.getArguments().get(0);
                if (paramExpr.getOperator() == Expression.OP_DISTINCT)
                {
                    Collection processable = new HashSet(coll); // No dups in HashSet
                    coll = processable;
                }
                return setexpr.sum(paramExpr, this, state);
            }
            else if (method.equals("avg"))
            {
                Collection coll = (Collection)state.get(JavaQueryEvaluator.RESULTS_SET);
                SetExpression setexpr = new SetExpression(coll, candidateAlias);
                Expression paramExpr = (Expression)invokeExpr.getArguments().get(0);
                if (paramExpr.getOperator() == Expression.OP_DISTINCT)
                {
                    Collection processable = new HashSet(coll); // No dups in HashSet
                    coll = processable;
                }
                return setexpr.avg(paramExpr, this, state);
            }
            else if (method.equals("min"))
            {
                Collection coll = (Collection)state.get(JavaQueryEvaluator.RESULTS_SET);
                SetExpression setexpr = new SetExpression(coll, candidateAlias);
                Expression paramExpr = (Expression)invokeExpr.getArguments().get(0);
                if (paramExpr.getOperator() == Expression.OP_DISTINCT)
                {
                    Collection processable = new HashSet(coll); // No dups in HashSet
                    coll = processable;
                }
                return setexpr.min(paramExpr, this, state);
            }
            else if (method.equals("max"))
            {
                Collection coll = (Collection)state.get(JavaQueryEvaluator.RESULTS_SET);
                SetExpression setexpr = new SetExpression(coll, candidateAlias);
                Expression paramExpr = (Expression)invokeExpr.getArguments().get(0);
                if (paramExpr.getOperator() == Expression.OP_DISTINCT)
                {
                    Collection processable = new HashSet(coll); // No dups in HashSet
                    coll = processable;
                }
                return setexpr.max(paramExpr, this, state);
View Full Code Here


        // TODO Handle subqueryMap

        compileCandidatesParametersVariables(parameters);
        Expression[] exprFrom = compileFrom();
        Expression exprFilter = compileFilter();
        Expression[] exprOrdering = compileOrdering();
        Expression[] exprResult = compileResult();
        Expression[] exprGrouping = compileGrouping();
        Expression exprHaving = compileHaving();
        QueryCompilation compilation = new QueryCompilation(candidateClass, candidateAlias, symtbl,
            exprResult, exprFrom, exprFilter, exprGrouping, exprHaving, exprOrdering, null);
        compilation.setQueryLanguage("SQL");

        // TODO Compile subqueries - see query.getSubqueries()
View Full Code Here

        {
            // Get value of left expression
            if (primExpr.getLeft() instanceof CastExpression)
            {
                CastExpression castExpr = (CastExpression)primExpr.getLeft();
                Expression castLeftExpr = castExpr.getLeft();
                if (castLeftExpr instanceof PrimaryExpression)
                {
                    value = getValueForPrimaryExpression((PrimaryExpression)castLeftExpr);
                    String castClassName = castExpr.getClassName();
                    if (value != null)
View Full Code Here

            // Generate the node tree for the filter
            Node node = parser.parse(filter);

            ExpressionCompiler comp = new ExpressionCompiler();
            comp.setSymbolTable(symtbl);
            Expression expr = comp.compileExpression(node);
            expr.bind();
            return expr;
        }
        return null;
    }
View Full Code Here

            return null;
        }
        Node node = parser.parse(having);
        ExpressionCompiler comp = new ExpressionCompiler();
        comp.setSymbolTable(symtbl);
        Expression expr = comp.compileExpression(node);
        expr.bind();
        return expr;
    }
View Full Code Here

      throw newUnsupportedQueryMethodException(invocation);
    }
  }

  private void handleContainsOperation(InvokeExpression invocation, Expression expr, QueryData qd) {
    Expression param = (Expression) invocation.getArguments().get(0);
    param.bind();
    if (expr.getLeft() instanceof PrimaryExpression) {
      PrimaryExpression left = (PrimaryExpression) expr.getLeft();
      // treat contains as equality since that's how the low-level
      // api does checks on multi-value properties.
View Full Code Here

            }
        }

        Expression[] exprFrom = compileFrom();
        compileCandidatesParametersVariables(parameters);
        Expression exprFilter = compileFilter();
        Expression[] exprOrdering = compileOrdering();
        Expression[] exprResult = compileResult();
        Expression[] exprGrouping = compileGrouping();
        Expression exprHaving = compileHaving();
        Expression[] exprUpdate = compileUpdate();

        if (exprResult != null && exprResult.length == 1 && exprResult[0] instanceof PrimaryExpression)
        {
            // Check for special case of "Object(p)" in result, which means no special result
View Full Code Here

                symtbl.addSymbol(sym);
            }
        }

        compileCandidatesParametersVariables(parameters);
        Expression exprFilter = compileFilter();
        Expression[] exprOrdering = compileOrdering();
        Expression[] exprResult = compileResult();
        Expression[] exprGrouping = compileGrouping();
        Expression exprHaving = compileHaving();
        QueryCompilation compilation = new QueryCompilation(candidateClass, candidateAlias, symtbl,
            exprResult, null, exprFilter, exprGrouping, exprHaving, exprOrdering, null);
        compilation.setQueryLanguage("JDOQL");

        return compilation;
View Full Code Here

  /**
   * Adds filters to the given {@link Query} by examining the compiled filter
   * expression.
   */
  private void addFilters(QueryData qd) {
    Expression filter = qd.compilation.getExprFilter();
    addExpression(filter, qd);
  }
View Full Code Here

    }
  }

  private void handleMatchesOperation(InvokeExpression invocation, Expression expr,
                                      QueryData qd) {
    Expression param = (Expression) invocation.getArguments().get(0);
    if (expr.getLeft() instanceof PrimaryExpression && param instanceof Literal) {
      String matchesExpr = getPrefixFromMatchesExpression(((Literal) param).getLiteral());
      addPrefix((PrimaryExpression) expr.getLeft(), new Literal(matchesExpr), matchesExpr, qd);
    } else if (expr.getLeft() instanceof PrimaryExpression &&
               param instanceof ParameterExpression) {
View Full Code Here

TOP

Related Classes of org.datanucleus.query.expression.Expression

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.