Nested ands and ors in Reactor's OO queries

Submitted by Falken on
Or, to put it another way, how can I put brackets in the where clause of Reactor's query ?
(Reactor ? That's a framework for ColdFusion that transparently generates a variety of objects which can be used to interact with a variety of database systems.)

So, I want to be able to say in my query:
        where
        ( a or b or c)
        and
        ( x or y )
but Reactor flattens this to:
        where  
        a or b or c
        and
        x or y
which is a totally different thing.
Gah.

So, what to do ? Make use of Reactor's Where.addWhere() of course !

My code might start out looking like:
    q.getWhere().setMode('Or');
    q.getWhere().isEqual('cases','clientCode',arguments.clientID3);
    q.getWhere().isEqual('cases','clientCode',arguments.clientID2);
    q.getWhere().isEqual('cases','clientCode',arguments.clientID1);
    q.getWhere().setMode('And');
    q.getWhere().isLike('cases','debtorName',searchTerms.debtorname);
    q.getWhere().setMode('Or');
    q.getWhere().isLike('cases','debtorName2',searchTerms.debtorname);

This just needs a few changes to construct seperate where's for each part inside brackets:
    w2=gw.createQuery();
    w2.getWhere().setMode('Or');
    w2.getWhere().isEqual('cases','clientCode',arguments.clientID3);
    w2.getWhere().isEqual('cases','clientCode',arguments.clientID2);
    w2.getWhere().isEqual('cases','clientCode',arguments.clientID1);
    q.getWhere().addWhere(w2.getWhere());
    w2=gw.createQuery();
    w2.getWhere().isLike('cases','debtorName',searchTerms.debtorname);
    w2.getWhere().setMode('Or');
    w2.getWhere().isLike('cases','debtorName2',searchTerms.debtorname);
    q.getWhere().addWhere(w2.getWhere());
 
Sections