1 package org
.argeo
.cms
.acr
.directory
;
3 import java
.util
.ArrayList
;
4 import java
.util
.Dictionary
;
5 import java
.util
.Iterator
;
7 import java
.util
.Objects
;
9 import javax
.xml
.namespace
.QName
;
11 import org
.argeo
.api
.acr
.Content
;
12 import org
.argeo
.api
.acr
.ContentName
;
13 import org
.argeo
.api
.acr
.CrName
;
14 import org
.argeo
.api
.acr
.spi
.ProvidedSession
;
15 import org
.argeo
.osgi
.useradmin
.UserDirectory
;
16 import org
.argeo
.util
.directory
.HierarchyUnit
;
17 import org
.osgi
.service
.useradmin
.Role
;
19 class HierarchyUnitContent
extends AbstractDirectoryContent
{
20 private HierarchyUnit hierarchyUnit
;
22 public HierarchyUnitContent(ProvidedSession session
, DirectoryContentProvider provider
,
23 HierarchyUnit hierarchyUnit
) {
24 super(session
, provider
);
25 Objects
.requireNonNull(hierarchyUnit
);
26 this.hierarchyUnit
= hierarchyUnit
;
30 Dictionary
<String
, Object
> doGetProperties() {
31 return hierarchyUnit
.getProperties();
35 public QName
getName() {
36 // if (hierarchyUnit.getParent() == null) {// base DN
37 // String baseDn = hierarchyUnit.getBasePath();
38 // return new ContentName(baseDn);
40 String name
= hierarchyUnit
.getHierarchyUnitName();
41 return new ContentName(name
);
45 public Content
getParent() {
46 HierarchyUnit parentHu
= hierarchyUnit
.getParent();
47 if (parentHu
== null) {
48 return new DirectoryContent(getSession(), provider
, hierarchyUnit
.getDirectory());
50 return new HierarchyUnitContent(getSession(), provider
, parentHu
);
54 public Iterator
<Content
> iterator() {
55 List
<Content
> lst
= new ArrayList
<>();
56 for (HierarchyUnit hu
: hierarchyUnit
.getDirectHierachyUnits(false))
57 lst
.add(new HierarchyUnitContent(getSession(), provider
, hu
));
59 for (Role role
: ((UserDirectory
) hierarchyUnit
.getDirectory()).getHierarchyUnitRoles(hierarchyUnit
, null,
61 lst
.add(new RoleContent(getSession(), provider
, this, role
));
62 return lst
.iterator();
69 public List
<QName
> getContentClasses() {
70 List
<QName
> contentClasses
= super.getContentClasses();
71 contentClasses
.add(CrName
.COLLECTION
.get());
72 return contentClasses
;
75 @SuppressWarnings("unchecked")
77 public <A
> A
adapt(Class
<A
> clss
) {
78 if (clss
.equals(HierarchyUnit
.class))
79 return (A
) hierarchyUnit
;
80 return super.adapt(clss
);
86 HierarchyUnit
getHierarchyUnit() {