...
This class implements the EvaluatorFactory interface. This factory can produce evaluators that can answer true or false to a user meeting any logical combination of attribute values in the passed in IPerson object. It does so be defining one test element, <attribute>, and a logical grouping element, <paren>, and an inverting or negating element, <NOT>that behaves according to a set mode. The <dlm:audience> element using this factory must contain at least one and may contain many of these elements in any combination.
<paren> ELEMENT
Like the <dlm:audience> element this element must contain at least one and may contain many <attribute> , or <parent> , or <NOT> elements. It elements. In fact the implementing class implements the Evaluator interface enabling the implementing class to be passed back from the factory.
The paren element has one optional attribute "operationmode" which can contain one of two three values: "OR", which is also the default if not specified, and "AND", or "NOT". "OR" causes the paren element to evaluate all contained tests and if any of them returns true then it too will return true. "AND" only returns true if all contained tests are true. The <NOT> element "NOT" can be used to negate from one to many contained tests. If more than one is included the <NOT> element performs an "OR" operation is first performed on the contained tests and then inverts the result returning the opposite boolean value.the result is inverted and returned. For a single test its inverse is returned as expected.
<attribute> ELEMENT
The <attribute> element can perform five tests on attributes in the passed in IPerson object. The particular attribute to be tested is indicated in the required "name" attribute. The required "mode" attribute indicates the type of test and can be one of the following: "exists", "equals", "contains", "startsWith", and "endsWith". The value to be compared is indicated by the "value" attribute. The "value" attribute is not required and indeed not used for the "exists" mode.
...