You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by "David Evans (JIRA)" <ji...@apache.org> on 2006/04/25 20:56:46 UTC

[jira] Reopened: (STR-1687) Sorting enhancements for LabelValueBean

     [ http://issues.apache.org/struts/browse/STR-1687?page=all ]
     
David Evans reopened STR-1687:
------------------------------

    Assign To: David Evans  (was: Struts Developer Mailing List)

> Sorting enhancements for LabelValueBean
> ---------------------------------------
>
>          Key: STR-1687
>          URL: http://issues.apache.org/struts/browse/STR-1687
>      Project: Struts Action 1
>         Type: Improvement

>   Components: Action
>     Versions: Unknown
>  Environment: Operating System: All
> Platform: All
>     Reporter: Paul Sundling
>     Assignee: David Evans
>     Priority: Minor
>      Fix For: 1.2 Family
>  Attachments: sortableBean.txt
>
> 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..
> Following is the output of the cvs diff:
> # cvs diff -u
> cvs server: Diffing .
> Index: LabelValueBean.java
> ===================================================================
> RCS file:
> /home/cvspublic/jakarta-struts/src/share/org/apache/struts/util/LabelValueBean.java,v
> retrieving revision 1.6
> diff -u -r1.6 LabelValueBean.java
> --- LabelValueBean.java 4 Jul 2003 18:26:19 -0000       1.6
> +++ LabelValueBean.java 15 Aug 2003 17:09:53 -0000
> @@ -62,7 +62,7 @@
>  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@@ -72,9 +72,11 @@
>   * @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 Serializable {
> +public class LabelValueBean implements Comparable, Serializable {
>   
>   
>      // -----------------------------------------------------------
> Constructors@@ -179,4 +181,31 @@
>      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
> +     */
> +    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);
> +
> +               }
> +       };
>  }

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/struts/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
For additional commands, e-mail: dev-help@struts.apache.org