}
/**
- * Always returns <code>true</code> since random UUIDs are by definition not
- * opaque.
+ * Always returns <code>true</code> since random UUIDs are by definition opaque.
*/
@Override
public final boolean isOpaque() {
/** Search among groups including system roles and users if needed */
List<User> listGroups(String filter, boolean includeUsers, boolean includeSystemRoles);
+// /**
+// * Lists functional accounts, that is users with regular access to the system
+// * under this functional hierarchy unit (which probably have technical direct
+// * sub hierarchy units), excluding groups which are not explicitly users.
+// */
+// Set<User> listAccounts(HierarchyUnit hierarchyUnit, boolean deep);
+
/*
* EDITION
*/
public <A> Optional<A> get(QName key, Class<A> clss) {
String attrName = key.getLocalPart();
Object value = doGetProperties().get(attrName);
+ if (Long.class.isAssignableFrom(clss))
+ return Optional.of((A) (Long) Long.parseLong(value.toString()));
if (value == null)
return Optional.empty();
// TODO deal with type and multiple
return provider;
}
-
}
addUsers(users, group, filter);
return users;
}
+
+
+
+// @Override
+// public Set<User> listAccounts(HierarchyUnit hierarchyUnit, boolean deep) {
+// if(!hierarchyUnit.isFunctional())
+// throw new IllegalArgumentException("Hierarchy unit "+hierarchyUnit.getBase()+" is not functional");
+// UserDirectory directory = (UserDirectory)hierarchyUnit.getDirectory();
+// Set<User> res = new HashSet<>();
+// for(HierarchyUnit technicalHu:hierarchyUnit.getDirectHierarchyUnits(false)) {
+// if(technicalHu.isFunctional())
+// continue;
+// for(Role role:directory.getHierarchyUnitRoles(technicalHu, null, false)) {
+// if(role)
+// }
+// }
+// return res;
+// }
/** Recursively add users to list */
private void addUsers(Set<User> users, Group group, String filter) {
package org.argeo.util.directory.ldap;
import java.util.Arrays;
+import java.util.Collection;
import java.util.Dictionary;
import java.util.List;
import java.util.Set;
/*
* UTILITIES
*/
- public static void addObjectClasses(Dictionary<String, Object> properties, Set<String> objectClasses) {
+ /**
+ * Convert a collection of object classes to the format expected by an LDAP
+ * backend.
+ */
+ public static void addObjectClasses(Dictionary<String, Object> properties, Collection<String> objectClasses) {
String value = properties.get(LdapAttrs.objectClasses.name()).toString();
Set<String> currentObjectClasses = new TreeSet<>(Arrays.asList(value.toString().split("\n")));
currentObjectClasses.addAll(objectClasses);