Hi,

I’m wondering the implementation create a tree of the expression for example:

Filter = (&(name=davi*)(age>=30)(o=Some company))

Node representation:

Root operation AND
   -> leaf: operation = , key: name, value: davi*
  -> leaf: operation >= , key: age, value: 30
  -> leaf: operation = , key: o, value: Some company

Then I would like to iterate over ExprNode content and create a Mongo’s filter 
based on the LDAP Style search...

I figured out that classes like EqualityNode has attribute name 
(getAttribute()) and value (getValue()). However I couldn’t figure out how to 
iterate over ExprNode content.

I appreciate any advice.

Cheers,

Davi

> On 28 Oct 2019, at 11:20, Emmanuel Lécharny <[email protected]> wrote:
> 
> Hi,
> 
> On 28/10/2019 13:12, Davi Baldin Tavares wrote:
>> Hello,
>> 
>> I would like to use Apache’s FilterParser to parser RFC style queries.
>> 
>> However, digging into your APIs, I couldn’t figure out how to navigate under 
>> the parsed filter structure. My goal is to iterate over parser attributes 
>> and construct a MongoDB’s filter object.
>> 
>> import org.apache.directory.shared.ldap.filter.FilterParser;
>> final ExprNode filter = FilterParser.parse(“(name=Davi)”);
>> 
>> Would you have an example of iterating over the parsed filter?
> 
> 
> Not sure what you mean by 'iterating over the parsed filter'.
> 
> In any case, the parse() method returns a ExprNode instance, which depends on 
> the kind of filter you just parsed.  You have 2 big classes of Nodes :
> 
> - branch nodes (&, |, !), which contains sub-nodes
> 
> - leaf nodes ( =*, <=, >=, =, ~=, substring and extensible nodes), which are 
> final nodes.
> 
> You can check the type of nodes you are dealing with using the 
> ExprNode.isLeaf(), then the simlplest way to know which kind of node is to 
> use instanceof.
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
> 

Reply via email to