]> git.argeo.org Git - gpl/argeo-suite.git/blob - HierarchyUnitPart.java
8a2059f75e506832d13cf0367f532aefcf2a2de8
[gpl/argeo-suite.git] / HierarchyUnitPart.java
1 package org.argeo.app.ui.people;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import org.argeo.api.acr.Content;
7 import org.argeo.api.acr.ContentSession;
8 import org.argeo.api.acr.ldap.LdapObj;
9 import org.argeo.api.cms.directory.CmsDirectory;
10 import org.argeo.api.cms.directory.CmsUserManager;
11 import org.argeo.api.cms.directory.HierarchyUnit;
12 import org.argeo.api.cms.directory.UserDirectory;
13 import org.argeo.api.cms.ux.CmsIcon;
14 import org.argeo.app.ux.SuiteIcon;
15 import org.argeo.cms.CurrentUser;
16 import org.argeo.cms.acr.ContentUtils;
17 import org.argeo.cms.auth.CmsRole;
18 import org.argeo.cms.ux.widgets.AbstractHierarchicalPart;
19 import org.argeo.cms.ux.widgets.Column;
20
21 public class HierarchyUnitPart extends AbstractHierarchicalPart<HierarchyUnit> {
22 private ContentSession contentSession;
23 private CmsUserManager cmsUserManager;
24
25 public HierarchyUnitPart(ContentSession contentSession, CmsUserManager cmsUserManager) {
26 this.contentSession = contentSession;
27 this.cmsUserManager = cmsUserManager;
28
29 addColumn(new Column<HierarchyUnit>() {
30
31 @Override
32 public String getText(HierarchyUnit model) {
33 return model.getHierarchyUnitLabel(CurrentUser.locale());
34 }
35
36 @Override
37 public CmsIcon getIcon(HierarchyUnit model) {
38 Content content = ContentUtils.hierarchyUnitToContent(contentSession, model);
39 if (content.hasContentClass(LdapObj.organization))
40 return SuiteIcon.organisation;
41 else if (content.hasContentClass(LdapObj.posixGroup))
42 return SuiteIcon.users;
43 else
44 return SuiteIcon.addressBook;
45 }
46 });
47 }
48
49 @Override
50 public List<HierarchyUnit> getChildren(HierarchyUnit parent) {
51 List<HierarchyUnit> visible = new ArrayList<>();
52 if (parent != null) {
53 if (parent instanceof CmsDirectory) // do no show children of the directories
54 return visible;
55 for (HierarchyUnit hu : parent.getDirectHierarchyUnits(true)) {
56 visible.add(hu);
57 }
58 } else {
59 for (UserDirectory directory : cmsUserManager.getUserDirectories()) {
60 if (CurrentUser.implies(CmsRole.userAdmin, directory.getBase())) {
61 visible.add(directory);
62 }
63 for (HierarchyUnit hu : directory.getDirectHierarchyUnits(true)) {
64 if (CurrentUser.implies(CmsRole.userAdmin, hu.getBase())) {
65 visible.add(hu);
66 }
67 }
68
69 }
70 }
71 return visible;
72 }
73
74 }