Please create a bugzilla enhancement ticket and attach a cvs diff -u
formatted patch to it.

Thanks!
David

--- Paul Sundling <[EMAIL PROTECTED]> wrote:
> Hopefully you will see fit to accept my code and allow me to make my 
> first non-documentation open source contribution.  The code I have added
> 
> makes it VERY easy to sort an array of LabelValueBeans for display in 
> select lists.
> 
> Here's a sample of how to use the newly added functionality
> 
> <inside the execute function of an Action used for setup>
> 
> LabelValueBean[] sortableList = new LabelValueBean[] {
>      new LabelValueBean("unorganized", "ung"),
>      new LabelValueBean("out of order", "ood"),
>      new LabelValueBean("Capitalized", "Cap"),
>      new LabelValueBean"("Not Lowercase", "Nl"),
> };
> // to sort the list alphabetically by label
> java.util.Arrays.sort(sortableList);
> // or to sort the list case insensitive by label
> java.util.Arrays.sort(sortableList,
> LabelValueBean.CASE_INSENSITIVE_ORDER);
> 
> request.setAttribute("sortableList", sortableList);
> 
> //then the sortableList is used in the <html:options> tags....
> 
> I have attached the complete file beside including the diff in case that
> 
> is useful.
> 
> 
> The diff versus version 1.6 of the file (
> 
> # diff LabelValueBean.java.version1.6 LabelValueBean.java
> 65c65
> <
> ---
>  > import java.util.Comparator;
> 74a75,76
>  >  * @author Paul Sundling
>  >  *
> 77c79
> < public class LabelValueBean implements Serializable {
> ---
>  > public class LabelValueBean implements Comparable, Serializable {
> 181a184,210
>  >     /**
>  >      * The comparable interface allows sorting.  This is done based 
> on the
>  >      * label, since that is the human viewable part of the object.
>  >      * @see java.lang.Comparable
>  >      */
>  >     public int compareTo(Object otherBean) {
>  >       // implicitly tests for the correct type, throwing 
> ClassCastException
>  >       // as required by interface
>  >       String otherLabel = ((LabelValueBean)otherBean).getLabel();
>  >
>  >       //compare the labels of the LabelValueBean objects
>  >       return this.getLabel().compareTo(otherLabel);
>  >     }
>  >
>  >     /**
>  >      * Comparator object that can be used for a case insensitive
> order
>  >      * sort of LabelValueBean objects.  The idea for this comes from
>  >      * java.lang.String
>  >      */
>  >       public static Comparator CASE_INSENSITIVE_ORDER = new 
> Comparator() {
>  >               public int compare(Object Bean1, Object Bean2) {
>  >                       String label1 =
> ((LabelValueBean)Bean1).getLabel();
>  >                       String label2 =
> ((LabelValueBean)Bean2).getLabel();
>  >                       return label1.compareToIgnoreCase(label2);
>  >
>  >               }
>  >       };
> > /*
>  * $Header:
>
/home/cvspublic/jakarta-struts/src/share/org/apache/struts/util/LabelValueBean.java,v
> 1.6 2003/07/04 18:26:19 dgraham Exp $
>  * $Revision: 1.6 $
>  * $Date: 2003/07/04 18:26:19 $
>  *
>  * ====================================================================
>  *
>  * The Apache Software License, Version 1.1
>  *
>  * Copyright (c) 1999-2003 The Apache Software Foundation.  All rights
>  * reserved.
>  *
>  * Redistribution and use in source and binary forms, with or without
>  * modification, are permitted provided that the following conditions
>  * are met:
>  *
>  * 1. Redistributions of source code must retain the above copyright
>  *    notice, this list of conditions and the following disclaimer.
>  *
>  * 2. Redistributions in binary form must reproduce the above copyright
>  *    notice, this list of conditions and the following disclaimer in
>  *    the documentation and/or other materials provided with the
>  *    distribution.
>  *
>  * 3. The end-user documentation included with the redistribution, if
>  *    any, must include the following acknowlegement:
>  *       "This product includes software developed by the
>  *        Apache Software Foundation (http://www.apache.org/)."
>  *    Alternately, this acknowlegement may appear in the software
> itself,
>  *    if and wherever such third-party acknowlegements normally appear.
>  *
>  * 4. The names "The Jakarta Project", "Struts", and "Apache Software
>  *    Foundation" must not be used to endorse or promote products
> derived
>  *    from this software without prior written permission. For written
>  *    permission, please contact [EMAIL PROTECTED]
>  *
>  * 5. Products derived from this software may not be called "Apache"
>  *    nor may "Apache" appear in their names without prior written
>  *    permission of the Apache Group.
>  *
>  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
>  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
>  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
>  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
>  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
>  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
>  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
>  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
>  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
>  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
>  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
>  * SUCH DAMAGE.
>  * ====================================================================
>  *
>  * This software consists of voluntary contributions made by many
>  * individuals on behalf of the Apache Software Foundation.  For more
>  * information on the Apache Software Foundation, please see
>  * <http://www.apache.org/>.
>  *
>  */
> 
> package org.apache.struts.util;
> 
> import java.io.Serializable;
> import java.util.Comparator;
> /**
>  * A simple JavaBean to represent label-value pairs. This is most
> commonly used
>  * when constructing user interface elements which have a label to be
> displayed
>  * to the user, and a corresponding value to be returned to the server.
> One
>  * example is the <code>&lt;html:options&gt;</code> tag.
>  *
>  * @author Craig R. McClanahan
>  * @author Martin F N Cooper
>  * @author David Graham
>  * @author Paul Sundling
>  * 
>  * @version $Revision: 1.6 $ $Date: 2003/07/04 18:26:19 $
>  */
> public class LabelValueBean implements Comparable, Serializable {
> 
> 
>     // -----------------------------------------------------------
> Constructors
> 
> 
>     /**
>      * Default constructor.
>      */
>     public LabelValueBean() {
>         super();
>     }
> 
>     /**
>      * Construct an instance with the supplied property values.
>      *
>      * @param label The label to be displayed to the user.
>      * @param value The value to be returned to the server.
>      */
>     public LabelValueBean(String label, String value) {
>         this.label = label;
>         this.value = value;
>     }
> 
> 
>     // -------------------------------------------------------------
> Properties
> 
> 
>     /**
>      * The property which supplies the option label visible to the end
> user.
>      */
>     private String label = null;
> 
>     public String getLabel() {
>         return this.label;
>     }
> 
>     public void setLabel(String label) {
>         this.label = label;
>     }
> 
> 
>     /**
>      * The property which supplies the value returned to the server.
>      */
>     private String value = null;
> 
>     public String getValue() {
>         return this.value;
>     }
> 
>     public void setValue(String value) {
>         this.value = value;
>     }
> 
> 
>     // --------------------------------------------------------- Public
> Methods
> 
> 
>     /**
>      * Return a string representation of this object.
>      */
>     public String toString() {
>         StringBuffer sb = new StringBuffer("LabelValueBean[");
>         sb.append(this.label);
>         sb.append(", ");
>         sb.append(this.value);
>         sb.append("]");
>         return (sb.toString());
>     }
> 
>     /**
>      * LabelValueBeans are equal if their values are both null or equal.
>      * @see java.lang.Object#equals(java.lang.Object)
>      */
>     public boolean equals(Object obj) {
>         if (obj == this) {
>             return true;
>         }
> 
>         if (!(obj instanceof LabelValueBean)) {
>             return false;
>         }
> 
>         LabelValueBean bean = (LabelValueBean) obj;
>         int nil = (this.getValue() == null) ? 1 : 0;
>         nil += (bean.getValue() == null) ? 1 : 0;
> 
>         if (nil == 2) {
>             return true;
>         } else if (nil == 1) {
>             return false;
>         } else {
>             return this.getValue().equals(bean.getValue());
>         }
> 
>     }
> 
>     /**
>      * The hash code is based on the object's value.
>      * @see java.lang.Object#hashCode()
>      */
>     public int hashCode() {
>         return (this.getValue() == null) ? 17 :
> this.getValue().hashCode();
>     }
>     /** 
>      * The comparable interface allows sorting.  This is done based on
> the 
>      * label, since that is the human viewable part of the object.
>      * @see java.lang.Comparable
>      */
> 
=== message truncated ===>
---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]


__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to