如何使用“NOT”条件创建picketlink identityquery?

时间:2016-10-04 13:56:11

标签: java picketlink

我想查询我的身份并在一个包含排序,分页和过滤选项的表格中显示它。 一切都好,但我没有找到引入NOT条件的方法。

在代码中,T变量是org.picketlink.idm.model.IdentityType,identityClass是真正的类。

IdentityQueryBuilder queryBuilder = getIdentityManager().getQueryBuilder();

IdentityQuery<T> query = queryBuilder.createIdentityQuery(identityClass);
List<Condition> condizioni = new ArrayList<>();
conditions.addAll(conditionFromFilterClausole(queryBuilder, ffc));
Condition c[] = condizioni.toArray(new Condition[condizioni.size()]);
query.where( c);
...

在方法conditionFromFilterClausole中我将一些对象(FilterClause)转换为身份查询的条件。 FilterClause.field是列名,FilterClause.operator是条件的类型,FilterClause.value是要使用的值

for(FilterClause f : lf){
    QueryParameter qp = new org.picketlink.idm.query.AttributeParameter(f.getField());
        switch(f.operator){
            case EQUAL:
                conditions.add(qb.equal(qp, f.value));
                break;
            case CONTAINS :
                conditions.add(qb.like(qp, (String) f.value));
                break;
            case ENDSWITH : 
                ???
            case STARTSWITH : 
                ???
                break;
            case GREATEREQUAL : 
                conditions.add( qb.greaterThanOrEqualTo(qp, (String) f.value));
                break;
            case GREATERTHEN : 
                conditions.add(qb.greaterThan(qp, (String) f.value));
                break;
            case LESSEQUAL: 
                conditions.add( qb.lessThanOrEqualTo(qp, (String) f.value));
                break;
            case LESSTHEN: 
                conditions.add(qb.lessThan(qp, (String) f.value));
                break;
            case IN: 
                conditions.add(qb.in(qp, f.value));
                break;
            case NOTIN: 
            case NOTCONTAINS:
            case NOTEQUAL:
                ???
                break;
        }

我想念为“STARTSWITH / ENDSWITH”和所有其他条件创建条件的方法,例如经典不相等(所有情况都是???)。 QueryBuilder没有那些方法。

0 个答案:

没有答案