/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at * trunk/opends/resource/legal-notices/OpenDS.LICENSE * or https://OpenDS.dev.java.net/OpenDS.LICENSE. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, * add the following below this CDDL HEADER, with the fields enclosed * by brackets "[]" replaced with your own identifying information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * * Portions Copyright 2006-2007 Sun Microsystems, Inc. */ package org.opends.server.api; import java.io.Serializable; import java.util.Comparator; import org.opends.server.types.ByteString; import org.opends.server.types.ConditionResult; /** * This class defines the set of methods and structures that must be * implemented by a Directory Server module that implements a matching * rule used for determining the correct order of values when sorting * or processing range filters. */ public abstract class OrderingMatchingRule extends MatchingRule implements Comparator, Serializable { /** * The serial version identifier required to satisfy the compiler * because this class implements the * java.io.Serializable interface. This value was * generated using the serialver command-line utility * included with the Java SDK. */ private static final long serialVersionUID = -5322529685787024597L; /** * Compares the first value to the second and returns a value that * indicates their relative order. * * @param value1 The normalized form of the first value to * compare. * @param value2 The normalized form of the second value to * compare. * * @return A negative integer if value1 should come * before value2 in ascending order, a * positive integer if value1 should come * after value2 in ascending order, or zero if * there is no difference between the values with regard to * ordering. */ public abstract int compareValues(ByteString value1, ByteString value2); /** * Indicates whether the provided attribute value should be * considered a match for the given assertion value. This will only * be used for the purpose of extensible matching. *

* Note that ordering matching rules by default do not support * extensible matching, and therefore this method will always return * UNDEFINED. If an ordering matching rule does * support extensible matching operations, then it should override * this method and provide an appropriate implementation. * * @param attributeValue The attribute value in a form that has * been normalized according to this * matching rule. * @param assertionValue The assertion value in a form that has * been normalized according to this * matching rule. * * @return true if the attribute value should be * considered a match for the provided assertion value, or * false if not. */ public ConditionResult valuesMatch(ByteString attributeValue, ByteString assertionValue) { return ConditionResult.UNDEFINED; } }