1 package org
.argeo
.jcr
.ui
.explorer
.providers
;
3 import java
.util
.ArrayList
;
7 import javax
.jcr
.RepositoryException
;
8 import javax
.jcr
.nodetype
.NodeType
;
9 import javax
.jcr
.version
.Version
;
10 import javax
.jcr
.version
.VersionHistory
;
11 import javax
.jcr
.version
.VersionIterator
;
12 import javax
.jcr
.version
.VersionManager
;
14 import org
.argeo
.ArgeoException
;
15 import org
.eclipse
.jface
.viewers
.ITreeContentProvider
;
16 import org
.eclipse
.jface
.viewers
.Viewer
;
19 * Implementation of the {@code ITreeContentProvider} in order to display some
20 * version informations of a JCR full versionable node in a tree like structure
23 public class FullVersioningTreeContentProvider
implements ITreeContentProvider
{
24 // private Node rootNode;
25 // private ItemComparator itemComparator = new ItemComparator();
28 * Sends back the first level of the Tree. input element must be a single
31 public Object
[] getElements(Object inputElement
) {
33 Node rootNode
= (Node
) inputElement
;
34 String curPath
= rootNode
.getPath();
35 VersionManager vm
= rootNode
.getSession().getWorkspace()
38 VersionHistory vh
= vm
.getVersionHistory(curPath
);
39 List
<Version
> result
= new ArrayList
<Version
>();
40 VersionIterator vi
= vh
.getAllLinearVersions();
42 while (vi
.hasNext()) {
43 result
.add(vi
.nextVersion());
45 return result
.toArray();
46 } catch (RepositoryException re
) {
47 throw new ArgeoException(
48 "Unexpected error while getting version elements", re
);
52 public Object
[] getChildren(Object parentElement
) {
54 if (parentElement
instanceof Version
) {
55 List
<Node
> tmp
= new ArrayList
<Node
>();
56 tmp
.add(((Version
) parentElement
).getFrozenNode());
59 } catch (RepositoryException re
) {
60 throw new ArgeoException("Unexpected error while getting child "
61 + "node for version element", re
);
66 public Object
getParent(Object element
) {
68 // this will not work in a simpleVersionning environment, parent is
70 if (element
instanceof Node
71 && ((Node
) element
).isNodeType(NodeType
.NT_FROZEN_NODE
)) {
72 Node node
= (Node
) element
;
73 return node
.getParent();
76 } catch (RepositoryException e
) {
81 public boolean hasChildren(Object element
) {
83 if (element
instanceof Version
)
85 else if (element
instanceof Node
)
86 return ((Node
) element
).hasNodes();
89 } catch (RepositoryException e
) {
90 throw new ArgeoException("Cannot check children of " + element
, e
);
94 public void dispose() {
97 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {