directory-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From akaras...@apache.org
Subject svn commit: rev 55282 - incubator/directory/ldap/trunk/common/src/java/org/apache/ldap/common/schema
Date Thu, 21 Oct 2004 23:12:15 GMT
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:directory-dev@incubator.apache.org">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 );
+    }
+}

Mime
View raw message