001    /*
002     * CDDL HEADER START
003     *
004     * The contents of this file are subject to the terms of the
005     * Common Development and Distribution License, Version 1.0 only
006     * (the "License").  You may not use this file except in compliance
007     * with the License.
008     *
009     * You can obtain a copy of the license at
010     * trunk/opends/resource/legal-notices/OpenDS.LICENSE
011     * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
012     * See the License for the specific language governing permissions
013     * and limitations under the License.
014     *
015     * When distributing Covered Code, include this CDDL HEADER in each
016     * file and include the License file at
017     * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
018     * add the following below this CDDL HEADER, with the fields enclosed
019     * by brackets "[]" replaced with your own identifying information:
020     *      Portions Copyright [yyyy] [name of copyright owner]
021     *
022     * CDDL HEADER END
023     *
024     *
025     *      Copyright 2006-2008 Sun Microsystems, Inc.
026     */
027    package org.opends.server.backends.jeb;
028    
029    import org.opends.server.protocols.asn1.ASN1OctetString;
030    
031    import java.util.Comparator;
032    
033    /**
034     * This class implements a comparator for ASN1OctetString using
035     * a byte array comparator supplied in its constructor.
036     */
037    public class OctetStringKeyComparator implements Comparator<ASN1OctetString>
038    {
039      /**
040       * The byte array comparator used to compare the octet string values.
041       */
042      private Comparator<byte[]> comparator;
043    
044      /**
045       * Create a new ASN1 octet string comparator.
046       * @param comparator The byte array comparator to be used to compare the
047       * octet string values.
048       */
049      public OctetStringKeyComparator(Comparator<byte[]> comparator)
050      {
051        this.comparator = comparator;
052      }
053    
054      /**
055       * Compares its two arguments for order.  Returns a negative integer,
056       * zero, or a positive integer as the first argument is less than, equal
057       * to, or greater than the second.
058       *
059       * @param a the first object to be compared.
060       * @param b the second object to be compared.
061       * @return a negative integer, zero, or a positive integer as the
062       *         first argument is less than, equal to, or greater than the
063       *         second.
064       * @throws ClassCastException if the arguments' types prevent them from
065       *         being compared by this Comparator.
066       */
067      public int compare(ASN1OctetString a, ASN1OctetString b)
068           throws ClassCastException
069      {
070        return comparator.compare(a.value(), b.value());
071      }
072    }