Make directory content adaptable
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / acr / directory / DirectoryContent.java
index dc9aefa800b7385f4e4848ba8ebaa628d821a944..6e39280cee86a12bbb4d1dfa85f51ddedb8c392a 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;
 
@@ -8,31 +9,27 @@ import javax.xml.namespace.QName;
 
 import org.argeo.api.acr.Content;
 import org.argeo.api.acr.ContentName;
-import org.argeo.api.acr.spi.ContentProvider;
 import org.argeo.api.acr.spi.ProvidedSession;
-import org.argeo.cms.acr.AbstractContent;
-import org.argeo.osgi.useradmin.HierarchyUnit;
-import org.argeo.osgi.useradmin.UserDirectory;
+import org.argeo.api.cms.directory.CmsDirectory;
+import org.argeo.api.cms.directory.HierarchyUnit;
 
-class DirectoryContent extends AbstractContent {
-       private UserDirectory directory;
-       private DirectoryContentProvider provider;
+class DirectoryContent extends AbstractDirectoryContent {
+       private CmsDirectory directory;
 
-       public DirectoryContent(ProvidedSession session, DirectoryContentProvider provider, UserDirectory directory) {
-               super(session);
-               this.provider = provider;
+       public DirectoryContent(ProvidedSession session, DirectoryContentProvider provider, CmsDirectory directory) {
+               super(session, provider);
                this.directory = directory;
        }
 
        @Override
-       public ContentProvider getProvider() {
-               return provider;
+       Dictionary<String, Object> doGetProperties() {
+               return directory.getProperties();
        }
 
        @Override
        public Iterator<Content> iterator() {
                List<Content> res = new ArrayList<>();
-               for (Iterator<HierarchyUnit> it = directory.getRootHierarchyUnits(false).iterator(); it.hasNext();) {
+               for (Iterator<HierarchyUnit> it = directory.getDirectHierarchyUnits(false).iterator(); it.hasNext();) {
                        res.add(new HierarchyUnitContent(getSession(), provider, it.next()));
                }
                return res.iterator();
@@ -48,4 +45,14 @@ class DirectoryContent extends AbstractContent {
                return provider.getRootContent(getSession());
        }
 
+       @SuppressWarnings("unchecked")
+       @Override
+       public <A> A adapt(Class<A> clss) {
+               if (clss.equals(HierarchyUnit.class))
+                       return (A) directory;
+               if (clss.equals(CmsDirectory.class))
+                       return (A) directory;
+               return super.adapt(clss);
+       }
+
 }