public static Specification createSpecification()

in service/src/main/java/org/apache/fineract/cn/accounting/service/internal/repository/specification/LedgerSpecification.java [33:62]


  public static Specification<LedgerEntity> createSpecification(
      final boolean includeSubLedger, final String term, final String type) {
    return (root, query, cb) -> {

      final ArrayList<Predicate> predicates = new ArrayList<>();

      if (!includeSubLedger) {
        predicates.add(
            cb.isNull(root.get("parentLedger"))
        );
      }

      if (term != null) {
        final String likeExpression = "%" + term + "%";

        predicates.add(
            cb.or(
                cb.like(root.get("identifier"), likeExpression),
                cb.like(root.get("name"), likeExpression)
            )
        );
      }

      if (type != null) {
        predicates.add(cb.equal(root.get("type"), type));
      }

      return cb.and(predicates.toArray(new Predicate[predicates.size()]));
    };
  }