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><html:options></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]