@Override public SQLQuery transform(NuxeoPrincipal principal, SQLQuery query) { WhereClause where = query.where; Predicate predicate; if (where == null || where.predicate == null) { predicate = NO_FILE; } else { predicate = new Predicate(NO_FILE, Operator.AND, where.predicate); } return query.withPredicate(predicate); } }
@Override public void visitOrderByClause(OrderByClause node) { inOrderBy = true; super.visitOrderByClause(node); inOrderBy = false; }
protected static String getPredicatePrefix(Predicate predicate) { PrefixInfo info = (PrefixInfo) predicate.getInfo(); return info == null ? "" : info.prefix; }
protected void addFacetFilters(List<Predicate> clauses, FacetFilter facetFilter) { if (facetFilter == null) { return; } for (String mixin : facetFilter.required) { // every facet is required, not just any of them, // so do them one by one Predicate expr = new Predicate(new Reference(NXQL.ECM_MIXINTYPE), Operator.EQ, new StringLiteral(mixin)); clauses.add(expr); } if (!facetFilter.excluded.isEmpty()) { LiteralList list = new LiteralList(); for (String mixin : facetFilter.excluded) { list.add(new StringLiteral(mixin)); } Predicate expr = new Predicate(new Reference(NXQL.ECM_MIXINTYPE), Operator.NOTIN, list); clauses.add(expr); } }
protected SQLQuery addIsNotNullClauses(SQLQuery query, Collection<String> names) { List<Predicate> values = names.stream() .map(name -> new Predicate(new Reference(name), Operator.ISNOTNULL, null)) .collect(toList()); Predicate expr = new Predicate(query.where.predicate, Operator.AND, new MultiExpression(Operator.AND, values)); return query.withPredicate(expr); }
@Override public List<LogEntry> getLogEntriesAfter(long logIdOffset, int limit, String repositoryId, String... eventIds) { QueryBuilder builder = new AuditQueryBuilder().predicate(Predicates.eq(LOG_REPOSITORY_ID, repositoryId)) .and(Predicates.in(LOG_EVENT_ID, eventIds)) .and(Predicates.gte(LOG_ID, logIdOffset)) .order(OrderByExprs.asc(LOG_ID)) .limit(limit); return queryLogs(builder); }
public Object walkBetween(Operand lvalue, Operand rvalue, boolean positive) { LiteralList l = (LiteralList) rvalue; Predicate va = new Predicate(lvalue, Operator.GTEQ, l.get(0)); Predicate vb = new Predicate(lvalue, Operator.LTEQ, l.get(1)); Predicate pred = new Predicate(va, Operator.AND, vb); if (!positive) { pred = new Predicate(pred, Operator.NOT, null); } return walkExpression(pred); }
@Override public ScrollResult<String> scroll(QueryBuilder builder, int batchSize, int keepAliveSeconds) { // as we're using pages to scroll audit, we need to add an order to make results across pages deterministic builder.orders(OrderByExprs.asc(LOG_ID), builder.orders().toArray(new OrderByExpr[0])); String scrollId = cursorService.registerCursorResult( new SQLAuditCursorResult(builder, batchSize, keepAliveSeconds)); return scroll(scrollId); }
@Override public void visitWhereClause(WhereClause node) { if (node != null) { analyzeToplevelPredicates(node.predicate); } simplifyToplevelPredicates(); wherePredicate = new MultiExpression(Operator.AND, toplevelPredicates); super.visitMultiExpression(wherePredicate); }
@Override public void visitSelectClause(SelectClause node) { inSelect = true; super.visitSelectClause(node); inSelect = false; }
protected static int getExpressionCount(Expression expr) { PrefixInfo info = (PrefixInfo) expr.getInfo(); return info == null ? 0 : info.count; }
@Override public SelectClause transform(SelectClause node) { inProjection = true; node = super.transform(node); inProjection = false; return node; }
@Override public void visitQuery(SQLQuery node) { super.visitQuery(node); // intentionally does not set limit or offset in the query }
@Override public void visitOrderByList(OrderByList node) { inOrderBy = true; for (OrderByExpr obe : node) { if (buf.length() != 0) { // we can do this because we generate in an initially empty buffer buf.append(", "); } obe.accept(this); } inOrderBy = false; }
@Override public void visitSelectClause(SelectClause node) { inProjection = true; super.visitSelectClause(node); inProjection = false; }
@Override public void visitOrderByClause(OrderByClause node) { inOrderBy = true; super.visitOrderByClause(node); inOrderBy = false; }
@Override public void visitSelectClause(SelectClause node) { inSelect = true; super.visitSelectClause(node); inSelect = false; }