org.rhq.enterprise.server.resource.disambiguation
Class DisambiguationPolicy

java.lang.Object
  extended by java.util.AbstractCollection<E>
      extended by java.util.AbstractList<E>
          extended by java.util.ArrayList<DisambiguationPolicy.Level>
              extended by org.rhq.enterprise.server.resource.disambiguation.DisambiguationPolicy
All Implemented Interfaces:
Serializable, Cloneable, Iterable<DisambiguationPolicy.Level>, Collection<DisambiguationPolicy.Level>, List<DisambiguationPolicy.Level>, RandomAccess

public class DisambiguationPolicy
extends ArrayList<DisambiguationPolicy.Level>

A disambiguation policy determines whether two disambiguation reports are still ambiguous or not.

The policy is basically a list of ResourceResolution instances each corresponding to either the resource itself of some of its parent in the hierarchy. Each of the ResourceResolution instances in the list determines how the appropriate part of the report is disambiguated.

Author:
Lukas Krejci
See Also:
Serialized Form

Nested Class Summary
static class DisambiguationPolicy.Level
           
 
Field Summary
 
Fields inherited from class java.util.AbstractList
modCount
 
Constructor Summary
DisambiguationPolicy(DisambiguationPolicy other)
           
DisambiguationPolicy(DisambiguationUpdateStrategy parentsDisambiguationStrategy, List<String> ambiguousTypeNames)
           
 
Method Summary
<T> boolean
areAmbiguous(MutableDisambiguationReport<T> a, MutableDisambiguationReport<T> b)
          Tells whether the last resolution in this policy determines the reports ambiguous.
 List<String> getAmbiguousTypeNames()
           
 DisambiguationPolicy.Level getCurrentLevel()
           
 DisambiguationPolicy getNext()
          If the user of this class determines that this policy can't disambiguate some list of reports, s/he can get the next policy to try by calling this method.
 DisambiguationPolicy getNextRepartitioningPolicy()
           
 DisambiguationUpdateStrategy getParentsUpdateStrategy()
           
static DisambiguationPolicy getUniqueNamePolicy(DisambiguationUpdateStrategy parentsDisambiguationStrategy, List<String> ambiguousTypeNames)
          Creates a "starting" disambiguation policy that is used to try and disambiguate the resources by just their name.
 void setAmbiguousTypeNames(List<String> ambiguousTypeNames)
           
 void setParentsUpdateStrategy(DisambiguationUpdateStrategy parentsUpdateStrategy)
           
 
Methods inherited from class java.util.ArrayList
add, add, addAll, addAll, clear, clone, contains, ensureCapacity, get, indexOf, isEmpty, lastIndexOf, remove, remove, removeRange, set, size, toArray, toArray, trimToSize
 
Methods inherited from class java.util.AbstractList
equals, hashCode, iterator, listIterator, listIterator, subList
 
Methods inherited from class java.util.AbstractCollection
containsAll, removeAll, retainAll, toString
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.util.List
containsAll, equals, hashCode, iterator, listIterator, listIterator, removeAll, retainAll, subList
 

Constructor Detail

DisambiguationPolicy

public DisambiguationPolicy(DisambiguationUpdateStrategy parentsDisambiguationStrategy,
                            List<String> ambiguousTypeNames)

DisambiguationPolicy

public DisambiguationPolicy(DisambiguationPolicy other)
Method Detail

getUniqueNamePolicy

public static DisambiguationPolicy getUniqueNamePolicy(DisambiguationUpdateStrategy parentsDisambiguationStrategy,
                                                       List<String> ambiguousTypeNames)
Creates a "starting" disambiguation policy that is used to try and disambiguate the resources by just their name.

Parameters:
parentsDisambiguationStrategy -
ambiguousTypeNames - the list of ambiguous type names
Returns:
See Also:
DisambiguationPolicy(DisambiguationUpdateStrategy, List), getAmbiguousTypeNames()

getParentsUpdateStrategy

public DisambiguationUpdateStrategy getParentsUpdateStrategy()

setParentsUpdateStrategy

public void setParentsUpdateStrategy(DisambiguationUpdateStrategy parentsUpdateStrategy)

getAmbiguousTypeNames

public List<String> getAmbiguousTypeNames()
Returns:
the list of type names that are defined in multiple plugins. Such type names should be disambiguated no matter if it is needed or not.

setAmbiguousTypeNames

public void setAmbiguousTypeNames(List<String> ambiguousTypeNames)

areAmbiguous

public <T> boolean areAmbiguous(MutableDisambiguationReport<T> a,
                                MutableDisambiguationReport<T> b)
Tells whether the last resolution in this policy determines the reports ambiguous.

Type Parameters:
T -
Parameters:
a -
b -
Returns:

getCurrentLevel

public DisambiguationPolicy.Level getCurrentLevel()
Returns:
the last element in this policy

getNext

public DisambiguationPolicy getNext()
If the user of this class determines that this policy can't disambiguate some list of reports, s/he can get the next policy to try by calling this method.

Returns:
the next policy in "chain" of possible policies

getNextRepartitioningPolicy

public DisambiguationPolicy getNextRepartitioningPolicy()
Returns:
a policy to be used to repartition unique reports using some other criteria or null if the current policy doesn't require repartitioning of unique reports.


Copyright © 2008-2012 Red Hat, Inc.. All Rights Reserved.