CoherenceTM v3.3
Copyright© 2000-2007 by Oracle Corporation

com.tangosol.util.comparator
Class ChainedComparator

java.lang.Object
  extended by com.tangosol.util.Base
      extended by com.tangosol.util.comparator.ChainedComparator
All Implemented Interfaces:
ExternalizableLite, PortableObject, EntryAwareComparator, QueryMapComparator, Serializable, Comparator

public class ChainedComparator
extends Base
implements Comparator, QueryMapComparator, EntryAwareComparator, Serializable, ExternalizableLite, PortableObject

Composite comparator implementation based on a collection of comparators. The comparators in the array assumed to be sorted according to their priorities; only in a case when the n-th comparator cannot determine the order of the passed objects:

   aComparator[n].compare(o1, o2) == 0
 
the (n+1)-th comparator will be applied to calculate the value.

Author:
gg 2002.11.14

Field Summary
protected  Comparator[] m_aComparator
          The Comparator array.
 
Constructor Summary
ChainedComparator()
          Default constructor (for ExternalizableLite and PortableObject).
ChainedComparator(Comparator[] aComparator)
          Construct a ChainedComparator.
 
Method Summary
 int compare(Object o1, Object o2)
          Compares its two arguments for order.
 int compareEntries(QueryMap.Entry entry1, QueryMap.Entry entry2)
          Compare two entries based on the rules specified by Comparator.
 boolean equals(Object o)
          Determine if two ChainedComparator objects are equal.
 Comparator[] getComparators()
          Obtain the underlying Comparator array.
 int hashCode()
          Return the hash code for this comparator.
 boolean isKeyComparator()
          Specifies whether this comparator expects to compare keys or values.
 void readExternal(DataInput in)
          Restore the contents of this object by loading the object's state from the passed DataInput object.
 void readExternal(PofReader in)
          Restore the contents of a user type instance by reading its state using the specified PofReader object.
 String toString()
          Return a human-readable description for this ChainedComparator.
 void writeExternal(DataOutput out)
          Save the contents of this object by storing the object's state into the passed DataOutput object.
 void writeExternal(PofWriter out)
          Save the contents of a POF user type instance by writing its state using the specified PofWriter object.
 

Field Detail

m_aComparator

protected Comparator[] m_aComparator
The Comparator array.

Constructor Detail

ChainedComparator

public ChainedComparator()
Default constructor (for ExternalizableLite and PortableObject).


ChainedComparator

public ChainedComparator(Comparator[] aComparator)
Construct a ChainedComparator.

Parameters:
aComparator - the comparator array
Method Detail

compare

public int compare(Object o1,
                   Object o2)
Compares its two arguments for order. Returns a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second.

Specified by:
compare in interface Comparator
Parameters:
o1 - the first object to be compared
o2 - the second object to be compared
Returns:
a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second
Throws:
ClassCastException - if the arguments' types prevent them from being compared by this Comparator.

compareEntries

public int compareEntries(QueryMap.Entry entry1,
                          QueryMap.Entry entry2)
Compare two entries based on the rules specified by Comparator.

This implementation simply passes on this invocation to the wrapped Comparator objects if they too implement this interface, or invokes their default compare method passing the values extracted from the passed entries.

Specified by:
compareEntries in interface QueryMapComparator
Parameters:
entry1 - the first entry to compare values from; read-only
entry2 - the second entry to compare values from; read-only
Returns:
a negative integer, zero, or a positive integer as the first entry denotes a value that is is less than, equal to, or greater than the value denoted by the second entry

isKeyComparator

public boolean isKeyComparator()
Specifies whether this comparator expects to compare keys or values.

Specified by:
isKeyComparator in interface EntryAwareComparator
Returns:
true iff all the underlying comparators implement the EntryAwareComparator interface and all isKeyComparator() calls return true

toString

public String toString()
Return a human-readable description for this ChainedComparator.

Returns:
a String description of the ChainedComparator

equals

public boolean equals(Object o)
Determine if two ChainedComparator objects are equal.

Specified by:
equals in interface Comparator
Parameters:
o - the other comparator
Returns:
true if the passed object is equal to this ChainedComparator

hashCode

public int hashCode()
Return the hash code for this comparator.

Returns:
the hash code value for this comparator

getComparators

public Comparator[] getComparators()
Obtain the underlying Comparator array.

Returns:
the Comparator array

readExternal

public void readExternal(DataInput in)
                  throws IOException
Restore the contents of this object by loading the object's state from the passed DataInput object.

Specified by:
readExternal in interface ExternalizableLite
Parameters:
in - the DataInput stream to read data from in order to restore the state of this object
Throws:
IOException - if an I/O exception occurs
NotActiveException - if the object is not in its initial state, and therefore cannot be deserialized into

writeExternal

public void writeExternal(DataOutput out)
                   throws IOException
Save the contents of this object by storing the object's state into the passed DataOutput object.

Specified by:
writeExternal in interface ExternalizableLite
Parameters:
out - the DataOutput stream to write the state of this object to
Throws:
IOException - if an I/O exception occurs

readExternal

public void readExternal(PofReader in)
                  throws IOException
Restore the contents of a user type instance by reading its state using the specified PofReader object.

Specified by:
readExternal in interface PortableObject
Parameters:
in - the PofReader from which to read the object's state
Throws:
IOException - if an I/O error occurs

writeExternal

public void writeExternal(PofWriter out)
                   throws IOException
Save the contents of a POF user type instance by writing its state using the specified PofWriter object.

Specified by:
writeExternal in interface PortableObject
Parameters:
out - the PofWriter to which to write the object's state
Throws:
IOException - if an I/O error occurs

CoherenceTM v3.3
Copyright© 2000-2007 by Oracle Corporation