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
.Directory
;
17 import org
.argeo
.util
.directory
.HierarchyUnit
;
18 import org
.osgi
.service
.useradmin
.Role
;
20 class HierarchyUnitContent
extends AbstractDirectoryContent
{
21 private HierarchyUnit hierarchyUnit
;
23 public HierarchyUnitContent(ProvidedSession session
, DirectoryContentProvider provider
,
24 HierarchyUnit hierarchyUnit
) {
25 super(session
, provider
);
26 Objects
.requireNonNull(hierarchyUnit
);
27 this.hierarchyUnit
= hierarchyUnit
;
31 Dictionary
<String
, Object
> doGetProperties() {
32 return hierarchyUnit
.getProperties();
36 public QName
getName() {
37 // if (hierarchyUnit.getParent() == null) {// base DN
38 // String baseDn = hierarchyUnit.getBasePath();
39 // return new ContentName(baseDn);
41 String name
= hierarchyUnit
.getHierarchyUnitName();
42 return new ContentName(name
);
46 public Content
getParent() {
47 HierarchyUnit parentHu
= hierarchyUnit
.getParent();
48 if (parentHu
instanceof Directory
) {
49 return new DirectoryContent(getSession(), provider
, hierarchyUnit
.getDirectory());
51 return new HierarchyUnitContent(getSession(), provider
, parentHu
);
55 public Iterator
<Content
> iterator() {
56 List
<Content
> lst
= new ArrayList
<>();
57 for (HierarchyUnit hu
: hierarchyUnit
.getDirectHierarchyUnits(false))
58 lst
.add(new HierarchyUnitContent(getSession(), provider
, hu
));
60 for (Role role
: ((UserDirectory
) hierarchyUnit
.getDirectory()).getHierarchyUnitRoles(hierarchyUnit
, null,
62 lst
.add(new RoleContent(getSession(), provider
, this, role
));
63 return lst
.iterator();
70 public List
<QName
> getContentClasses() {
71 List
<QName
> contentClasses
= super.getContentClasses();
72 contentClasses
.add(CrName
.collection
.qName());
73 return contentClasses
;
76 @SuppressWarnings("unchecked")
78 public <A
> A
adapt(Class
<A
> clss
) {
79 if (clss
.equals(HierarchyUnit
.class))
80 return (A
) hierarchyUnit
;
81 return super.adapt(clss
);
87 HierarchyUnit
getHierarchyUnit() {