Package org.jpox.store.mapped.expression

Examples of org.jpox.store.mapped.expression.ScalarExpression


                    (relationType == Relation.ONE_TO_ONE_BI && leftMmd.getMappedBy() == null) ||
                    (relationType == Relation.MANY_TO_ONE_BI &&
                     (leftMmd.getJoinMetaData() == null && rightMmd.getJoinMetaData() == null)))
                {
                    // 1-1/N-1 with FK here
                    ScalarExpression leftExpr = leftTblExpr.newFieldExpression(tokens[i]);
                    ScalarExpression rightExpr = rightTable.getIDMapping().newScalarExpression(qs, rightTblExpr);
                    if (i == 1)
                    {
                        // And condition to outer candidate
                        qs.andCondition(leftExpr.eq(rightExpr), true);
                    }
                    else
                    {
                        // Inner join to table
                        qs.innerJoin(rightExpr, leftExpr, leftTblExpr, true, true);
                    }
                }
                else if (relationType == Relation.ONE_TO_ONE_BI && leftMmd.getMappedBy() != null)
                {
                    // 1-1 with FK on other side
                    ScalarExpression leftExpr = leftTable.getIDMapping().newScalarExpression(qs, leftTblExpr);
                    ScalarExpression rightExpr = rightTblExpr.newFieldExpression(rightMmd.getName());
                    if (i == 1)
                    {
                        // And condition to outer candidate
                        qs.andCondition(leftExpr.eq(rightExpr), true);
                    }
                    else
                    {
                        // Inner join to table
                        qs.innerJoin(rightExpr, leftExpr, leftTblExpr, true, true);
                    }
                }
                else if ((relationType == Relation.ONE_TO_MANY_UNI && leftMmd.getJoinMetaData() == null) ||
                    (relationType == Relation.ONE_TO_MANY_BI &&
                     (leftMmd.getJoinMetaData() == null && rightMmd.getJoinMetaData() == null)))
                {
                    // 1-N FK with FK on other side
                    ScalarExpression leftExpr = leftTable.getIDMapping().newScalarExpression(qs, leftTblExpr);
                    ScalarExpression rightExpr = rightTblExpr.newFieldExpression(rightMmd.getName());
                    if (i == 1)
                    {
                        // And condition to outer candidate
                        qs.andCondition(leftExpr.eq(rightExpr), true);
                    }
                    else
                    {
                        // Inner join to table
                        qs.innerJoin(rightExpr, leftExpr, leftTblExpr, true, true);
                    }
                }
                else if (relationType == Relation.ONE_TO_MANY_UNI && leftMmd.getJoinMetaData() != null)
                {
                    // 1-N uni JoinTable
                    ScalarExpression leftExpr = leftTable.getIDMapping().newScalarExpression(qs, leftTblExpr);
                    ScalarExpression rightExpr = rightTable.getIDMapping().newScalarExpression(qs, rightTblExpr);
                    ScalarExpression leftCentreExpr = null;
                    ScalarExpression rightCentreExpr = null;
                    LogicSetExpression joinTblExpr = null;
                    if (leftMmd.hasCollection())
                    {
                        CollectionTable joinTbl = (CollectionTable)storeMgr.getDatastoreContainerObject(leftMmd);
                        DatastoreIdentifier joinTblAlias = storeMgr.getIdentifierFactory().newIdentifier(
                            IdentifierFactory.TABLE, leftAlias + "." + rightAlias);
                        joinTblExpr = qs.newTableExpression(joinTbl, joinTblAlias);
                        leftCentreExpr = joinTbl.getOwnerMapping().newScalarExpression(qs, joinTblExpr);
                        rightCentreExpr = joinTbl.getElementMapping().newScalarExpression(qs, joinTblExpr);
                    }
                    else if (leftMmd.hasMap())
                    {
                        MapTable joinTbl = (MapTable)storeMgr.getDatastoreContainerObject(leftMmd);
                        DatastoreIdentifier joinTblAlias = storeMgr.getIdentifierFactory().newIdentifier(
                            IdentifierFactory.TABLE, leftAlias + "." + rightAlias);
                        joinTblExpr = qs.newTableExpression(joinTbl, joinTblAlias);
                        leftCentreExpr = joinTbl.getOwnerMapping().newScalarExpression(qs, joinTblExpr);
                        rightCentreExpr = joinTbl.getValueMapping().newScalarExpression(qs, joinTblExpr);
                    }

                    if (i == 1)
                    {
                        // And condition to outer candidate
                        qs.andCondition(leftExpr.eq(leftCentreExpr), true);
                    }
                    else
                    {
                        // Inner join to table
                        qs.innerJoin(leftCentreExpr, leftExpr, leftTblExpr, true, true);
                    }
                    qs.innerJoin(rightExpr, rightCentreExpr, joinTblExpr, true, true);
                }
                else if ((relationType == Relation.ONE_TO_MANY_BI &&
                    (leftMmd.getJoinMetaData() != null || rightMmd.getJoinMetaData() != null)) ||
                    (relationType == Relation.MANY_TO_ONE_BI &&
                     (leftMmd.getJoinMetaData() != null || rightMmd.getJoinMetaData() != null)) ||
                     relationType == Relation.MANY_TO_MANY_BI)
                {
                    // 1-N/N-1 bi JoinTable
                    ScalarExpression leftExpr = leftTable.getIDMapping().newScalarExpression(qs, leftTblExpr);
                    ScalarExpression rightExpr = rightTable.getIDMapping().newScalarExpression(qs, rightTblExpr);
                    ScalarExpression leftCentreExpr = null;
                    ScalarExpression rightCentreExpr = null;
                    LogicSetExpression joinTblExpr = null;
                    if (leftMmd.hasCollection() || rightMmd.hasCollection())
                    {
                        CollectionTable joinTbl = (CollectionTable)storeMgr.getDatastoreContainerObject(leftMmd);
                        DatastoreIdentifier joinTblAlias = storeMgr.getIdentifierFactory().newIdentifier(
View Full Code Here


     */
    protected void compileFilter(QueryExpression qs, String filter)
    {
        if (filter != null && filter.length() > 0)
        {
            ScalarExpression expr = compileExpressionFromString(filter);
            if (!(expr instanceof BooleanExpression))
            {
                throw new JPOXUserException(LOCALISER.msg("021050", filter));              
            }
            if (qs != null)
View Full Code Here

        String resultClassName = query.getResultClassName();
        if (resultClass == null && resultClassName != null)
        {
            // Resolve any result class
            ScalarExpression expr = compileExpressionFromString(resultClassName);
            resultClass = ((ClassExpression)expr).getCls();
        }

        if (resultClass != null && resultExprs != null)
        {
View Full Code Here

     */
    protected void compileHaving(QueryExpression qs, String havingClause)
    {
        if (havingClause != null && havingClause.length() > 0)
        {
            ScalarExpression havingExpr = compileExpressionFromString(havingClause);
            if (qs != null)
            {
                if (!(havingExpr instanceof BooleanExpression))
                {
                    throw new JPOXUserException(LOCALISER.msg("021051", havingExpr));
View Full Code Here

     * @param name Name of the variable
     * @param expr The expression
     */
    public void bindVariable(String name, ScalarExpression expr)
    {
        ScalarExpression previousExpr = (ScalarExpression)expressionsByVariableName.put(name, expr);
        if (previousExpr != null)
        {
            throw new JPOXException(LOCALISER.msg("021060",name,expr,previousExpr)).setFatal();
        }
    }
View Full Code Here

     */
    protected abstract ScalarExpression compileExpression();

    protected ScalarExpression compileAdditiveExpression()
    {
        ScalarExpression expr = compileMultiplicativeExpression();

        for (;;)
        {
            if (p.parseChar('+'))
            {
                expr = expr.add(compileMultiplicativeExpression());
            }
            else if (p.parseChar('-'))
            {
                expr = expr.sub(compileMultiplicativeExpression());
            }
            else
            {
                break;
            }
View Full Code Here

        return expr;
    }

    protected ScalarExpression compileMultiplicativeExpression()
    {
        ScalarExpression expr = compileUnaryExpression();

        for (;;)
        {
            if (p.parseChar('*'))
            {
                expr = expr.mul(compileUnaryExpression());
            }
            else if (p.parseChar('/'))
            {
                expr = expr.div(compileUnaryExpression());
            }
            else if (p.parseChar('%'))
            {
                expr = expr.mod(compileUnaryExpression());
            }
            else
            {
                break;
            }
View Full Code Here

        return expr;
    }

    protected ScalarExpression compileUnaryExpression()
    {
        ScalarExpression expr;
        if (p.parseString("++"))
        {
            throw new JPOXUserException("Unsupported operator '++'");
        }
        else if (p.parseString("--"))
View Full Code Here

        return expr;
    }

    protected ScalarExpression compileUnaryExpressionNotPlusMinus()
    {
        ScalarExpression expr;

        if (p.parseChar('~'))
        {
            expr = compileUnaryExpression().com();
        }
View Full Code Here

        {
            if (!p.parseChar(')'))
            {
                do
                {
                    ScalarExpression argExpr = compileExpression();
                    args.add(argExpr);
                    fieldExpressions.add(argExpr); // Add to field expressions list
                } while (p.parseChar(','));
                if (!p.parseChar(')'))
                {
View Full Code Here

TOP

Related Classes of org.jpox.store.mapped.expression.ScalarExpression

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.