Class SimpleAssignmentStrategy.AnalysisContext.StrengthComparator

  • All Implemented Interfaces:
    Comparator
    Enclosing class:
    SimpleAssignmentStrategy.AnalysisContext

    public class SimpleAssignmentStrategy.AnalysisContext.StrengthComparator
    extends Object
    implements Comparator
    StrengthComparator is an Comparator that can be used to compare two Member objects based on their "distance" from a given set of members (as represented by an Ownership object). Member distances are expressed with the granularity of "machine", "rack", and "site".

    A member is ordered "lower" than another member if it has a larger combined distance from the reference members (ownership) (i.e. it is "stronger"). Members with equivalent distances are ordered arbitrarily.

    Note: This comparator does not define an ordering that is "consistent with equals". If used in a context requiring such a natural ordering, it should be chained with comparator that does provide a natural ordering.

    • Field Detail

      • m_owners

        protected Ownership m_owners
        The ownership.
    • Constructor Detail

      • StrengthComparator

        public StrengthComparator​(Ownership owners)
        Construct a StrengthComparator for the specified reference ownership.
        Parameters:
        owners - the ownership, from which to determine member strength
    • Method Detail

      • getOwnership

        public Ownership getOwnership()
        Return the ownership to use in comparing member strength.
        Returns:
        the ownership
      • getDistance

        protected int getDistance​(Member member)
        Return the "distance" of the specified member from the reference ownership. The distance reflects granularities of "machine", "rack" and "site", and in the case of multiple-backups, reflects combined distances to each backup.
        Parameters:
        member - the member to return the distance for
        Returns:
        the "distance"
      • getDistance

        protected int getDistance​(Member member1,
                                  Member member2)
        Return the "distance" between the specified members.
        Parameters:
        member1 - the first member
        member2 - the second member
        Returns:
        the "distance" between the specified members