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:[EMAIL PROTECTED]] > 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:[EMAIL PROTECTED]] > 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:[EMAIL PROTECTED]] > > 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:[EMAIL PROTECTED]] > > 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:[EMAIL PROTECTED]> > > For additional commands, e-mail: > > <mailto:[EMAIL PROTECTED]> > > > > -- > To unsubscribe, e-mail: > <mailto:[EMAIL PROTECTED]> > For additional commands, e-mail: > <mailto:[EMAIL PROTECTED]> > > > -- > To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
