View Javadoc

1   /*******************************************************************************
2    *  Imixs Workflow 
3    *  Copyright (C) 2001, 2011 Imixs Software Solutions GmbH,  
4    *  http://www.imixs.com
5    *  
6    *  This program is free software; you can redistribute it and/or 
7    *  modify it under the terms of the GNU General Public License 
8    *  as published by the Free Software Foundation; either version 2 
9    *  of the License, or (at your option) any later version.
10   *  
11   *  This program is distributed in the hope that it will be useful, 
12   *  but WITHOUT ANY WARRANTY; without even the implied warranty of 
13   *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 
14   *  General Public License for more details.
15   *  
16   *  You can receive a copy of the GNU General Public
17   *  License at http://www.gnu.org/licenses/gpl.html
18   *  
19   *  Project: 
20   *  	http://www.imixs.org
21   *  	http://java.net/projects/imixs-workflow
22   *  
23   *  Contributors:  
24   *  	Imixs Software Solutions GmbH - initial API and implementation
25   *  	Ralph Soika - Software Developer
26   *******************************************************************************/
27  
28  package org.imixs.workflow.jee.faces;
29  
30  import java.text.Collator;
31  import java.util.Comparator;
32  import java.util.Locale;
33  
34  import javax.faces.model.SelectItem;
35  
36  /**
37   * Sorts a ArrayList of SelectItems by label 
38   * @author rsoika
39   *
40   */
41  public class SelectItemComparator implements Comparator<SelectItem> {
42  	private final Collator collator;
43  
44  	private final boolean ascending;
45  
46  	public SelectItemComparator(Locale locale, boolean ascending) {
47  		this.collator = Collator.getInstance(locale);
48  		this.ascending = ascending;
49  	}
50  
51  	public int compare(SelectItem a, SelectItem b) {
52  		int result = this.collator.compare(a.getLabel(), b.getLabel());
53  		if (!this.ascending) {
54  			result = -result;
55  		}
56  		return result;
57  	}
58  
59  }