Search in sources :

Example 1 with NodesFinder

use of com.haulmont.cuba.core.sys.jpql.transform.NodesFinder in project cuba by cuba-platform.

the class QueryTreeAnalyzer method findAllConditions.

public List<SimpleConditionNode> findAllConditions() {
    NodesFinder<SimpleConditionNode> nodesFinder = new NodesFinder<>(SimpleConditionNode.class);
    TreeVisitor treeVisitor = new TreeVisitor();
    treeVisitor.visit(tree, nodesFinder);
    return nodesFinder.getFoundNodes();
}
Also used : TreeVisitor(org.antlr.runtime.tree.TreeVisitor) NodesFinder(com.haulmont.cuba.core.sys.jpql.transform.NodesFinder)

Example 2 with NodesFinder

use of com.haulmont.cuba.core.sys.jpql.transform.NodesFinder in project cuba by cuba-platform.

the class QueryTreeAnalyzer method hasJoins.

public boolean hasJoins() {
    CommonTree sourceNode = (CommonTree) tree.getFirstChildWithType(JPA2Lexer.T_SOURCES);
    List<SelectionSourceNode> selectionSourceNodes = getChildrenByClass(sourceNode, SelectionSourceNode.class);
    if (selectionSourceNodes.size() > 1) {
        return true;
    } else if (selectionSourceNodes.size() == 1) {
        NodesFinder<JoinVariableNode> nodesFinder = new NodesFinder<>(JoinVariableNode.class);
        TreeVisitor treeVisitor = new TreeVisitor();
        treeVisitor.visit(tree, nodesFinder);
        return !nodesFinder.getFoundNodes().isEmpty();
    } else {
        return false;
    }
}
Also used : TreeVisitor(org.antlr.runtime.tree.TreeVisitor) NodesFinder(com.haulmont.cuba.core.sys.jpql.transform.NodesFinder) CommonTree(org.antlr.runtime.tree.CommonTree)

Aggregations

NodesFinder (com.haulmont.cuba.core.sys.jpql.transform.NodesFinder)2 TreeVisitor (org.antlr.runtime.tree.TreeVisitor)2 CommonTree (org.antlr.runtime.tree.CommonTree)1