Search in sources :

Example 11 with JoinCondition

use of javax.jcr.query.qom.JoinCondition in project jackrabbit by apache.

the class Parser method parseJoinCondition.

private JoinCondition parseJoinCondition() throws RepositoryException {
    boolean identifier = currentTokenType == IDENTIFIER;
    String name = readName();
    JoinCondition c;
    if (identifier && readIf("(")) {
        if ("ISSAMENODE".equalsIgnoreCase(name)) {
            String selector1 = readName();
            read(",");
            String selector2 = readName();
            if (readIf(",")) {
                c = factory.sameNodeJoinCondition(selector1, selector2, readPath());
            } else {
                c = factory.sameNodeJoinCondition(selector1, selector2, ".");
            }
        } else if ("ISCHILDNODE".equalsIgnoreCase(name)) {
            String childSelector = readName();
            read(",");
            c = factory.childNodeJoinCondition(childSelector, readName());
        } else if ("ISDESCENDANTNODE".equalsIgnoreCase(name)) {
            String descendantSelector = readName();
            read(",");
            c = factory.descendantNodeJoinCondition(descendantSelector, readName());
        } else {
            throw getSyntaxError("ISSAMENODE, ISCHILDNODE, or ISDESCENDANTNODE");
        }
        read(")");
        return c;
    } else {
        String selector1 = name;
        read(".");
        String property1 = readName();
        read("=");
        String selector2 = readName();
        read(".");
        return factory.equiJoinCondition(selector1, property1, selector2, readName());
    }
}
Also used : JoinCondition(javax.jcr.query.qom.JoinCondition)

Example 12 with JoinCondition

use of javax.jcr.query.qom.JoinCondition in project jackrabbit by apache.

the class Parser method parseSource.

private Source parseSource() throws RepositoryException {
    Selector selector = parseSelector();
    selectors.add(selector);
    Source source = selector;
    while (true) {
        JoinType type;
        if (readIf("RIGHT")) {
            read("OUTER");
            type = JoinType.RIGHT;
        } else if (readIf("LEFT")) {
            read("OUTER");
            type = JoinType.LEFT;
        } else if (readIf("INNER")) {
            type = JoinType.INNER;
        } else {
            break;
        }
        read("JOIN");
        selector = parseSelector();
        selectors.add(selector);
        read("ON");
        JoinCondition on = parseJoinCondition();
        source = type.join(factory, source, selector, on);
    }
    return source;
}
Also used : JoinType(org.apache.jackrabbit.commons.query.qom.JoinType) Source(javax.jcr.query.qom.Source) Selector(javax.jcr.query.qom.Selector) JoinCondition(javax.jcr.query.qom.JoinCondition)

Example 13 with JoinCondition

use of javax.jcr.query.qom.JoinCondition in project jackrabbit by apache.

the class ChildNodeJoinConditionTest method testRightOuterJoin.

public void testRightOuterJoin() throws RepositoryException {
    JoinCondition c = qf.childNodeJoinCondition(LEFT, RIGHT);
    QueryObjectModel qom = createQuery(QueryObjectModelConstants.JCR_JOIN_TYPE_RIGHT_OUTER, c);
    checkQOM(qom, new Node[][] { { n2, n1 }, { null, n2 } });
}
Also used : QueryObjectModel(javax.jcr.query.qom.QueryObjectModel) JoinCondition(javax.jcr.query.qom.JoinCondition)

Example 14 with JoinCondition

use of javax.jcr.query.qom.JoinCondition in project jackrabbit by apache.

the class EquiJoinConditionTest method testLeftOuterJoin2.

public void testLeftOuterJoin2() throws RepositoryException {
    JoinCondition c = qf.equiJoinCondition(LEFT, propertyName2, RIGHT, propertyName1);
    QueryObjectModel qom = createQuery(QueryObjectModelConstants.JCR_JOIN_TYPE_LEFT_OUTER, c);
    checkQOM(qom, new Node[][] { { n1, null }, { n2, n1 }, { n2, n2 } });
}
Also used : QueryObjectModel(javax.jcr.query.qom.QueryObjectModel) JoinCondition(javax.jcr.query.qom.JoinCondition)

Example 15 with JoinCondition

use of javax.jcr.query.qom.JoinCondition in project jackrabbit by apache.

the class DescendantNodeJoinConditionTest method testRightOuterJoin.

public void testRightOuterJoin() throws RepositoryException {
    JoinCondition c = qf.descendantNodeJoinCondition(LEFT, RIGHT);
    QueryObjectModel qom = createQuery(QueryObjectModelConstants.JCR_JOIN_TYPE_RIGHT_OUTER, c);
    checkQOM(qom, new Node[][] { { n2, n1 }, { null, n2 } });
}
Also used : QueryObjectModel(javax.jcr.query.qom.QueryObjectModel) JoinCondition(javax.jcr.query.qom.JoinCondition)

Aggregations

JoinCondition (javax.jcr.query.qom.JoinCondition)16 QueryObjectModel (javax.jcr.query.qom.QueryObjectModel)13 ArrayList (java.util.ArrayList)2 Node (javax.jcr.Node)2 Selector (javax.jcr.query.qom.Selector)2 ChildNodeJoinCondition (javax.jcr.query.qom.ChildNodeJoinCondition)1 DescendantNodeJoinCondition (javax.jcr.query.qom.DescendantNodeJoinCondition)1 EquiJoinCondition (javax.jcr.query.qom.EquiJoinCondition)1 Join (javax.jcr.query.qom.Join)1 SameNodeJoinCondition (javax.jcr.query.qom.SameNodeJoinCondition)1 Source (javax.jcr.query.qom.Source)1 JoinType (org.apache.jackrabbit.commons.query.qom.JoinType)1