]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms.ui/src/org/argeo/eclipse/ui/jcr/SimpleNodeContentProvider.java
Working UUID factory
[lgpl/argeo-commons.git] / org.argeo.cms.ui / src / org / argeo / eclipse / ui / jcr / SimpleNodeContentProvider.java
1 package org.argeo.eclipse.ui.jcr;
2
3 import java.util.ArrayList;
4 import java.util.Arrays;
5 import java.util.List;
6
7 import javax.jcr.Node;
8 import javax.jcr.RepositoryException;
9 import javax.jcr.Session;
10
11 import org.argeo.eclipse.ui.EclipseUiException;
12 import org.argeo.jcr.JcrUtils;
13
14 /** Simple JCR node content provider taking a list of String as base path. */
15 public class SimpleNodeContentProvider extends AbstractNodeContentProvider {
16 private static final long serialVersionUID = -8245193308831384269L;
17 private final List<String> basePaths;
18 private Boolean mkdirs = false;
19
20 public SimpleNodeContentProvider(Session session, String... basePaths) {
21 this(session, Arrays.asList(basePaths));
22 }
23
24 public SimpleNodeContentProvider(Session session, List<String> basePaths) {
25 super(session);
26 this.basePaths = basePaths;
27 }
28
29 @Override
30 protected Boolean isBasePath(String path) {
31 if (basePaths.contains(path))
32 return true;
33 return super.isBasePath(path);
34 }
35
36 public Object[] getElements(Object inputElement) {
37 try {
38 List<Node> baseNodes = new ArrayList<Node>();
39 for (String basePath : basePaths)
40 if (mkdirs && !getSession().itemExists(basePath))
41 baseNodes.add(JcrUtils.mkdirs(getSession(), basePath));
42 else
43 baseNodes.add(getSession().getNode(basePath));
44 return baseNodes.toArray();
45 } catch (RepositoryException e) {
46 throw new EclipseUiException("Cannot get base nodes for " + basePaths,
47 e);
48 }
49 }
50
51 public List<String> getBasePaths() {
52 return basePaths;
53 }
54
55 public void setMkdirs(Boolean mkdirs) {
56 this.mkdirs = mkdirs;
57 }
58
59 }