Package org.datanucleus.query.symbol

Examples of org.datanucleus.query.symbol.PropertySymbol


            // Load subqueries into symbol table so the compilation knows about them
            Iterator<String> subqueryIter = subqueryMap.keySet().iterator();
            while (subqueryIter.hasNext())
            {
                String subqueryName = subqueryIter.next();
                Symbol sym = new PropertySymbol(subqueryName);
                sym.setType(Symbol.VARIABLE);
                symtbl.addSymbol(sym);
            }
        }

        Expression[] exprFrom = compileFrom();
View Full Code Here


            // Load subqueries into symbol table so the compilation knows about them
            Iterator<String> subqueryIter = subqueryMap.keySet().iterator();
            while (subqueryIter.hasNext())
            {
                String subqueryName = subqueryIter.next();
                Symbol sym = new PropertySymbol(subqueryName);
                sym.setType(Symbol.VARIABLE);
                symtbl.addSymbol(sym);
            }
        }

        Expression[] exprFrom = compileFrom();
View Full Code Here

        {
            // Try with our symbol table
            try
            {
                Class symbolType = symtbl.getType(tuples);
                symbol = new PropertySymbol(getId(), symbolType);
            }
            catch (NucleusUserException nue)
            {
                // Thrown if a field in the primary expression doesn't exist.
            }
        }

        if (symbol == null && symtbl.getParentSymbolTable() != null)
        {
            // Try parent symbol table if present
            try
            {
                Class symbolType = symtbl.getParentSymbolTable().getType(tuples);
                symbol = new PropertySymbol(getId(), symbolType);
            }
            catch (NucleusUserException nue)
            {
                // Thrown if a field in the primary expression doesn't exist.
            }
View Full Code Here

                    }
                }
                if (symtbl.getSymbol(classAlias) == null)
                {
                    // Add symbol for this candidate under its alias
                    symtbl.addSymbol(new PropertySymbol(classAlias, cls));
                }
            }

            Iterator childIter = node[i].getChildNodes().iterator();
            while (childIter.hasNext())
            {
                // Add entries in symbol table for any joined aliases
                Node childNode = (Node)childIter.next();
                if (childNode.getNodeType() == NodeType.OPERATOR)
                {
                    Node joinedNode = childNode.getFirstChild();
                    String joinedAlias = (String)joinedNode.getNodeValue();
                    Symbol joinedSym =
                        (caseSensitiveAliases ? symtbl.getSymbol(joinedAlias) : symtbl.getSymbolIgnoreCase(joinedAlias));
                    if (joinedSym == null)
                    {
                        throw new QueryCompilerSyntaxException("FROM clause has identifier " + joinedNode.getNodeValue() + " but this is unknown");
                    }
                    AbstractClassMetaData joinedCmd = metaDataManager.getMetaDataForClass(joinedSym.getValueType(), clr);
                    Class joinedCls = joinedSym.getValueType();
                    while (joinedNode.getFirstChild() != null)
                    {
                        joinedNode = joinedNode.getFirstChild();
                        String joinedMember = (String)joinedNode.getNodeValue();
                        AbstractMemberMetaData mmd = joinedCmd.getMetaDataForMember(joinedMember);
                        if (mmd == null)
                        {
                            throw new QueryCompilerSyntaxException("FROM clause has reference to " + joinedCmd.getFullClassName() + "." + joinedMember + " but it doesn't exist!");
                        }

                        int relationType = mmd.getRelationType(clr);
                        switch (relationType)
                        {
                            case Relation.ONE_TO_ONE_UNI:
                            case Relation.ONE_TO_ONE_BI:
                            case Relation.MANY_TO_ONE_BI:
                                joinedCls = mmd.getType();
                                joinedCmd = metaDataManager.getMetaDataForClass(joinedCls, clr);
                                break;
                            case Relation.ONE_TO_MANY_UNI:
                            case Relation.ONE_TO_MANY_BI:
                            case Relation.MANY_TO_MANY_BI:
                                if (mmd.hasCollection())
                                {
                                    // TODO Don't currently allow interface field navigation
                                    joinedCmd = mmd.getCollection().getElementClassMetaData(clr, metaDataManager);
                                    joinedCls = clr.classForName(joinedCmd.getFullClassName());
                                }
                                else if (mmd.hasArray())
                                {
                                    // TODO Don't currently allow interface field navigation
                                    joinedCmd = mmd.getArray().getElementClassMetaData(clr, metaDataManager);
                                    joinedCls = clr.classForName(joinedCmd.getFullClassName());
                                }
                                break;
                            default:
                                break;
                        }
                    }

                    Node aliasNode = childNode.getNextChild();
                    if (aliasNode.getNodeType() == NodeType.NAME)
                    {
                        symtbl.addSymbol(new PropertySymbol((String)aliasNode.getNodeValue(), joinedCls));
                    }
                }
            }

            boolean classIsExpression = false;
View Full Code Here

            if (parentCompiler != null && parentCompiler.candidateAlias.equals(candidateAlias))
            {
                candidateAliasOrig = candidateAlias;
                candidateAlias = "sub_" + candidateAlias;
            }
            PropertySymbol symbol = new PropertySymbol(candidateAlias, candidateClass);
            symtbl.addSymbol(symbol);
        }
    }
View Full Code Here

                    varSym.setValueType(nodeCls);
                }
            }
            else
            {
                PropertySymbol sym = new PropertySymbol(varName, nodeCls);
                sym.setType(Symbol.VARIABLE);
                symtbl.addSymbol(sym);
            }
        }
    }
View Full Code Here

            {
                // TODO Update the type ?
            }
            else
            {
                PropertySymbol sym = new PropertySymbol(paramName, nodeCls);
                sym.setType(Symbol.PARAMETER);
                symtbl.addSymbol(sym);
            }
        }
    }
View Full Code Here

                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

     */
    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

                     */
                    AbstractMemberMetaData mmd = acmd.getMetaDataForMember(t.get(t.size() - 1));
                    AbstractClassMetaData cmd = PersistenceUtils.getMemberElementClassMetaData(mmd,
                                                                    forceQuery.getExecutionContext().getClassLoaderResolver(),
                                                                    forceQuery.getExecutionContext().getMetaDataManager());
                    PropertySymbol ps =
                        new PropertySymbol(expr.getAlias(),
                            forceQuery.getExecutionContext().getClassLoaderResolver().classForName(cmd.getFullClassName()));
                    queryCompilation.getSymbolTable().removeSymbol(ps);
                    queryCompilation.getSymbolTable().addSymbol(ps);
                }
            }
View Full Code Here

TOP

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

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.