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