package com.hwlcn.ldap.ldap.sdk.migrate.ldapjdk;
import com.hwlcn.ldap.ldap.sdk.DN;
import com.hwlcn.ldap.ldap.sdk.RDN;
import com.hwlcn.core.annotation.NotMutable;
import com.hwlcn.core.annotation.ThreadSafety;
import com.hwlcn.ldap.util.ThreadSafetyLevel;
import static com.hwlcn.ldap.util.Debug.*;
import static com.hwlcn.ldap.util.StaticUtils.*;
@NotMutable()
@ThreadSafety(level=ThreadSafetyLevel.COMPLETELY_THREADSAFE)
public final class LDAPDN
{
private LDAPDN()
{
}
public static String normalize(final String dn)
{
try
{
return DN.normalize(dn);
}
catch (Exception e)
{
debugException(e);
return toLowerCase(dn.trim());
}
}
public static String[] explodeDN(final String dn, final boolean noTypes)
{
try
{
final RDN[] rdns = new DN(dn).getRDNs();
final String[] rdnStrings = new String[rdns.length];
for (int i=0; i < rdns.length; i++)
{
if (noTypes)
{
final StringBuilder buffer = new StringBuilder();
for (final String s : rdns[i].getAttributeValues())
{
if (buffer.length() > 0)
{
buffer.append('+');
}
buffer.append(s);
}
rdnStrings[i] = buffer.toString();
}
else
{
rdnStrings[i] = rdns[i].toString();
}
}
return rdnStrings;
}
catch (Exception e)
{
debugException(e);
return new String[] { dn };
}
}
public static String[] explodeRDN(final String rdn, final boolean noTypes)
{
try
{
final RDN rdnObject = new RDN(rdn);
final String[] values = rdnObject.getAttributeValues();
if (noTypes)
{
return values;
}
final String[] names = rdnObject.getAttributeNames();
final String[] returnStrs = new String[names.length];
for (int i=0; i < names.length; i++)
{
returnStrs[i] = names[i] + '=' + values[i];
}
return returnStrs;
}
catch (Exception e)
{
debugException(e);
return new String[] { rdn };
}
}
public static boolean equals(final String dn1, final String dn2)
{
try
{
return DN.equals(dn1, dn2);
}
catch (Exception e)
{
debugException(e);
return false;
}
}
}