]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/NodeIndexerVisitor.java
Improve licenses and sources
[gpl/argeo-slc.git] / runtime / org.argeo.slc.repo / src / main / java / org / argeo / slc / repo / NodeIndexerVisitor.java
1 package org.argeo.slc.repo;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import javax.jcr.ItemVisitor;
7 import javax.jcr.Node;
8 import javax.jcr.NodeIterator;
9 import javax.jcr.Property;
10 import javax.jcr.RepositoryException;
11
12 /**
13 * Recursively visit a sub tree and apply the list of node indexer on supported
14 * nodes.
15 */
16 public class NodeIndexerVisitor implements ItemVisitor {
17 /** order may be important */
18 private List<NodeIndexer> nodeIndexers = new ArrayList<NodeIndexer>();
19
20 public NodeIndexerVisitor() {
21 }
22
23 /** Convenience constructor */
24 public NodeIndexerVisitor(NodeIndexer nodeIndexer) {
25 nodeIndexers.add(nodeIndexer);
26 }
27
28 public NodeIndexerVisitor(List<NodeIndexer> nodeIndexers) {
29 this.nodeIndexers = nodeIndexers;
30 }
31
32 public void visit(Node node) throws RepositoryException {
33 for (NodeIndexer nodeIndexer : nodeIndexers)
34 if (nodeIndexer.support(node.getPath()))
35 nodeIndexer.index(node);
36
37 for (NodeIterator it = node.getNodes(); it.hasNext();)
38 visit(it.nextNode());
39 }
40
41 public void visit(Property property) throws RepositoryException {
42 }
43
44 public void setNodeIndexers(List<NodeIndexer> nodeIndexers) {
45 this.nodeIndexers = nodeIndexers;
46 }
47
48 }