01: /**********************************************************************************
02: * $URL:https://source.sakaiproject.org/svn/osp/trunk/glossary/api-impl/src/java/org/theospi/portfolio/help/model/TermComparator.java $
03: * $Id:TermComparator.java 9134 2006-05-08 20:28:42Z chmaurer@iupui.edu $
04: ***********************************************************************************
05: *
06: * Copyright (c) 2005, 2006 The Sakai Foundation.
07: *
08: * Licensed under the Educational Community License, Version 1.0 (the "License");
09: * you may not use this file except in compliance with the License.
10: * You may obtain a copy of the License at
11: *
12: * http://www.opensource.org/licenses/ecl1.php
13: *
14: * Unless required by applicable law or agreed to in writing, software
15: * distributed under the License is distributed on an "AS IS" BASIS,
16: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17: * See the License for the specific language governing permissions and
18: * limitations under the License.
19: *
20: **********************************************************************************/package org.theospi.portfolio.help.model;
21:
22: import java.util.Comparator;
23:
24: import org.apache.commons.logging.Log;
25: import org.apache.commons.logging.LogFactory;
26:
27: public class TermComparator implements Comparator {
28: protected final transient Log logger = LogFactory
29: .getLog(getClass());
30:
31: /**
32: * Compares its two arguments for order. Returns a negative integer,
33: * zero, or a positive integer as the first argument is less than, equal
34: * to, or greater than the second.<p>
35: * <p/>
36: * The implementor must ensure that <tt>sgn(compare(x, y)) ==
37: * -sgn(compare(y, x))</tt> for all <tt>x</tt> and <tt>y</tt>. (This
38: * implies that <tt>compare(x, y)</tt> must throw an exception if and only
39: * if <tt>compare(y, x)</tt> throws an exception.)<p>
40: * <p/>
41: * The implementor must also ensure that the relation is transitive:
42: * <tt>((compare(x, y)>0) && (compare(y, z)>0))</tt> implies
43: * <tt>compare(x, z)>0</tt>.<p>
44: * <p/>
45: * Finally, the implementer must ensure that <tt>compare(x, y)==0</tt>
46: * implies that <tt>sgn(compare(x, z))==sgn(compare(y, z))</tt> for all
47: * <tt>z</tt>.<p>
48: * <p/>
49: * It is generally the case, but <i>not</i> strictly required that
50: * <tt>(compare(x, y)==0) == (x.equals(y))</tt>. Generally speaking,
51: * any comparator that violates this condition should clearly indicate
52: * this fact. The recommended language is "Note: this comparator
53: * imposes orderings that are inconsistent with equals."
54: *
55: * @param o1 the first object to be compared.
56: * @param o2 the second object to be compared.
57: * @return a negative integer, zero, or a positive integer as the
58: * first argument is less than, equal to, or greater than the
59: * second.
60: * @throws ClassCastException if the arguments' types prevent them from
61: * being compared by this Comparator.
62: */
63: public int compare(Object o1, Object o2) {
64: String entry1 = o1.toString();
65: String entry2 = o2.toString();
66:
67: return entry1.compareToIgnoreCase(entry2);
68: }
69: }
|