You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2005/12/20 01:02:12 UTC

svn commit: r357847 - /directory/shared/ldap/branches/DN-refactoring/common/src/main/java/org/apache/ldap/common/name/LdapDN.java

Author: elecharny
Date: Mon Dec 19 16:02:08 2005
New Revision: 357847

URL: http://svn.apache.org/viewcvs?rev=357847&view=rev
Log:
- Added a hashCode() method
- fixed the compareTo() method
TODO : finish the toOid method (it does not convert multi-NC RDNs)

Modified:
    directory/shared/ldap/branches/DN-refactoring/common/src/main/java/org/apache/ldap/common/name/LdapDN.java

Modified: directory/shared/ldap/branches/DN-refactoring/common/src/main/java/org/apache/ldap/common/name/LdapDN.java
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/branches/DN-refactoring/common/src/main/java/org/apache/ldap/common/name/LdapDN.java?rev=357847&r1=357846&r2=357847&view=diff
==============================================================================
--- directory/shared/ldap/branches/DN-refactoring/common/src/main/java/org/apache/ldap/common/name/LdapDN.java (original)
+++ directory/shared/ldap/branches/DN-refactoring/common/src/main/java/org/apache/ldap/common/name/LdapDN.java Mon Dec 19 16:02:08 2005
@@ -469,6 +469,16 @@
     	
     	return sb.toString();
     }
+    
+    /**
+     * Gets the hashcode of the string representation of this name.
+     * @see java.lang.Object#hashCode()
+     */
+    public int hashCode()
+    {
+        return upName.hashCode() ;
+    }
+    
 
     /**
      * Get the initial DN (without normalization) 
@@ -954,7 +964,7 @@
 
             for ( int i = 0; i < size(); i++ ) 
             {
-                if ( ( (LdapRDN)name.rdns.get( i ) ).compareTo( rdns.get( i ) ) == LdapRDN.NOT_EQUALS)
+                if ( ( (LdapRDN)name.rdns.get( i ) ).compareTo( rdns.get( i ) ) != LdapRDN.EQUALS)
                 {
                     return false;
                 }
@@ -998,20 +1008,18 @@
             
             if ( ldapDN.size() != size() )
             {
-                return NOT_EQUALS;
+                return size() - ldapDN.size();
             }
-            
-            Iterator dn1Iter = rdns.iterator();
-            Iterator dn2Iter = ldapDN.rdns.iterator();
-            
-            while ( dn1Iter.hasNext() && dn2Iter.hasNext() )
+
+            for ( int i = rdns.size(); i > 0; i-- )
             {
-                LdapRDN rdn1 = (LdapRDN)dn1Iter.next();
-                LdapRDN rdn2 = (LdapRDN)dn2Iter.next();
+            	LdapRDN rdn1 = (LdapRDN) rdns.get( i - 1 );
+            	LdapRDN rdn2 = (LdapRDN) ldapDN.rdns.get( i - 1 );
+                int res = rdn1.compareTo( rdn2 );
                 
-                if ( rdn1.compareTo( rdn2 ) == LdapRDN.NOT_EQUALS )
+                if ( res != 0 )
                 {
-                    return NOT_EQUALS;
+                    return res;
                 }
             }
             
@@ -1019,7 +1027,7 @@
         }
         else
         {
-            return NOT_EQUALS;
+            return 1;
         }
     }
 
@@ -1030,50 +1038,41 @@
     		return dn;
     	}
     	
-    	LdapDN newDn = new LdapDN();
+    	LdapDN newDn = (LdapDN)dn.clone();
     	
-    	Enumeration rdns = dn.getAll();
+    	Enumeration rdns = newDn.getAll();
     	
     	while ( rdns.hasMoreElements() )
     	{
-    		 String rdn = (String)rdns.nextElement();
+    		 LdapRDN rdn = (LdapRDN)rdns.nextElement();
     		 
-    		 if ( rdn.indexOf( '+' ) != -1 )
+    		 if ( rdn.getNbAtavs() > 1 )
     		 {
     			 
     		 }
     		 else
     		 {
-    			 int posEqual = rdn.indexOf( '=' );
-    			 
-    			 if ( posEqual > 0 )
-    			 {
-    				 String name = StringUtils.trim( rdn.substring( 0, posEqual ) );
+    			 AttributeTypeAndValue atav = rdn.getAtav();
+    			 String type = StringUtils.trim( atav.getType() );
     				 
-    				 if ( StringUtils.isEmpty( StringUtils.lowerCase( name ) ) == false )
-    				 {
-    					 String oid = (String)oids.get( name );
+    			if ( StringUtils.isEmpty( StringUtils.lowerCase( type ) ) == false )
+    			{
+    				String oid = (String)oids.get( type );
     					 
-    					 if ( oid != null )
-    					 {
-        					 String newRdn = oid + rdn.substring( posEqual );
-        					 newDn.add( newRdn );
-    					 }
-    					 else
-    					 {
-    						 return null;
-    					 }
-    				 }
-    				 else
-    				 {
-    					 return null;
-    				 }
-    			 }
-    			 else
-    			 {
-    				 return  null;
-    			 }
-				 
+					 if ( oid != null )
+					 {
+						 rdn.removeAttributeTypeAndValue( atav.getType() );
+						 rdn.addAttributeTypeAndValue( oid, atav.getValue() );
+					 }
+					 else
+					 {
+						 return null;
+					 }
+				 }
+				 else
+				 {
+					 return null;
+				 }
 			 }
     	}