org.apache.commons.beanutils

Class BeanComparator

Implemented Interfaces:
Comparator, Serializable

public class BeanComparator
extends java.lang.Object
implements Comparator, Serializable

This comparator compares two beans by the specified bean property. It is also possible to compare beans based on nested, indexed, combined, mapped bean properties. Please see the PropertyUtilsBean documentation for all property name possibilities.

Note: The BeanComparator passes the values of the specified bean property to a ComparableComparator, if no comparator is specified in the constructor. If you are comparing two beans based on a property that could contain "null" values, a suitable Comparator or ComparatorChain should be supplied in the constructor.

Authors:
Eric Pugh
Tim O'Brien

Field Summary

private Comparator
comparator
private String
property

Constructor Summary

BeanComparator()
Constructs a Bean Comparator without a property set.
BeanComparator(String property)
Constructs a property-based comparator for beans.
BeanComparator(String property, Comparator comparator)
Constructs a property-based comparator for beans.

Method Summary

int
compare(Object o1, Object o2)
Compare two JavaBeans by their shared property.
boolean
equals(Object o)
Two BeanComparator's are equals if and only if the wrapped comparators and the property names to be compared are equal.
Comparator
getComparator()
Gets the Comparator being used to compare beans.
String
getProperty()
Gets the property attribute of the BeanComparator
int
hashCode()
Hashcode compatible with equals.
void
setProperty(String property)
Sets the method to be called to compare two JavaBeans

Field Details

comparator

private Comparator comparator

property

private String property

Constructor Details

BeanComparator

public BeanComparator()

BeanComparator

public BeanComparator(String property)
Constructs a property-based comparator for beans. This compares two beans by the property specified in the property parameter. This constructor creates a BeanComparator that uses a ComparableComparator to compare the property values.

Passing "null" to this constructor will cause the BeanComparator to compare objects based on natural order, that is java.lang.Comparable.

Parameters:
property - String Name of a bean property, which may contain the name of a simple, nested, indexed, mapped, or combined property. See PropertyUtilsBean for property query language syntax. If the property passed in is null then the actual objects will be compared

BeanComparator

public BeanComparator(String property,
                      Comparator comparator)
Constructs a property-based comparator for beans. This constructor creates a BeanComparator that uses the supplied Comparator to compare the property values.
Parameters:
property - Name of a bean property, can contain the name of a simple, nested, indexed, mapped, or combined property. See PropertyUtilsBean for property query language syntax.
comparator - BeanComparator will pass the values of the specified bean property to this Comparator. If your bean property is not a comparable or contains null values, a suitable comparator may be supplied in this constructor.

Method Details

compare

public int compare(Object o1,
                   Object o2)
Compare two JavaBeans by their shared property. If getProperty() is null then the actual objects will be compared.
Parameters:
o1 - Object The first bean to get data from to compare against
o2 - Object The second bean to get data from to compare
Returns:
int negative or positive based on order

equals

public boolean equals(Object o)
Two BeanComparator's are equals if and only if the wrapped comparators and the property names to be compared are equal.
Parameters:
o - Comparator to compare to
Returns:
whether the the comparators are equal or not

getComparator

public Comparator getComparator()
Gets the Comparator being used to compare beans.
Returns:
the Comparator being used to compare beans

getProperty

public String getProperty()
Gets the property attribute of the BeanComparator
Returns:
String method name to call to compare. A null value indicates that the actual objects will be compared

hashCode

public int hashCode()
Hashcode compatible with equals.
Returns:
the hash code for this comparator

setProperty

public void setProperty(String property)
Sets the method to be called to compare two JavaBeans
Parameters:
property - String method name to call to compare If the property passed in is null then the actual objects will be compared

Copyright (c) 2001-2007 - Apache Software Foundation