]> git.argeo.org Git - lgpl/argeo-commons.git/blob - ui/jcr/SimpleNodeContentProvider.java
Prepare next development cycle
[lgpl/argeo-commons.git] / 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.ArgeoException;
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 final List<String> basePaths;
17 private Boolean mkdirs = false;
18
19 public SimpleNodeContentProvider(Session session, String... basePaths) {
20 this(session, Arrays.asList(basePaths));
21 }
22
23 public SimpleNodeContentProvider(Session session, List<String> basePaths) {
24 super(session);
25 this.basePaths = basePaths;
26 }
27
28 @Override
29 protected Boolean isBasePath(String path) {
30 if (basePaths.contains(path))
31 return true;
32 return super.isBasePath(path);
33 }
34
35 public Object[] getElements(Object inputElement) {
36 try {
37 List<Node> baseNodes = new ArrayList<Node>();
38 for (String basePath : basePaths)
39 if (mkdirs && !getSession().itemExists(basePath))
40 baseNodes.add(JcrUtils.mkdirs(getSession(), basePath));
41 else
42 baseNodes.add(getSession().getNode(basePath));
43 return baseNodes.toArray();
44 } catch (RepositoryException e) {
45 throw new ArgeoException("Cannot get base nodes for " + basePaths,
46 e);
47 }
48 }
49
50 public List<String> getBasePaths() {
51 return basePaths;
52 }
53
54 public void setMkdirs(Boolean mkdirs) {
55 this.mkdirs = mkdirs;
56 }
57
58 }