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
.argeo
.jcr
.ui
.explorer
.browser
.ItemComparator
;
16 import org
.eclipse
.jface
.viewers
.ITreeContentProvider
;
17 import org
.eclipse
.jface
.viewers
.Viewer
;
20 * Implementation of the {@code ITreeContentProvider} in order to display some
21 * version informations of a JCR full versionable node in a tree like structure
24 public class FullVersioningTreeContentProvider
implements ITreeContentProvider
{
25 // private Node rootNode;
26 private ItemComparator itemComparator
= new ItemComparator();
29 * Sends back the first level of the Tree. input element must be a single
32 public Object
[] getElements(Object inputElement
) {
34 Node rootNode
= (Node
) inputElement
;
35 String curPath
= rootNode
.getPath();
36 VersionManager vm
= rootNode
.getSession().getWorkspace()
39 VersionHistory vh
= vm
.getVersionHistory(curPath
);
40 List
<Version
> result
= new ArrayList
<Version
>();
41 VersionIterator vi
= vh
.getAllLinearVersions();
43 while (vi
.hasNext()) {
44 result
.add(vi
.nextVersion());
46 return result
.toArray();
47 } catch (RepositoryException re
) {
48 throw new ArgeoException(
49 "Unexpected error while getting version elements", re
);
53 public Object
[] getChildren(Object parentElement
) {
55 if (parentElement
instanceof Version
) {
56 List
<Node
> tmp
= new ArrayList
<Node
>();
57 tmp
.add(((Version
) parentElement
).getFrozenNode());
59 // Node node = ((Version) parentElement).getFrozenNode();
60 // return new Object[] { node };
62 } catch (RepositoryException re
) {
63 throw new ArgeoException("Unexpected error while getting child "
64 + "node for version element", re
);
69 public Object
getParent(Object element
) {
71 // this will not work in a simpleVersionning environment, parent is
73 if (element
instanceof Node
74 && ((Node
) element
).isNodeType(NodeType
.NT_FROZEN_NODE
)) {
75 Node node
= (Node
) element
;
76 return node
.getParent();
79 } catch (RepositoryException e
) {
84 public boolean hasChildren(Object element
) {
86 if (element
instanceof Version
)
88 else if (element
instanceof Node
)
89 return ((Node
) element
).hasNodes();
92 } catch (RepositoryException e
) {
93 throw new ArgeoException("Cannot check children of " + element
, e
);
97 public void dispose() {
100 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {