]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/acr/directory/DirectoryContent.java
Introduce CMS JShell
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / acr / directory / DirectoryContent.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
8 import javax.xml.namespace.QName;
9
10 import org.argeo.api.acr.Content;
11 import org.argeo.api.acr.ContentName;
12 import org.argeo.api.acr.spi.ProvidedSession;
13 import org.argeo.api.cms.directory.CmsDirectory;
14 import org.argeo.api.cms.directory.HierarchyUnit;
15
16 class DirectoryContent extends AbstractDirectoryContent {
17 private CmsDirectory directory;
18
19 public DirectoryContent(ProvidedSession session, DirectoryContentProvider provider, CmsDirectory directory) {
20 super(session, provider);
21 this.directory = directory;
22 }
23
24 @Override
25 Dictionary<String, Object> doGetProperties() {
26 return directory.getProperties();
27 }
28
29 @Override
30 public Iterator<Content> iterator() {
31 List<Content> res = new ArrayList<>();
32 for (Iterator<HierarchyUnit> it = directory.getDirectHierarchyUnits(false).iterator(); it.hasNext();) {
33 res.add(new HierarchyUnitContent(getSession(), provider, it.next()));
34 }
35 return res.iterator();
36 }
37
38 @Override
39 public QName getName() {
40 return new ContentName(directory.getName());
41 }
42
43 @Override
44 public Content getParent() {
45 return provider.getRootContent(getSession());
46 }
47
48 @SuppressWarnings("unchecked")
49 @Override
50 public <A> A adapt(Class<A> clss) {
51 if (clss.equals(HierarchyUnit.class))
52 return (A) directory;
53 if (clss.equals(CmsDirectory.class))
54 return (A) directory;
55 return super.adapt(clss);
56 }
57
58 }