I have needed in several occasions some classes to represent and manipulate conditions (typically in a UI so the user builds a query by combining different condition types and then the code can transform that depending on the underlying system to be queried, for example lucene and a db). I searched all over for a reusable set of classes, I am sure this has to be used in many existing places (all the expression languages for starters) but could not find anything easily usable. I ended up coding both times myself, but felt bad about not reusing something I am sure exists.
Typical needs are:
– several operators: and or etc
– variable number of operands
– combining conditions to build expressions
– serializing of expressions
– parsing/formatting of expressions from/to strings
has somebody found something like that?
Take a look at Apache Commons Functor. E.g. UnaryPredicate, UnaryAnd, UnaryOr, etc. The built-in implementations are Serializable, but I don’t know about parsing from strings. Still, I think it’s a very good start towards what you want. Also, take a look at this IBM tutorial based on the library.