1 package org
.argeo
.jcr
.ui
.explorer
.browser
;
3 import java
.util
.ArrayList
;
7 import javax
.jcr
.Session
;
9 import org
.argeo
.eclipse
.ui
.TreeParent
;
10 import org
.argeo
.jcr
.ArgeoJcrConstants
;
11 import org
.argeo
.jcr
.JcrUtils
;
12 import org
.argeo
.jcr
.RepositoryRegister
;
13 import org
.argeo
.jcr
.ui
.explorer
.model
.RepositoriesNode
;
14 import org
.argeo
.jcr
.ui
.explorer
.model
.SingleJcrNode
;
15 import org
.eclipse
.jface
.viewers
.ITreeContentProvider
;
16 import org
.eclipse
.jface
.viewers
.Viewer
;
19 * Implementation of the {@code ITreeContentProvider} to display multiple
20 * repository environment in a tree like structure
23 public class NodeContentProvider
implements ITreeContentProvider
{
24 // private final static Log log =
25 // LogFactory.getLog(NodeContentProvider.class);
28 private RepositoryRegister repositoryRegister
;
29 private Session userSession
;
32 // private ItemComparator itemComparator = new ItemComparator();
34 public NodeContentProvider(Session userSession
,
35 RepositoryRegister repositoryRegister
) {
36 this.userSession
= userSession
;
37 this.repositoryRegister
= repositoryRegister
;
41 * Sends back the first level of the Tree. Independent from inputElement
44 public Object
[] getElements(Object inputElement
) {
45 List
<Object
> objs
= new ArrayList
<Object
>();
46 if (userSession
!= null) {
47 Node userHome
= JcrUtils
.getUserHome(userSession
);
49 // TODO : find a way to dynamically get alias for the node
50 objs
.add(new SingleJcrNode(null, userHome
, userSession
51 .getUserID(), ArgeoJcrConstants
.ALIAS_NODE
));
53 if (repositoryRegister
!= null)
54 objs
.add(new RepositoriesNode("Repositories", repositoryRegister
,
56 return objs
.toArray();
59 public Object
[] getChildren(Object parentElement
) {
60 // if (parentElement instanceof Node) {
61 // return childrenNodes((Node) parentElement);
62 // } else if (parentElement instanceof RepositoryNode) {
63 // return ((RepositoryNode) parentElement).getChildren();
64 // } else if (parentElement instanceof WorkspaceNode) {
65 // Session session = ((WorkspaceNode) parentElement).getSession();
66 // if (session == null)
67 // return new Object[0];
70 // return childrenNodes(session.getRootNode());
71 // } catch (RepositoryException e) {
72 // throw new ArgeoException("Cannot retrieve root node of "
75 // } else if (parentElement instanceof RepositoryRegister) {
76 // RepositoryRegister repositoryRegister = (RepositoryRegister)
78 // List<RepositoryNode> nodes = new ArrayList<RepositoryNode>();
79 // Map<String, Repository> repositories = repositoryRegister
80 // .getRepositories();
81 // for (String name : repositories.keySet()) {
82 // nodes.add(new RepositoryNode(name, repositories.get(name)));
84 // return nodes.toArray();
86 if (parentElement
instanceof TreeParent
)
87 return ((TreeParent
) parentElement
).getChildren();
93 public Object
getParent(Object element
) {
94 if (element
instanceof TreeParent
) {
95 return ((TreeParent
) element
).getParent();
100 public boolean hasChildren(Object element
) {
101 if (element
instanceof RepositoriesNode
) {
102 RepositoryRegister rr
= ((RepositoriesNode
) element
)
103 .getRepositoryRegister();
104 return rr
.getRepositories().size() > 0;
105 } else if (element
instanceof TreeParent
) {
106 TreeParent tp
= (TreeParent
) element
;
107 return tp
.hasChildren();
108 // } else if (element instanceof RepositoryNode) {
109 // return ((RepositoryNode) element).hasChildren();
110 // } else if (element instanceof WorkspaceNode) {
111 // return ((WorkspaceNode) element).getSession() != null;
114 // } catch (RepositoryException e) {
115 // throw new ArgeoException("Cannot check children of " + element, e);
119 public void dispose() {
122 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {
125 // protected Object[] childrenNodes(Node parentNode) {
127 // List<Node> children = new ArrayList<Node>();
128 // NodeIterator nit = parentNode.getNodes();
129 // while (nit.hasNext()) {
130 // Node node = nit.nextNode();
131 // children.add(node);
133 // Node[] arr = children.toArray(new Node[children.size()]);
134 // Arrays.sort(arr, itemComparator);
136 // } catch (RepositoryException e) {
137 // throw new ArgeoException("Cannot list children of " + parentNode, e);