private int compareRdnValues()

in plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/browser/BrowserSorter.java [448:508]


    private int compareRdnValues( IEntry entry1, IEntry entry2 )
    {
        if ( ( entry1 == null ) && ( entry2 == null ) )
        {
            return equal();
        }
        else if ( ( entry1 != null ) && ( entry2 == null ) )
        {
            return greaterThanEntries();
        }
        else if ( ( entry1 == null ) && ( entry2 != null ) )
        {
            return lessThanEntries();
        }
        else
        {
            Rdn rdn1 = entry1.getRdn();
            Rdn rdn2 = entry2.getRdn();

            if ( ( rdn1 == null || rdn1.getName() == null || "".equals( rdn1.getName() ) ) //$NON-NLS-1$
                && ( rdn2 == null || rdn2.getName() == null || "".equals( rdn2.getName() ) ) ) //$NON-NLS-1$
            {
                return equal();
            }
            else if ( ( rdn1 == null || rdn1.getName() == null || "".equals( rdn1.getName() ) ) //$NON-NLS-1$
                && !( rdn2 == null || rdn2.getName() == null || "".equals( rdn2.getName() ) ) ) //$NON-NLS-1$
            {
                return greaterThanEntries();
            }
            else if ( !( rdn1 == null || rdn1.getName() == null || "".equals( rdn1.getName() ) ) //$NON-NLS-1$
                && ( rdn2 == null || rdn2.getName() == null || "".equals( rdn2.getName() ) ) ) //$NON-NLS-1$
            {
                return lessThanEntries();
            }

            String rdn1Value = ( String ) rdn1.getName();
            String rdn2Value = ( String ) rdn2.getName();
            if ( rdn1Value.matches( "\\d*" ) && !rdn2Value.matches( "\\d*" ) ) //$NON-NLS-1$ //$NON-NLS-2$
            {
                // return lessThan();
                return compareEntries( rdn1Value, rdn2Value );
            }
            else if ( !rdn1Value.matches( "\\d*" ) && rdn2Value.matches( "\\d*" ) ) //$NON-NLS-1$ //$NON-NLS-2$
            {
                // return greaterThan();
                return compareEntries( rdn1Value, rdn2Value );
            }
            else if ( rdn2Value.matches( "\\d*" ) && rdn2Value.matches( "\\d*" ) ) //$NON-NLS-1$ //$NON-NLS-2$
            {
                BigInteger bi1 = new BigInteger( rdn1Value );
                BigInteger bi2 = new BigInteger( rdn2Value );
                return compare( bi1, bi2 );
                // return Integer.parseInt(rdn1.getValue()) -
                // Integer.parseInt(rdn2.getValue());
            }
            else
            {
                return compareEntries( rdn1Value, rdn2Value );
            }
        }
    }