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 :)

Hen

On Fri, 7 Jun 2002, Eric Pugh wrote:

> Works for me..  For my application, if there was a good comparator, then I
> would probably wrap up my code in something that combined ReverseComparator
> and BeanMethodComparartor properly...
>
> I guess I was just kinda tossing it out as an example..  If there is
> interest in adding it to CVS, I will make the changes, change the package
> class and add licesnising etc....
>
> Eric
>
> -----Original Message-----
> From: Henri Yandell [mailto:[EMAIL PROTECTED]]
> Sent: Friday, June 07, 2002 11:21 AM
> To: Jakarta Commons Developers List
> Subject: RE: [COLLECTIONS/BEANUTILS] Is there a comparator that can
> dynamically pick a method to call on a bean?
>
>
> -1 to the ASC/DESC bit. That shouldn't be in comparators in my opinion,
> instead use the ReverseComparator.
>
> What is Polarity vs Property?
>
> On Fri, 7 Jun 2002, Eric Pugh wrote:
>
> > I forged ahead..  I had a need to sort in asc/desc...  so I have added a
> > sortPolarity and sortProperty methods..
> >
> > Here is what I created...
> >
> > package com.upstate.util;
> >
> > import org.apache.commons.beanutils.WrapDynaBean;
> > import org.apache.commons.beanutils.*;
> >
> > import org.apache.log4j.Category;
> >
> > /**
> >  *  Description of the Class
> >  *
> >  *@author     epugh
> >  *@created    May 5, 2002
> >  */
> > public class BeanMethodComparator implements java.util.Comparator {
> >
> >     public final static String ASC = "ASC";
> >     public final static String DESC = "DESC";
> >
> >     private static Category log = Category.getInstance(
> > BeanMethodComparator.class.getName() );
> >     private String sortProperty;
> >     private String sortPolarity = "ASC";
> >
> >     /**  Constructor for the BeanMethodComparator object */
> >     public BeanMethodComparator() { }
> >
> >     /**
> >      *  Constructor for the BeanMetodComparator object
> >      *
> >      *@param  sortProperty  Description of Parameter
> >      *@param  sortPolarity  Description of Parameter
> >      */
> >     public BeanMethodComparator( String sortProperty, String sortPolarity ) {
> >             setSortProperty( sortProperty );
> >             setSortPolarity( sortPolarity );
> >     }
> >
> >     /**
> >      *  Sets the sortProperty attribute of the SortDaughterboard object
> >      *
> >      *@param  sortProperty  The new sortProperty value
> >      */
> >     public void setSortProperty( String sortProperty ) {
> >             this.sortProperty = sortProperty;
> >     }
> >
> >     /**
> >      *  Sets the sortPolarity attribute of the SortDaughterboard object
> >      *
> >      *@param  sortPolarity                            The new sortPolarity
> > value.
> >      *      Can be either "ASC"/"DESC".
> >      *@exception  java.lang.IllegalArgumentException  Thrown if you pass in a
> > bad
> >      *      sortPolarity.
> >      */
> >     public void setSortPolarity( String sortPolarity )
> >             throws java.lang.IllegalArgumentException {
> >             sortPolarity = sortPolarity.toUpperCase();
> >             if ( sortPolarity.equals( ASC ) || sortPolarity.equals( DESC ) ) {
> >                     throw new java.lang.IllegalArgumentException( "The argument:" +
> > sortPolarity + " was invalid." );
> >             }
> >             this.sortPolarity = sortPolarity;
> >     }
> >
> >     /**
> >      *  Gets the sortPolarity attribute of the SortDaughterboard object
> >      *
> >      *@return    The sortPolarity value
> >      */
> >     public String getSortPolarity() {
> >             return sortPolarity;
> >     }
> >
> >
> >     /**
> >      *  Gets the sortProperty attribute of the SortDaughterboard object
> >      *
> >      *@return    The sortProperty value
> >      */
> >     public String getSortProperty() {
> >             return sortProperty;
> >     }
> >
> >     /**
> >      *  Description of the Method
> >      *
> >      *@param  o1  Description of Parameter
> >      *@param  o2  Description of Parameter
> >      *@return     Description of the Returned Value
> >      */
> >     public int compare( Object o1, Object o2 ) {
> >             try {
> >                     WrapDynaBean bean1 = new WrapDynaBean( o1 );
> >                     WrapDynaBean bean2 = new WrapDynaBean( o2 );
> >
> >                     Comparable value1 = (Comparable) bean1.get( sortProperty );
> >                     Comparable value2 = (Comparable) bean2.get( sortProperty );
> >
> >                     int sort = 0;
> >
> >                     if ( ( value1 == null ) & ( value2 == null ) ) {
> >                             sort = 0;
> >                     }
> >                     else if ( value1 == null & value2 != null ) {
> >                             sort = 1;
> >                     }
> >                     else if ( value1 != null & value2 == null ) {
> >                             sort = -1;
> >                     }
> >                     else {
> >                             sort = value1.compareTo( value2 );
> >                     }
> >
> >                     if ( sortPolarity.equals( DESC ) ) {
> >                             sort = sort * -1;
> >                     }
> >
> >                     return sort;
> >             }
> >
> >             catch ( Exception e ) {
> >                     log.error( "Problem in Sort. sortPolarity:" + sortPolarity + ",
> > sortProperty:" + sortProperty, e );
> >                     return 0;
> >             }
> >     }
> >
> > }
> >
> > Eric Pugh
> >
> >
> > -----Original Message-----
> > From: Henri Yandell [mailto:[EMAIL PROTECTED]]
> > Sent: Friday, June 07, 2002 10:50 AM
> > To: Jakarta Commons Developers List
> > Subject: Re: [COLLECTIONS/BEANUTILS] Is there a comparator that can
> > dynamically pick a method to call on a bean?
> >
> >
> >
> > I don't think there is one in Commons yet. I've had one for myself for a
> > bit and it can be a lifesaver sometimes.
> >
> > BeanComparator bc = new BeanComparator("[1]"); was very sweet when I
> > realised that would work :) Not just Beans but also arrays/collections.
> >
> > I'm +1 for a BeanComparator, +1 in that I plan to do it sometime but have
> > not had the time to learn the Jakarta BeanUtils and stop using my own.
> >
> > Hen
> >
> > On Fri, 7 Jun 2002, Eric Pugh wrote:
> >
> > > Hi all,
> > >
> > > I have a series of Torque objects that I want to sort.  Sometimes I want
> > to
> > > sort by MethodA, sometiems by MethodB.  (Basically mapping onto all the
> > > columns in my database).
> > >
> > > Right now, I have a comparator compare method that looks like this:
> > > public int compare( Object o1, Object o2 ) {
> > >           Daughterboard db1 = (Daughterboard) o1;
> > >           Daughterboard db2 = (Daughterboard) o2;
> > >           int sort = 0;
> > >           if ( sortMethod.equals( "ScintillationFileNumber" ) ) {
> > >                   /*
> > >                    *  if ( db1 == null == db2 ) {
> > >                    *  return 0;
> > >                    *  }
> > >                    *  else if (db1 == null &&
> > >                    */
> > >                   sort = Strings.clean( db1.getScintillationFileNumber() 
>).compareTo(
> > > Strings.clean( db2.getScintillationFileNumber() ) );
> > >
> > >           }
> > >           else if ( sortMethod.equals( "DaughterboardId" ) ) {
> > >                   sort = db1.getDaughterboardId().compareTo(
> db2.getDaughterboardId() );
> > >           }
> > >           if ( sortPolarity.equals( "desc" ) ) {
> > >                   sort = sort * -1;
> > >           }
> > >
> > >           return sort;
> > >   }
> > >
> > > What I really want to do is pass in a sortMethod like
> > > ScintillationFileNumber, and dynamically call the objects getter for
> that
> > > name.  If I wrap my object in a WrapDynaBean, and use that to call the
> > data,
> > > will is actually change the ordering of my objects?  Or should I just
> use
> > > the WrapDynaBean locally inside of my compare method to facilitate
> calling
> > > the methods?
> > >
> > > First time using BeanUtils, but it looks great..
> > >
> > > Lastly, would a comparator like this be something of general interest to
> > add
> > > to the collections list of comparators?
> > >
> > > Eric
> > >
> > >
> > >
> > > --
> > > 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]>
>
>
> --
> 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]>

Reply via email to