]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/directory/ldap/LdapNameUtils.java
Improve ACR attribute typing.
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / directory / ldap / LdapNameUtils.java
1 package org.argeo.cms.directory.ldap;
2
3 import javax.naming.InvalidNameException;
4 import javax.naming.ldap.LdapName;
5 import javax.naming.ldap.Rdn;
6
7 /** Utilities to simplify using {@link LdapName}. */
8 public class LdapNameUtils {
9
10 public static LdapName relativeName(LdapName prefix, LdapName dn) {
11 try {
12 if (!dn.startsWith(prefix))
13 throw new IllegalArgumentException("Prefix " + prefix + " not consistent with " + dn);
14 LdapName res = (LdapName) dn.clone();
15 for (int i = 0; i < prefix.size(); i++) {
16 res.remove(0);
17 }
18 return res;
19 } catch (InvalidNameException e) {
20 throw new IllegalStateException("Cannot find realtive name", e);
21 }
22 }
23
24 public static LdapName getParent(LdapName dn) {
25 try {
26 LdapName parent = (LdapName) dn.clone();
27 parent.remove(parent.size() - 1);
28 return parent;
29 } catch (InvalidNameException e) {
30 throw new IllegalArgumentException("Cannot get parent of " + dn, e);
31 }
32 }
33
34 public static Rdn getParentRdn(LdapName dn) {
35 if (dn.size() < 2)
36 throw new IllegalArgumentException(dn + " has no parent");
37 Rdn parentRdn = dn.getRdn(dn.size() - 2);
38 return parentRdn;
39 }
40
41 public static LdapName toLdapName(String distinguishedName) {
42 try {
43 return new LdapName(distinguishedName);
44 } catch (InvalidNameException e) {
45 throw new IllegalArgumentException("Cannot parse " + distinguishedName + " as LDAP name", e);
46 }
47 }
48
49 public static Rdn getLastRdn(LdapName dn) {
50 return dn.getRdn(dn.size() - 1);
51 }
52
53 public static String getLastRdnAsString(LdapName dn) {
54 return getLastRdn(dn).toString();
55 }
56
57 public static String getLastRdnValue(String dn) {
58 return getLastRdnValue(toLdapName(dn));
59 }
60
61 public static String getLastRdnValue(LdapName dn) {
62 return getLastRdn(dn).getValue().toString();
63 }
64
65 /** singleton */
66 private LdapNameUtils() {
67
68 }
69 }