Class MOScopeComparator

  • All Implemented Interfaces:
    Comparator<MOScope>
    Direct Known Subclasses:
    MOScopePriorityComparator


    public class MOScopeComparator
    extends Object
    implements Comparator<MOScope>
    The MOScopeComparator compares two scopes with each other.

    Two scopes are compared by their context (if both are MOContextScope instances) first and then by their lower bound.

    A scope is compared with a query by comparing the scope with the queries scope and then if both are deemed to be equal, the upper bound of the scope is checked. If it is unbounded (upper bound is null, then the scoped is deemed to be greater than the query. Otherwise, the upper bound of the scope is compared with the lower bound of the query. Scope and query are deemed to be equal if both bounds are equal and both are included. Otherwise the scope is deemed to be less than the query.

    Version:
    1.0
    Author:
    Frank Fock
    • Constructor Detail

      • MOScopeComparator

        public MOScopeComparator​()
    • Method Detail

      • compare

        public int compare​(MOScope o1,
                           MOScope o2)
        Compares a scope with another scope or query. See also the class description how comparison is done.
        Specified by:
        compare in interface Comparator<MOScope>
        Parameters:
        o1 - a MOScope instance.
        o2 - a MOScope instance.
        Returns:
        an integer less than zero if o1 is less than o2 and zero if both values are deemed to be equal and a value greater than zero if o1 is greater than o2.
      • isQueryContextMatching

        public static boolean isQueryContextMatching​(MOQuery a,
                                                     MOScope b)
        Indicates whether the given query's context matches the context of the given scope.
        Parameters:
        a - a MOQuery instance.
        b - another MOScope instance.
        Returns:
        true if the query's context is null or if both contexts match or if the context of scope is the empty string.
        Since:
        2.0.2
      • hashCode

        public int hashCode​()
        Overrides:
        hashCode in class Object