Search in sources :

Example 1 with LogicalNode

use of cz.jirutka.rsql.parser.ast.LogicalNode in project tutorials by eugenp.

the class GenericRsqlSpecBuilder method createSpecification.

public Specifications<T> createSpecification(final LogicalNode logicalNode) {
    final List<Specifications<T>> specs = new ArrayList<Specifications<T>>();
    Specifications<T> temp;
    for (final Node node : logicalNode.getChildren()) {
        temp = createSpecification(node);
        if (temp != null) {
            specs.add(temp);
        }
    }
    Specifications<T> result = specs.get(0);
    if (logicalNode.getOperator() == LogicalOperator.AND) {
        for (int i = 1; i < specs.size(); i++) {
            result = Specifications.where(result).and(specs.get(i));
        }
    } else if (logicalNode.getOperator() == LogicalOperator.OR) {
        for (int i = 1; i < specs.size(); i++) {
            result = Specifications.where(result).or(specs.get(i));
        }
    }
    return result;
}
Also used : Specifications(org.springframework.data.jpa.domain.Specifications) ComparisonNode(cz.jirutka.rsql.parser.ast.ComparisonNode) Node(cz.jirutka.rsql.parser.ast.Node) LogicalNode(cz.jirutka.rsql.parser.ast.LogicalNode) ArrayList(java.util.ArrayList)

Aggregations

ComparisonNode (cz.jirutka.rsql.parser.ast.ComparisonNode)1 LogicalNode (cz.jirutka.rsql.parser.ast.LogicalNode)1 Node (cz.jirutka.rsql.parser.ast.Node)1 ArrayList (java.util.ArrayList)1 Specifications (org.springframework.data.jpa.domain.Specifications)1