View Javadoc
1   /*
2    *   Licensed to the Apache Software Foundation (ASF) under one
3    *   or more contributor license agreements.  See the NOTICE file
4    *   distributed with this work for additional information
5    *   regarding copyright ownership.  The ASF licenses this file
6    *   to you under the Apache License, Version 2.0 (the
7    *   "License"); you may not use this file except in compliance
8    *   with the License.  You may obtain a copy of the License at
9    *
10   *     http://www.apache.org/licenses/LICENSE-2.0
11   *
12   *   Unless required by applicable law or agreed to in writing,
13   *   software distributed under the License is distributed on an
14   *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   *   KIND, either express or implied.  See the License for the
16   *   specific language governing permissions and limitations
17   *   under the License.
18   *
19   */
20  
21  package org.apache.directory.mavibot.btree;
22  
23  
24  import java.util.Comparator;
25  
26  
27  /**
28   * An comparator that encapsulate a Comparator to compare two tuples
29   * using their key.
30   *
31   * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
32   */
33  public class TupleComparator<K, V> implements Comparator<Tuple<K, V>>
34  {
35      /** the embedded Comparator to use for the key comparison */
36      Comparator<K> keyComparator;
37  
38      /** the embedded Comparator to use for the value comparison */
39      Comparator<V> valueComparator;
40  
41  
42      /**
43       * Creates a new instance of TupleComparator.
44       *
45       * @param keyComparator The inner key comparator
46       * @param valueComparator The inner value comparator
47       */
48      public TupleComparator( Comparator<K> keyComparator, Comparator<V> valueComparator )
49      {
50          this.keyComparator = keyComparator;
51      }
52  
53  
54      /**
55       * Compare two tuples. We compare the keys only. 
56       * 
57       * @param t1 The first tuple
58       * @param t2 The second tuple
59       * @return There are 5 possible results :
60       * <ul>
61       * <li>-1 : the first key is below the second key </li>
62       * <li>0 : the two keys are equals, keys and values</li>
63       * <li>1 : the first key is above the second key</li>
64       * </ul>
65       */
66      @Override
67      public int compare( Tuple<K, V> t1, Tuple<K, V> t2 )
68      {
69          return keyComparator.compare( t1.key, t2.key );
70      }
71  }