QueryFilter#

com.zitlab.palmyra.store.QueryFilter

Overview#

The compiled filter the framework hands to the SQL layer — implements Filter. Handlers receive it in applyQueryFilter (or applyFilter) to inject additional conditions, fields, joins, ordering, or pagination before the SELECT is built.

Backed internally by ComboCondition for WHERE clauses, FieldList for projected fields, OrderList for ORDER BY, and a map of JoinClause entries for joins.

Methods#

Fields / projection

Method Signature
getFields / setFields FieldList getFields() · void setFields(FieldList) · void setFields(String... values)
addFields void addFields(String... values)
addParentFields void addParentFields(String... values)
setDistinctFields void setDistinctFields(String... fields)
setFieldsAsString void setFieldsAsString(List<String> fieldList)
isDistinct / setDistinct boolean isDistinct() · void setDistinct(boolean)
getCustFields / setCustomFields Map<AggregationClause, String> getCustFields() · void setCustomFields(AggregationClause, String)

Conditions

Method Signature
addCondition void addCondition(Condition condition) · void addCondition(List<Condition> condition)
getCondition ComboCondition getCondition()
hasConditions boolean hasConditions()
setCriteria / sqlExpression void setCriteria(String addlCriteria) · void sqlExpression(String addlCriteria)
getAddlCriteria String getAddlCriteria()

Joins

Method Signature
addJoinClause void addJoinClause(JoinClause jc)
getJoinClauses Map<String, JoinClause> getJoinClauses()
getAddlJoin / setAddlJoin String getAddlJoin() · void setAddlJoin(String)
isIncludeReference / setIncludeReference boolean isIncludeReference() · void setIncludeReference(boolean)

Ordering, grouping, pagination

Method Signature
getOrderBy / setOrderBy OrderList getOrderBy() · void setOrderBy(OrderList)
addOrderAsc / addOrderDesc void addOrderAsc(String field) · void addOrderAsc(String... fields) · void addOrderDesc(String field) · void addOrderDesc(String... fields)
hasOrderBy boolean hasOrderBy() · boolean hasOrderBy(String field)
removeOrder void removeOrder(String field)
getGroupBy / setGroupBy FieldList getGroupBy() · void setGroupBy(FieldList) · void setGroupBy(String... fields)
getOffset / setOffset int getOffset() · void setOffset(int)
getLimit / setLimit int getLimit() · void setLimit(int)
setStart / setEnd void setStart(int start) · void setEnd(int end)
isTotal / setTotal boolean isTotal() · void setTotal(boolean)

Metadata

Method Signature
getTupleType / setTupleType TupleType getTupleType() · void setTupleType(TupleType)

Example#

@Override
public QueryFilter applyQueryFilter(QueryFilter filter, HandlerContext ctx) {
    // restrict projection to an audit-safe subset
    filter.setFields("id", "loginName", "status", "createdAt");

    // extend WHERE with SQL-expression style additions
    filter.sqlExpression("status <> 'ARCHIVED'");

    // default order if the caller didn't ask
    if (!filter.hasOrderBy()) {
        filter.addOrderDesc("createdAt");
    }

    // page size sanity cap
    if (filter.getLimit() == 0 || filter.getLimit() > 500) {
        filter.setLimit(500);
    }
    return filter;
}