Massive package refactoring
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / acr / directory / HierarchyUnitContent.java
index 78bc72f5d041912a68bfa87c741ed3c7c8acc382..feae4b5176dcbe318b1e28def01928c81a5b026e 100644 (file)
@@ -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,28 +11,26 @@ 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;
 
-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<String, Object> doGetProperties() {
+               return hierarchyUnit.getProperties();
        }
 
        @Override
@@ -47,7 +46,7 @@ class HierarchyUnitContent extends AbstractContent {
        @Override
        public Content getParent() {
                HierarchyUnit parentHu = hierarchyUnit.getParent();
-               if (parentHu == null) {
+               if (parentHu instanceof Directory) {
                        return new DirectoryContent(getSession(), provider, hierarchyUnit.getDirectory());
                }
                return new HierarchyUnitContent(getSession(), provider, parentHu);
@@ -56,10 +55,11 @@ class HierarchyUnitContent extends AbstractContent {
        @Override
        public Iterator<Content> iterator() {
                List<Content> lst = new ArrayList<>();
-               for (HierarchyUnit hu : hierarchyUnit.getDirectHierachyUnits(false))
+               for (HierarchyUnit hu : hierarchyUnit.getDirectHierarchyUnits(false))
                        lst.add(new HierarchyUnitContent(getSession(), provider, hu));
 
-               for (Role role : hierarchyUnit.getHierarchyUnitRoles(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,19 @@ class HierarchyUnitContent extends AbstractContent {
        /*
         * TYPING
         */
+       @Override
+       public List<QName> getContentClasses() {
+               List<QName> contentClasses = super.getContentClasses();
+               contentClasses.add(DName.collection.qName());
+               return contentClasses;
+       }
 
+       @SuppressWarnings("unchecked")
        @Override
-       public List<QName> getTypes() {
-               List<QName> res = new ArrayList<>();
-               res.add(CrName.COLLECTION.get());
-               return res;
+       public <A> A adapt(Class<A> clss) {
+               if (clss.equals(HierarchyUnit.class))
+                       return (A) hierarchyUnit;
+               return super.adapt(clss);
        }
 
        /*
@@ -82,5 +89,4 @@ class HierarchyUnitContent extends AbstractContent {
                return hierarchyUnit;
        }
 
-       
 }