commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jack, Paul" <pj...@sfaf.org>
Subject RE: [COLLECTIONS/BEANUTILS] Is there a comparator that can dynami cally pick a method to call on a bean?
Date Mon, 10 Jun 2002 21:10:35 GMT
Why not use a TransformingComparator to transform the objects
into strings before passing them to CASE_INSENSITIVE_ORDER?

I really am just trying to help. :)

-Paul

> -----Original Message-----
> From: Eric Pugh [mailto:epugh@upstate.com]
> Sent: Monday, June 10, 2002 2:07 PM
> To: 'Jakarta Commons Developers List'
> Subject: RE: [COLLECTIONS/BEANUTILS] Is there a comparator that can
> dynamically pick a method to call on a bean?
> 
> 
> Now I figured out why I have the Lowercase comparator..  I am 
> using the
> lowercase comparator decorated by BeanCompartor, which 
> sometiems passes
> strings to lowercase comparator and other times passes other 
> objects...
> CASE_INSENSITIVE_ORDER throws classcastexceptions on anything 
> that is not a
> string..
> 
> So, how about changing LowercaseComparator to 
> CaseInsensitiveComparator
> which wraps a call to CASE_INSENSITIVE_ORDER when both args 
> are Strings, and
> otherwise doesn't?  The problem is still that you can't daisy 
> chain any
> furthur..  Maybe only use CaseInsensitiveComparator when the 
> user doesn't
> pass in another comparator, other do the toLowerCase call...
> 
> ERic
> 
> -----Original Message-----
> From: Jack, Paul [mailto:pjack@sfaf.org]
> Sent: Monday, June 10, 2002 4:45 PM
> To: 'Jakarta Commons Developers List'
> Subject: RE: [COLLECTIONS/BEANUTILS] Is there a comparator that can
> dynamically pick a method to call on a bean?
> 
> 
> FYI, java.lang.String.CASE_INSENSITIVE_ORDER does what your
> LowercaseComparator does, but somewhat more efficiently.
> 
> -Paul
> 
> 
> > -----Original Message-----
> > From: Eric Pugh [mailto:epugh@upstate.com]
> > Sent: Monday, June 10, 2002 1:35 PM
> > To: 'Jakarta Commons Developers List'
> > Subject: RE: [COLLECTIONS/BEANUTILS] Is there a comparator that can
> > dynamically pick a method to call on a bean?
> >
> >
> > Hi all,
> >
> > Attached is my first attempt at submitting a BeanComparator,
> > along with the
> > test case..  However, i am running into two issues becomes of
> > my lack of
> > familiarty with beans that are causing me pain.  However, in my app,
> > everything is working great!  My testcase is attached.
> >
> > 1) the test suite fails because my test object which has a
> > getBeanValue and
> > setBeanValue causes the WrapDynaBean class to throw an 
> exception that
> > "value" has no read method..  Yet it does, and in other uses of the
> > BeanComparator in my code it works great.
> >
> > 2) All comparisions are string comparisons..  So when I
> > compare Bigdecimals
> > 2, 12, and 22, the orders is 12, 2, 22!  Do I need to hand in
> > another class
> > to cast the objects to?
> >
> > Also, I would love to see the ComparatorUtils, I created my 
> own one to
> > handle the reversing of my sorts based on the text values
> > ASC/DESC, and
> > removed them from my BeanComparator.
> >
> > I have also attached my LowercaseComparator..  I was sorting
> > columns of
> > String data, and noticed that if I didn't lowercase them, the
> > A versus a
> > differenced caused funny looking ordering.  I also set up
> > LowercaseComparator and BeanComparator to work as decorators
> > (similar to
> > ReverseComparator).  Lastly, for the bean comparator, I am using
> > PropertyUtils, so if you can pass in NESTED properties!  
> customer.name
> > results in getCustomer().getName() being returned!  I would
> > love to add
> > jxPath converter as I build up some more experience!
> >
> > Here is some sample code:
> >
> > 	public static Comparator sortedBean( String sortProperty, String
> > sortPolarity )
> > 		throws java.lang.IllegalArgumentException {
> > 		Comparator c = null;
> > 		sortPolarity = sortPolarity.toUpperCase();
> > 		if ( !sortPolarity.equals( ASC ) &&
> > !sortPolarity.equals( DESC ) ) {
> > 			throw new
> > java.lang.IllegalArgumentException( "The argument:" +
> > sortPolarity + " was invalid." );
> > 		}
> > 		if ( sortPolarity.equals( ASC ) ) {
> > 			c = new BeanComparator( sortProperty,
> > new LowercaseComparator() );
> > 		}
> > 		else {
> > 			c = new ReverseComparator( new
> > BeanComparator( sortProperty, new
> > LowercaseComparator() ) );
> >
> > 		}
> > 		return c;
> > 	}
> >
> >
> > Any suggestions/help would be much appreciated, and I would
> > love to see
> > these added to the comparators available!
> >
> > Eric
> >
> > -----Original Message-----
> > From: Michael A. Smith [mailto:mas@apache.org]
> > Sent: Friday, June 07, 2002 3:07 PM
> > To: Jakarta Commons Developers List
> > Subject: RE: [COLLECTIONS/BEANUTILS] Is there a comparator that can
> > dynamically pick a method to call on a bean?
> >
> >
> > On Fri, 7 Jun 2002, Henri Yandell wrote:
> > > Sorry Eric, I'm not sure you got my question.
> > >
> > > BeanComparator = good, +1. I think it'd be great to commit a
> > > BeanComparator.
> > >
> > > The ASC/DESC bit is unnecessary I think due to
> > ReverseComparator. This is
> > > an opinion though, I don't believe in ASC/DESC in
> > Comparators. So I was
> > > just -1 on the Polarity part of your BeanComparator :)
> > >
> > > Morgan or Michael may want to veto that though :)
> >
> > Neither of us can veto your veto.  We can try to twist your
> > arm, but in
> > this case, I have no reason to: I agree with you.  The reverse
> > comparator can provide the complementary ascending or descending
> > behavior.
> >
> > regards,
> > michael
> >
> >
> > --
> > To unsubscribe, e-mail:
> > <mailto:commons-dev-unsubscribe@jakarta.apache.org>
> > For additional commands, e-mail:
> > <mailto:commons-dev-help@jakarta.apache.org>
> >
> 
> --
> To unsubscribe, e-mail:
> <mailto:commons-dev-unsubscribe@jakarta.apache.org>
> For additional commands, e-mail:
> <mailto:commons-dev-help@jakarta.apache.org>
> 
> 
> --
> To unsubscribe, e-mail:   
<mailto:commons-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail:
<mailto:commons-dev-help@jakarta.apache.org>

--
To unsubscribe, e-mail:   <mailto:commons-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:commons-dev-help@jakarta.apache.org>


Mime
View raw message