]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/acr/directory/HierarchyUnitContent.java
Rename transaction package
[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.Iterator;
5 import java.util.List;
6 import java.util.Objects;
7
8 import javax.xml.namespace.QName;
9
10 import org.argeo.api.acr.Content;
11 import org.argeo.api.acr.ContentName;
12 import org.argeo.api.acr.CrName;
13 import org.argeo.api.acr.spi.ContentProvider;
14 import org.argeo.api.acr.spi.ProvidedSession;
15 import org.argeo.cms.acr.AbstractContent;
16 import org.argeo.osgi.useradmin.HierarchyUnit;
17 import org.osgi.service.useradmin.Role;
18
19 class HierarchyUnitContent extends AbstractContent {
20 private HierarchyUnit hierarchyUnit;
21
22 private DirectoryContentProvider provider;
23
24 public HierarchyUnitContent(ProvidedSession session, DirectoryContentProvider provider,
25 HierarchyUnit hierarchyUnit) {
26 super(session);
27 Objects.requireNonNull(hierarchyUnit);
28 this.provider = provider;
29 this.hierarchyUnit = hierarchyUnit;
30 }
31
32 @Override
33 public ContentProvider getProvider() {
34 return provider;
35 }
36
37 @Override
38 public QName getName() {
39 // if (hierarchyUnit.getParent() == null) {// base DN
40 // String baseDn = hierarchyUnit.getBasePath();
41 // return new ContentName(baseDn);
42 // }
43 String name = hierarchyUnit.getHierarchyUnitName();
44 return new ContentName(name);
45 }
46
47 @Override
48 public Content getParent() {
49 HierarchyUnit parentHu = hierarchyUnit.getParent();
50 if (parentHu == null) {
51 return new DirectoryContent(getSession(), provider, hierarchyUnit.getDirectory());
52 }
53 return new HierarchyUnitContent(getSession(), provider, parentHu);
54 }
55
56 @Override
57 public Iterator<Content> iterator() {
58 List<Content> lst = new ArrayList<>();
59 for (HierarchyUnit hu : hierarchyUnit.getDirectHierachyUnits(false))
60 lst.add(new HierarchyUnitContent(getSession(), provider, hu));
61
62 for (Role role : hierarchyUnit.getHierarchyUnitRoles(null, false))
63 lst.add(new RoleContent(getSession(), provider, this, role));
64 return lst.iterator();
65 }
66
67 /*
68 * TYPING
69 */
70
71 @Override
72 public List<QName> getTypes() {
73 List<QName> res = new ArrayList<>();
74 res.add(CrName.COLLECTION.get());
75 return res;
76 }
77
78 /*
79 * ACCESSOR
80 */
81 HierarchyUnit getHierarchyUnit() {
82 return hierarchyUnit;
83 }
84
85
86 }