Author: akarasulu
Date: Thu Oct 21 16:12:14 2004
New Revision: 55282
Added:
incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/schema/NormalizingComparator.java
Log:
added comparator which applies a normalizer first before comparing
Added:
incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/schema/NormalizingComparator.java
==============================================================================
--- (empty file)
+++
incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/schema/NormalizingComparator.java
Thu Oct 21 16:12:14 2004
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.ldap.common.schema;
+
+
+import java.util.Comparator;
+import javax.naming.NamingException;
+
+
+/**
+ * A comparator which normalizes a value first before using a subordinate
+ * comparator to compare them.
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class NormalizingComparator implements Comparator
+{
+ /** the Normalizer to normalize values with before comparing */
+ private final Normalizer normalizer;
+ /** the underlying comparator to use for comparisons */
+ private final Comparator comparator;
+
+
+ /**
+ * A comparator which normalizes a value first before comparing them.
+ *
+ * @param normalizer the Normalizer to normalize values with before
comparing
+ * @param comparator the underlying comparator to use for comparisons
+ */
+ public NormalizingComparator( Normalizer normalizer, Comparator comparator
)
+ {
+ this.normalizer = normalizer;
+ this.comparator = comparator;
+ }
+
+
+ /**
+ * If any normalization attempt fails we compare using the unnormalized
+ * object.
+ *
+ * @see Comparator#compare(Object, Object)
+ */
+ public int compare( Object o1, Object o2 )
+ {
+ Object n1;
+ Object n2;
+
+ try
+ {
+ n1 = normalizer.normalize( o1 );
+ }
+ catch ( NamingException e )
+ {
+ e.printStackTrace();
+ n1 = o1;
+ }
+
+ try
+ {
+ n2 = normalizer.normalize( o2 );
+ }
+ catch ( NamingException e )
+ {
+ e.printStackTrace();
+ n2 = o2;
+ }
+
+ return comparator.compare( n1, n2 );
+ }
+}