Package org.datanucleus.query.symbol

Examples of org.datanucleus.query.symbol.SymbolTable


     * @return The compiled query
     */
    public QueryCompilation compile(Map parameters, Map subqueryMap)
    {
        parser = new JPQLParser(null, parameters); // TODO Add options
        symtbl = new SymbolTable(clr);
        symtbl.setSymbolResolver(this);
        if (parentCompiler != null)
        {
            symtbl.setParentSymbolTable(parentCompiler.symtbl);
        }
View Full Code Here


        else
        {
            parseOptions.put("implicitParameters", true);
        }
        parser = new JDOQLParser(parseOptions);
        symtbl = new SymbolTable(clr);
        symtbl.setSymbolResolver(this);
        if (parentCompiler != null)
        {
            symtbl.setParentSymbolTable(parentCompiler.symtbl);
        }
View Full Code Here

        }

        if (namedParametersSupplied)
        {
            // Check for missing named parameters
            SymbolTable symtbl = compilation.getSymbolTable();
            Collection<String> symNames = symtbl.getSymbolNames();
            if (symNames != null && !symNames.isEmpty())
            {
                for (String symName : symNames)
                {
                    Symbol sym = symtbl.getSymbol(symName);
                    if (sym.getType() == Symbol.PARAMETER)
                    {
                        if (!parameterValues.containsKey(symName))
                        {
                            throw new QueryInvalidParametersException(LOCALISER.msg("021119", symName));
View Full Code Here

            {
                candidateAlias = "DN_THIS";
                from.get(0).alias(candidateAlias);
            }

            SymbolTable symtbl = new SymbolTable(clr);
            symtbl.setSymbolResolver(new JPQLSymbolResolver(mmgr, clr, symtbl, candidateClass, candidateAlias));
            symtbl.addSymbol(new PropertySymbol(candidateAlias, candidateClass));
            if (parentSymtbl != null)
            {
                symtbl.setParentSymbolTable(parentSymtbl);
            }

            org.datanucleus.query.expression.Expression[] resultExprs = null;
            if (result != null && !result.isEmpty())
            {
                resultExprs = new org.datanucleus.query.expression.Expression[result.size()];
                Iterator iter = result.iterator();
                int i=0;
                while (iter.hasNext())
                {
                    ExpressionImpl result = (ExpressionImpl)iter.next();
                    org.datanucleus.query.expression.Expression resultExpr = result.getQueryExpression();
                    resultExpr.bind(symtbl);
                    resultExprs[i++] = resultExpr;
                }

                if (resultExprs != null && resultExprs.length == 1 && resultExprs[0] instanceof PrimaryExpression)
                {
                    // Check for special case of "Object(p)" in result, which means no special result
                    String resultExprId = ((PrimaryExpression)resultExprs[0]).getId();
                    if (resultExprId.equalsIgnoreCase(candidateAlias))
                    {
                        resultExprs = null;
                    }
                }
            }

            org.datanucleus.query.expression.Expression[] fromExprs =
                new org.datanucleus.query.expression.Expression[from.size()];
            Iterator iter = from.iterator();
            int i=0;
            while (iter.hasNext())
            {
                FromImpl frm = (FromImpl)iter.next();
                Set<JoinImpl> frmJoins = frm.getJoins();
                if (frmJoins != null && !frmJoins.isEmpty())
                {
                    Iterator<JoinImpl> frmJoinIter = frmJoins.iterator();
                    while (frmJoinIter.hasNext())
                    {
                        JoinImpl frmJoin = frmJoinIter.next();
                        if (frmJoin.getAlias() != null)
                        {
                            Class frmJoinCls = frmJoin.getType().getJavaType();
                            symtbl.addSymbol(new PropertySymbol(frmJoin.getAlias(), frmJoinCls));
                        }
                    }
                }

                ClassExpression clsExpr = (ClassExpression)frm.getQueryExpression(true);
View Full Code Here

     * @param clr ClassLoader resolver
     * @return The generic compilation
     */
    protected QueryCompilation compile(MetaDataManager mmgr, ClassLoaderResolver clr)
    {
        SymbolTable symtbl = new SymbolTable(clr);
        symtbl.setSymbolResolver(new JDOQLSymbolResolver(mmgr, clr, symtbl, candidateCls, candidateAlias));
        symtbl.addSymbol(new PropertySymbol(candidateAlias, candidateCls));

        org.datanucleus.query.expression.Expression[] resultExprs = null;
        if (result != null && !result.isEmpty())
        {
            resultExprs = new org.datanucleus.query.expression.Expression[result.size()];
View Full Code Here

    tuples.remove(0);
    return getMetaDataManager().getMetaDataForClass(sym.getValueType(), getClassLoaderResolver());
  }

  private OrderExpression createJoinOrderExpression(PrimaryExpression expression) {
    SymbolTable symTable = getSymbolTable();
    PrimaryExpression primaryOrderExpr = new PrimaryExpression(symTable, expression.getTuples());
    return new OrderExpression(symTable, primaryOrderExpr);
  }
View Full Code Here

    tuples.remove(0);
    return getMetaDataManager().getMetaDataForClass(sym.getValueType(), getClassLoaderResolver());
  }

  private OrderExpression createJoinOrderExpression(PrimaryExpression expression) {
    SymbolTable symTable = getSymbolTable();
    PrimaryExpression primaryOrderExpr = new PrimaryExpression(symTable, expression.getTuples());
    return new OrderExpression(symTable, primaryOrderExpr);
  }
View Full Code Here

     * @param options  JPQL parser options
     * @param params  parameters for the parser
     */
    public JPQLPartialCompiler(ExecutionContext ec, QueryCompilation compilation, Map options, Map params) {
        parser = new JPQLParser(options, params);
        this.symbolTable = compilation != null ? compilation.getSymbolTable() : new SymbolTable(ec.getClassLoaderResolver());
    }
View Full Code Here

     */
    protected void checkParameterTypesAgainstCompilation(Map parameterValues)
    {
        if (compilation != null)
        {
            SymbolTable symtbl = compilation.getSymbolTable();
            if (parameterValues != null && parameterValues.size() > 0)
            {
                Iterator it = parameterValues.entrySet().iterator();
                while (it.hasNext())
                {
                    Map.Entry entry = (Map.Entry)it.next();
                    Object paramKey = entry.getKey();
                    Symbol sym = null;
                    if (paramKey instanceof Integer)
                    {
                        ParameterExpression expr = compilation.getParameterExpressionForPosition((Integer)paramKey);
                        if (expr != null)
                        {
                            sym = expr.getSymbol();
                        }
                    }
                    else
                    {
                        String paramName = (String)paramKey;
                        sym = symtbl.getSymbol(paramName);
                    }

                    if (sym != null)
                    {
                        Class expectedValueType = sym.getValueType();
View Full Code Here

     * @return The compiled query
     */
    public QueryCompilation compile(Map parameters, Map subqueryMap)
    {
        parser = new SQLParser(null); // TODO Add options
        symtbl = new SymbolTable(clr);
        symtbl.setSymbolResolver(this);

        // TODO Handle subqueryMap

        compileCandidatesParametersVariables(parameters);
View Full Code Here

TOP

Related Classes of org.datanucleus.query.symbol.SymbolTable

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.