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
14
15
16 public class NodeIndexerVisitor implements ItemVisitor {
17
18 private List<NodeIndexer> nodeIndexers = new ArrayList<NodeIndexer>();
19
20 public NodeIndexerVisitor() {
21 }
22
23
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 }