KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sf > jga > util > ChainedComparator


1 // ============================================================================
2
// $Id: ChainedComparator.java,v 1.4 2005/08/02 23:45:22 davidahall Exp $
3
// Copyright (c) 2003-2005 David A. Hall
4
// ============================================================================
5
// The contents of this file are subject to the Common Development and
6
// Distribution License (CDDL), Version 1.0 (the License); you may not use this
7
// file except in compliance with the License. You should have received a copy
8
// of the the License along with this file: if not, a copy of the License is
9
// available from Sun Microsystems, Inc.
10
//
11
// http://www.sun.com/cddl/cddl.html
12
//
13
// From time to time, the license steward (initially Sun Microsystems, Inc.) may
14
// publish revised and/or new versions of the License. You may not use,
15
// distribute, or otherwise make this file available under subsequent versions
16
// of the License.
17
//
18
// Alternatively, the contents of this file may be used under the terms of the
19
// GNU Lesser General Public License Version 2.1 or later (the "LGPL"), in which
20
// case the provisions of the LGPL are applicable instead of those above. If you
21
// wish to allow use of your version of this file only under the terms of the
22
// LGPL, and not to allow others to use your version of this file under the
23
// terms of the CDDL, indicate your decision by deleting the provisions above
24
// and replace them with the notice and other provisions required by the LGPL.
25
// If you do not delete the provisions above, a recipient may use your version
26
// of this file under the terms of either the CDDL or the LGPL.
27
//
28
// This library is distributed in the hope that it will be useful,
29
// but WITHOUT ANY WARRANTY; without even the implied warranty of
30
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
31
// ============================================================================
32
package net.sf.jga.util;
33
34 import java.io.Serializable JavaDoc;
35 import java.util.Comparator JavaDoc;
36
37 // UNTESTED
38

39 /**
40  * Comparator wrapper that uses a pair of comparators internally. The primary
41  * comparator is evaluated first, and if it returns 0 (equal), then this returns
42  * the result of the secondary comparator.
43  *
44  * @author <a HREF="mailto:davidahall@users.sf.net">David A. Hall</a>
45  */

46
47 public class ChainedComparator<T> implements Comparator JavaDoc<T>, Serializable JavaDoc
48 {
49     static final long serialVersionUID = -8015644817201268699L;
50
51     private Comparator JavaDoc<T> _primary;
52     private Comparator JavaDoc<T> _secondary;
53     
54     public ChainedComparator(Comparator JavaDoc<T> primary, Comparator JavaDoc<T> secondary) {
55         if (primary == null || secondary == null) {
56             String JavaDoc msg = "Two Comparators are required: at least one was null";
57             throw new IllegalArgumentException JavaDoc(msg);
58         }
59
60         _primary = primary;
61         _secondary = secondary;
62     }
63
64     public int compare(T x, T y) {
65         int result = _primary.compare(x,y);
66         return (result == 0) ? _secondary.compare(x,y) : result;
67     }
68 }
69
Popular Tags