1 package org
.argeo
.util
.directory
.ldap
;
3 import java
.util
.Arrays
;
4 import java
.util
.Collection
;
5 import java
.util
.Dictionary
;
7 import java
.util
.Locale
;
9 import java
.util
.StringJoiner
;
10 import java
.util
.TreeSet
;
12 import javax
.naming
.directory
.Attributes
;
13 import javax
.naming
.ldap
.LdapName
;
15 import org
.argeo
.util
.naming
.LdapAttrs
;
18 public interface LdapEntry
{
21 Attributes
getAttributes();
23 void publishAttributes(Attributes modifiedAttributes
);
25 List
<LdapName
> getReferences(String attributeId
);
27 Dictionary
<String
, Object
> getProperties();
29 boolean hasCredential(String key
, Object value
);
35 * Convert a collection of object classes to the format expected by an LDAP
38 public static void addObjectClasses(Dictionary
<String
, Object
> properties
, Collection
<String
> objectClasses
) {
39 String value
= properties
.get(LdapAttrs
.objectClasses
.name()).toString();
40 Set
<String
> currentObjectClasses
= new TreeSet
<>(Arrays
.asList(value
.toString().split("\n")));
41 currentObjectClasses
.addAll(objectClasses
);
42 StringJoiner values
= new StringJoiner("\n");
43 currentObjectClasses
.forEach((s
) -> values
.add(s
));
44 properties
.put(LdapAttrs
.objectClasses
.name(), values
.toString());
47 public static Object
getLocalized(Dictionary
<String
, Object
> properties
, String key
, Locale locale
) {
51 value
= properties
.get(key
+ ";lang-" + locale
.getLanguage() + "-" + locale
.getCountry());
53 value
= properties
.get(key
+ ";lang-" + locale
.getLanguage());
57 public static String
toLocalizedKey(String key
, Locale locale
) {
58 String country
= locale
.getCountry();
59 if ("".equals(country
)) {
60 return key
+ ";lang-" + locale
.getLanguage();
62 return key
+ ";lang-" + locale
.getLanguage() + "-" + locale
.getCountry();