Class MapFilterVisitor<F>

java.lang.Object
org.forgerock.util.query.MapFilterVisitor<F>
Type Parameters:
F - The type of field description used in parsed QueryFilter objects.
All Implemented Interfaces:
QueryFilterVisitor<Map<String,Object>,Void,F>

public class MapFilterVisitor<F> extends Object implements QueryFilterVisitor<Map<String,Object>,Void,F>
A QueryFilterVisitor that produces a Map representation of the filter tree.

The produced map is constructed according to the following representation:

an and expression
{ "operator" : "and", "subfilters" : [ the subfilters ] }
an or expression
{ "operator" : "or", "subfilters" : [ the subfilters ] }
a not expression
{ "operator" : "not", "subfilter" : the subfilter }
indicates a complex subfilter expression
{ "operator" : "complex", "field" : "/afield", "subfilter" : the subfilter }
a presence expression
{ "operator" : "pr", "field" : "/afield"}
an equals expression
{ "operator" : "eq", "field" : "/afield", "value" : "something"}
a contains expression
{ "operator" : "co", "field" : "/afield", "value" : "something"}
a starts-with expression
{ "operator" : "sw", "field" : "/afield", "value" : "some"}
a less-than expression
{ "operator" : "lt", "field" : "/afield", "value" : "something"}
a less-than-or-equal-to expression
{ "operator" : "le", "field" : "/afield", "value" : "something"}
a greater-than expression
{ "operator" : "gt", "field" : "/afield", "value" : "something"}
a greater-than-or-equal-to expression
{ "operator" : "ge", "field" : "/afield", "value" : "something"}
Notes:
  1. JSON notation used for convenience to illustrate Map-structure.
    • To produce JSON, use new com.fasterxml.jackson.databind.ObjectMapper().writeValueAsString(map);
    • Or wrap with JsonValue:
      new org.forgerock.json.JsonValue(map);
  2. Field values are shown in org.forgerock.json.JsonPointer syntax; actual field representation depends on field type of QueryFilter.
  • Constructor Details

    • MapFilterVisitor

      public MapFilterVisitor()
  • Method Details

    • visitAndFilter

      public Map<String,Object> visitAndFilter(Void parameters, List<QueryFilter<F>> subFilters)
      Visits an and filter.

      Implementation note: for the purposes of matching, an empty sub-filter list should always evaluate to true.

      Specified by:
      visitAndFilter in interface QueryFilterVisitor<Map<String,Object>,Void,F>
      Parameters:
      parameters - A visitor specified parameter.
      subFilters - The unmodifiable list of sub-filters.
      Returns:
      Returns a visitor specified result.
    • visitBooleanLiteralFilter

      public Map<String,Object> visitBooleanLiteralFilter(Void parameters, boolean value)
      Visits a boolean literal filter.
      Specified by:
      visitBooleanLiteralFilter in interface QueryFilterVisitor<Map<String,Object>,Void,F>
      Parameters:
      parameters - A visitor specified parameter.
      value - The boolean literal value.
      Returns:
      Returns a visitor specified result.
    • visitContainsFilter

      public Map<String,Object> visitContainsFilter(Void parameters, F field, Object valueAssertion)
      Visits a contains filter.
      Specified by:
      visitContainsFilter in interface QueryFilterVisitor<Map<String,Object>,Void,F>
      Parameters:
      parameters - A visitor specified parameter.
      field - A definition of the field to be compared.
      valueAssertion - The value assertion.
      Returns:
      Returns a visitor specified result.
    • visitEqualsFilter

      public Map<String,Object> visitEqualsFilter(Void parameters, F field, Object valueAssertion)
      Visits a equality filter.
      Specified by:
      visitEqualsFilter in interface QueryFilterVisitor<Map<String,Object>,Void,F>
      Parameters:
      parameters - A visitor specified parameter.
      field - A definition of the field to be compared.
      valueAssertion - The value assertion.
      Returns:
      Returns a visitor specified result.
    • visitExtendedMatchFilter

      public Map<String,Object> visitExtendedMatchFilter(Void parameters, F field, String operator, Object valueAssertion)
      Visits a comparison filter.
      Specified by:
      visitExtendedMatchFilter in interface QueryFilterVisitor<Map<String,Object>,Void,F>
      Parameters:
      parameters - A visitor specified parameter.
      field - A definition of the field to be compared.
      operator - The operator to use for the comparison, which will not be one of the core operator names.
      valueAssertion - The value assertion.
      Returns:
      Returns a visitor specified result.
    • visitGreaterThanFilter

      public Map<String,Object> visitGreaterThanFilter(Void parameters, F field, Object valueAssertion)
      Visits a greater than filter.
      Specified by:
      visitGreaterThanFilter in interface QueryFilterVisitor<Map<String,Object>,Void,F>
      Parameters:
      parameters - A visitor specified parameter.
      field - A definition of the field to be compared.
      valueAssertion - The value assertion.
      Returns:
      Returns a visitor specified result.
    • visitGreaterThanOrEqualToFilter

      public Map<String,Object> visitGreaterThanOrEqualToFilter(Void parameters, F field, Object valueAssertion)
      Visits a greater than or equal to filter.
      Specified by:
      visitGreaterThanOrEqualToFilter in interface QueryFilterVisitor<Map<String,Object>,Void,F>
      Parameters:
      parameters - A visitor specified parameter.
      field - A definition of the field to be compared.
      valueAssertion - The value assertion.
      Returns:
      Returns a visitor specified result.
    • visitLessThanFilter

      public Map<String,Object> visitLessThanFilter(Void parameters, F field, Object valueAssertion)
      Visits a less than filter.
      Specified by:
      visitLessThanFilter in interface QueryFilterVisitor<Map<String,Object>,Void,F>
      Parameters:
      parameters - A visitor specified parameter.
      field - A definition of the field to be compared.
      valueAssertion - The value assertion.
      Returns:
      Returns a visitor specified result.
    • visitLessThanOrEqualToFilter

      public Map<String,Object> visitLessThanOrEqualToFilter(Void parameters, F field, Object valueAssertion)
      Visits a less than or equal to filter.
      Specified by:
      visitLessThanOrEqualToFilter in interface QueryFilterVisitor<Map<String,Object>,Void,F>
      Parameters:
      parameters - A visitor specified parameter.
      field - A definition of the field to be compared.
      valueAssertion - The value assertion.
      Returns:
      Returns a visitor specified result.
    • visitNotFilter

      public Map<String,Object> visitNotFilter(Void parameters, QueryFilter<F> subFilter)
      Visits a not filter.
      Specified by:
      visitNotFilter in interface QueryFilterVisitor<Map<String,Object>,Void,F>
      Parameters:
      parameters - A visitor specified parameter.
      subFilter - The sub-filter.
      Returns:
      Returns a visitor specified result.
    • visitOrFilter

      public Map<String,Object> visitOrFilter(Void parameters, List<QueryFilter<F>> subFilters)
      Visits an or filter.

      Implementation note: for the purposes of matching, an empty sub-filter list should always evaluate to false.

      Specified by:
      visitOrFilter in interface QueryFilterVisitor<Map<String,Object>,Void,F>
      Parameters:
      parameters - A visitor specified parameter.
      subFilters - The unmodifiable list of sub-filters.
      Returns:
      Returns a visitor specified result.
    • visitPresentFilter

      public Map<String,Object> visitPresentFilter(Void parameters, F field)
      Visits a present filter.
      Specified by:
      visitPresentFilter in interface QueryFilterVisitor<Map<String,Object>,Void,F>
      Parameters:
      parameters - A visitor specified parameter.
      field - A definition of the field to be compared.
      Returns:
      Returns a visitor specified result.
    • visitStartsWithFilter

      public Map<String,Object> visitStartsWithFilter(Void parameters, F field, Object valueAssertion)
      Visits a starts with filter.
      Specified by:
      visitStartsWithFilter in interface QueryFilterVisitor<Map<String,Object>,Void,F>
      Parameters:
      parameters - A visitor specified parameter.
      field - A definition of the field to be compared.
      valueAssertion - The value assertion.
      Returns:
      Returns a visitor specified result.
    • visitComplexFilter

      public Map<String,Object> visitComplexFilter(Void parameters, F field, QueryFilter<F> subFilter)
      Description copied from interface: QueryFilterVisitor
      Visits a complex filter.
      Specified by:
      visitComplexFilter in interface QueryFilterVisitor<Map<String,Object>,Void,F>
      Parameters:
      parameters - A visitor specified parameter.
      field - A definition of the field to be compared.
      subFilter - The subfilter expression to be evaluated on the object @ field.
      Returns:
      Returns a visitor specified result.