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
.DName
;
15 import org
.argeo
.api
.acr
.spi
.ProvidedSession
;
16 import org
.argeo
.api
.cms
.directory
.CmsDirectory
;
17 import org
.argeo
.api
.cms
.directory
.HierarchyUnit
;
18 import org
.argeo
.api
.cms
.directory
.UserDirectory
;
19 import org
.osgi
.service
.useradmin
.Role
;
21 class HierarchyUnitContent
extends AbstractDirectoryContent
{
22 private HierarchyUnit hierarchyUnit
;
24 public HierarchyUnitContent(ProvidedSession session
, DirectoryContentProvider provider
,
25 HierarchyUnit hierarchyUnit
) {
26 super(session
, provider
);
27 Objects
.requireNonNull(hierarchyUnit
);
28 this.hierarchyUnit
= hierarchyUnit
;
32 Dictionary
<String
, Object
> doGetProperties() {
33 return hierarchyUnit
.getProperties();
37 public QName
getName() {
38 // if (hierarchyUnit.getParent() == null) {// base DN
39 // String baseDn = hierarchyUnit.getBasePath();
40 // return new ContentName(baseDn);
42 String name
= hierarchyUnit
.getHierarchyUnitName();
43 return new ContentName(name
);
47 public Content
getParent() {
48 HierarchyUnit parentHu
= hierarchyUnit
.getParent();
49 if (parentHu
instanceof CmsDirectory
) {
50 return new DirectoryContent(getSession(), provider
, hierarchyUnit
.getDirectory());
52 return new HierarchyUnitContent(getSession(), provider
, parentHu
);
56 public Iterator
<Content
> iterator() {
57 List
<Content
> lst
= new ArrayList
<>();
58 for (HierarchyUnit hu
: hierarchyUnit
.getDirectHierarchyUnits(false))
59 lst
.add(new HierarchyUnitContent(getSession(), provider
, hu
));
61 for (Role role
: ((UserDirectory
) hierarchyUnit
.getDirectory()).getHierarchyUnitRoles(hierarchyUnit
, null,
63 lst
.add(new RoleContent(getSession(), provider
, this, role
));
64 return lst
.iterator();
71 public List
<QName
> getContentClasses() {
72 List
<QName
> contentClasses
= super.getContentClasses();
73 contentClasses
.add(DName
.collection
.qName());
74 return contentClasses
;
77 @SuppressWarnings("unchecked")
79 public <A
> A
adapt(Class
<A
> clss
) {
80 if (clss
.equals(HierarchyUnit
.class))
81 return (A
) hierarchyUnit
;
82 return super.adapt(clss
);
88 HierarchyUnit
getHierarchyUnit() {