X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Facr%2Fdirectory%2FHierarchyUnitContent.java;h=feae4b5176dcbe318b1e28def01928c81a5b026e;hb=54df376a9c2dd458a82eaa09bfbb718fe699dd0d;hp=9184c63afbb23fb53e9fdf7f0d6204720f5ffff6;hpb=4c7e1885b8bf3c93fa0919ace122e3f289a925ea;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/acr/directory/HierarchyUnitContent.java b/org.argeo.cms/src/org/argeo/cms/acr/directory/HierarchyUnitContent.java index 9184c63af..feae4b517 100644 --- a/org.argeo.cms/src/org/argeo/cms/acr/directory/HierarchyUnitContent.java +++ b/org.argeo.cms/src/org/argeo/cms/acr/directory/HierarchyUnitContent.java @@ -1,6 +1,7 @@ package org.argeo.cms.acr.directory; import java.util.ArrayList; +import java.util.Dictionary; import java.util.Iterator; import java.util.List; import java.util.Objects; @@ -10,36 +11,34 @@ import javax.xml.namespace.QName; import org.argeo.api.acr.Content; import org.argeo.api.acr.ContentName; import org.argeo.api.acr.CrName; -import org.argeo.api.acr.spi.ContentProvider; +import org.argeo.api.acr.DName; import org.argeo.api.acr.spi.ProvidedSession; -import org.argeo.cms.acr.AbstractContent; -import org.argeo.osgi.useradmin.HierarchyUnit; +import org.argeo.api.cms.directory.Directory; +import org.argeo.api.cms.directory.HierarchyUnit; +import org.argeo.cms.osgi.useradmin.UserDirectory; import org.osgi.service.useradmin.Role; -public class HierarchyUnitContent extends AbstractContent { +class HierarchyUnitContent extends AbstractDirectoryContent { private HierarchyUnit hierarchyUnit; - private DirectoryContentProvider provider; - public HierarchyUnitContent(ProvidedSession session, DirectoryContentProvider provider, HierarchyUnit hierarchyUnit) { - super(session); + super(session, provider); Objects.requireNonNull(hierarchyUnit); - this.provider = provider; this.hierarchyUnit = hierarchyUnit; } @Override - public ContentProvider getProvider() { - return provider; + Dictionary doGetProperties() { + return hierarchyUnit.getProperties(); } @Override public QName getName() { - if (hierarchyUnit.getParent() == null) {// base DN - String baseDn = hierarchyUnit.getBasePath(); - return new ContentName(baseDn); - } +// if (hierarchyUnit.getParent() == null) {// base DN +// String baseDn = hierarchyUnit.getBasePath(); +// return new ContentName(baseDn); +// } String name = hierarchyUnit.getHierarchyUnitName(); return new ContentName(name); } @@ -47,8 +46,8 @@ public class HierarchyUnitContent extends AbstractContent { @Override public Content getParent() { HierarchyUnit parentHu = hierarchyUnit.getParent(); - if (parentHu == null) { - return provider.getRootContent(getSession()); + if (parentHu instanceof Directory) { + return new DirectoryContent(getSession(), provider, hierarchyUnit.getDirectory()); } return new HierarchyUnitContent(getSession(), provider, parentHu); } @@ -56,10 +55,11 @@ public class HierarchyUnitContent extends AbstractContent { @Override public Iterator iterator() { List lst = new ArrayList<>(); - for (int i = 0; i < hierarchyUnit.getHierarchyChildCount(); i++) - lst.add(new HierarchyUnitContent(getSession(), provider, hierarchyUnit.getHierarchyChild(i))); + for (HierarchyUnit hu : hierarchyUnit.getDirectHierarchyUnits(false)) + lst.add(new HierarchyUnitContent(getSession(), provider, hu)); - for (Role role : hierarchyUnit.getRoles(null, false)) + for (Role role : ((UserDirectory) hierarchyUnit.getDirectory()).getHierarchyUnitRoles(hierarchyUnit, null, + false)) lst.add(new RoleContent(getSession(), provider, this, role)); return lst.iterator(); } @@ -67,12 +67,26 @@ public class HierarchyUnitContent extends AbstractContent { /* * TYPING */ + @Override + public List getContentClasses() { + List contentClasses = super.getContentClasses(); + contentClasses.add(DName.collection.qName()); + return contentClasses; + } + @SuppressWarnings("unchecked") @Override - public List getTypes() { - List res = new ArrayList<>(); - res.add(CrName.COLLECTION.get()); - return res; + public A adapt(Class clss) { + if (clss.equals(HierarchyUnit.class)) + return (A) hierarchyUnit; + return super.adapt(clss); + } + + /* + * ACCESSOR + */ + HierarchyUnit getHierarchyUnit() { + return hierarchyUnit; } }