Class 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 Detail

      • MapFilterVisitor

        public MapFilterVisitor()
    • Method Detail

      • 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.
      • 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.
      • 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.