| java.lang.Object org.glasser.util.comparators.BaseComparator
All known Subclasses: org.glasser.util.comparators.MapComparator, org.glasser.util.comparators.MethodComparator, org.glasser.util.comparators.ListComparator, org.glasser.swing.table.ColumnManagerComparator,
BaseComparator | abstract public class BaseComparator implements Comparator,java.io.Serializable(Code) | | This is a base class for Comparators which provides commonly-needed functionality.
Its three fields are:
- nullIsGreater (boolean)
which determines whether a null object
passed to compare() is considered greater than or less than a non-null object.
- sortDescending (boolean)
which determines whether the normal ordering
of two objects will be reversed, resulting in a descending sort.
- nestedComparator (Comparator)
when no order can be established for two objects
(in other words the compare() method would normally return 0) then the two objects
will be passed to the nestedComparator, in an attempt to determine an order. An example might
be a subclass that compared the value of the lastName fields of two Person objects. It could
have a similar comparator that compared the value of the firstName fields as its nestedComparator,
so Person objects with the same lastName would be sorted according to their firstName fields.
The value of these three fields can only be set in the constructor, or by subclasses through
protected setter methods, which allows subclasses to be immutable.
A subclass only needs to implement the template method doCompare(Object, Object), which is
called from within compare(). The compare() method will first handle the cases where
one or both objects are null, and if both objects are non-null, it will pass them to the doCompare()
method. The doCompare() method does not need to concern itself with the possibility of
null arguments or reverse-sorts. If the doCompare() method returns 0 and a nestedComparator
is available, the arguments will be passed to it. If the doCompare() method returns non-zero and
the sortDescending flag is true, the sign of the return value will be flipped before it's
returned to the caller.
|
Constructor Summary | |
protected | BaseComparator() Constructs a BaseComparator instance with default field values. | protected | BaseComparator(boolean nullIsGreater, boolean sortDescending, Comparator nestedComparator) Constructs a BaseComparator instance with the given field values. |
Method Summary | |
final public int | compare(Object o1, Object o2) | protected int | compareForNulls(Object o1, Object o2) This method will establish the ordering for two objects when
one is null and one is non-null, based on the value of this Comparator's
nullIsGreater flag. | abstract protected int | doCompare(Object o1, Object o2) This method is implemented by subclasses, which should know about the types
of the two objects being passed in and how to order them. | protected Comparator | getNestedComparator() Returns the Comparator being used as the nested, or backup comparator,
or null if one hasn't been set. | public boolean | getNullIsGreater() Returns the value of the nullIsGreater flag, which by default
is false. | public boolean | isSortDescending() Returns the value of the sortDescending flag, which by default
is false. | protected void | setNestedComparator(Comparator nestedComparator) | protected void | setNullIsGreater(boolean nullIsGreater) Sets the value of the nullIsGreater field, which determines whether
null objects are considered "greater than" or "less than" non-null objects
for sorting purposes. | protected void | setSortDescending(boolean sortDescending) Sets the value of the sortDescending field. |
nullIsGreater | protected boolean nullIsGreater(Code) | | |
sortDescending | protected boolean sortDescending(Code) | | |
BaseComparator | protected BaseComparator()(Code) | | Constructs a BaseComparator instance with default field values. The resulting
instance is immutable and thread-safe, unless its fields have been exposed
by subclasses.
|
BaseComparator | protected BaseComparator(boolean nullIsGreater, boolean sortDescending, Comparator nestedComparator)(Code) | | Constructs a BaseComparator instance with the given field values. The resulting
instance is immutable and thread-safe, unless its fields have been exposed
by subclasses.
|
compareForNulls | protected int compareForNulls(Object o1, Object o2)(Code) | | This method will establish the ordering for two objects when
one is null and one is non-null, based on the value of this Comparator's
nullIsGreater flag.
0 if both objects are null or both are non-null; if only one objectis null, it is considered "greater than" the non-null object if thenullIsGreater flag is true, and "less than" the non-null object if thenullIsGreater flag is false (the default.) |
doCompare | abstract protected int doCompare(Object o1, Object o2)(Code) | | This method is implemented by subclasses, which should know about the types
of the two objects being passed in and how to order them. This is a template
method which is called from within compare(), and both arguments are guaranteed
to be non-null. Implementations of this method should not be concerned with flipping
the sign of the return value for descending sorts; that task will be handled within this
(the base) class.
|
getNestedComparator | protected Comparator getNestedComparator()(Code) | | Returns the Comparator being used as the nested, or backup comparator,
or null if one hasn't been set. Subclasses
may choose to expose this method publicly, but if the nestedComparator is
mutable, they may be compromising their immutability (and hence their thread safety.)
|
getNullIsGreater | public boolean getNullIsGreater()(Code) | | Returns the value of the nullIsGreater flag, which by default
is false.
|
isSortDescending | public boolean isSortDescending()(Code) | | Returns the value of the sortDescending flag, which by default
is false.
|
setNestedComparator | protected void setNestedComparator(Comparator nestedComparator)(Code) | | Sets a comparator that will be used as a "backup" comparator if this one
is unable to establish an order for two objects (i.e., the compare() method
would return 0.)
|
setNullIsGreater | protected void setNullIsGreater(boolean nullIsGreater)(Code) | | Sets the value of the nullIsGreater field, which determines whether
null objects are considered "greater than" or "less than" non-null objects
for sorting purposes. The default is false.
|
setSortDescending | protected void setSortDescending(boolean sortDescending)(Code) | | Sets the value of the sortDescending field. If true, the sign of the
value of the compare() method is "flipped" before it's returned to
the caller, which will cause collections of objects to be sorted
in reverse order.
|
|
|