]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/acr/directory/HierarchyUnitContent.java
Fix security providers
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / acr / directory / HierarchyUnitContent.java
1 package org.argeo.cms.acr.directory;
2
3 import java.util.ArrayList;
4 import java.util.Dictionary;
5 import java.util.Iterator;
6 import java.util.List;
7 import java.util.Objects;
8
9 import javax.xml.namespace.QName;
10
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;
19
20 class HierarchyUnitContent extends AbstractDirectoryContent {
21 private HierarchyUnit hierarchyUnit;
22
23 public HierarchyUnitContent(ProvidedSession session, DirectoryContentProvider provider,
24 HierarchyUnit hierarchyUnit) {
25 super(session, provider);
26 Objects.requireNonNull(hierarchyUnit);
27 this.hierarchyUnit = hierarchyUnit;
28 }
29
30 @Override
31 Dictionary<String, Object> doGetProperties() {
32 return hierarchyUnit.getProperties();
33 }
34
35 @Override
36 public QName getName() {
37 // if (hierarchyUnit.getParent() == null) {// base DN
38 // String baseDn = hierarchyUnit.getBasePath();
39 // return new ContentName(baseDn);
40 // }
41 String name = hierarchyUnit.getHierarchyUnitName();
42 return new ContentName(name);
43 }
44
45 @Override
46 public Content getParent() {
47 HierarchyUnit parentHu = hierarchyUnit.getParent();
48 if (parentHu instanceof Directory) {
49 return new DirectoryContent(getSession(), provider, hierarchyUnit.getDirectory());
50 }
51 return new HierarchyUnitContent(getSession(), provider, parentHu);
52 }
53
54 @Override
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));
59
60 for (Role role : ((UserDirectory) hierarchyUnit.getDirectory()).getHierarchyUnitRoles(hierarchyUnit, null,
61 false))
62 lst.add(new RoleContent(getSession(), provider, this, role));
63 return lst.iterator();
64 }
65
66 /*
67 * TYPING
68 */
69 @Override
70 public List<QName> getContentClasses() {
71 List<QName> contentClasses = super.getContentClasses();
72 contentClasses.add(CrName.collection.qName());
73 return contentClasses;
74 }
75
76 @SuppressWarnings("unchecked")
77 @Override
78 public <A> A adapt(Class<A> clss) {
79 if (clss.equals(HierarchyUnit.class))
80 return (A) hierarchyUnit;
81 return super.adapt(clss);
82 }
83
84 /*
85 * ACCESSOR
86 */
87 HierarchyUnit getHierarchyUnit() {
88 return hierarchyUnit;
89 }
90
91 }