]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.core/src/org/argeo/fm/jcr/NodeIteratorModel.java
Add JGit to client.
[lgpl/argeo-commons.git] / org.argeo.core / src / org / argeo / fm / jcr / NodeIteratorModel.java
1 package org.argeo.fm.jcr;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import javax.jcr.Node;
7 import javax.jcr.NodeIterator;
8
9 import freemarker.template.TemplateModel;
10 import freemarker.template.TemplateModelException;
11 import freemarker.template.TemplateSequenceModel;
12
13 public class NodeIteratorModel implements TemplateSequenceModel {
14 private final NodeIterator nodeIterator;
15
16 private final List<Node> nodes;
17 private int size;
18
19 public NodeIteratorModel(NodeIterator nodeIterator) {
20 super();
21 this.nodeIterator = nodeIterator;
22 this.size = (int) nodeIterator.getSize();
23 this.nodes = new ArrayList<>(this.size);
24 // TODO optimize with lazy loading
25 while (this.nodeIterator.hasNext()) {
26 Node node = this.nodeIterator.nextNode();
27 nodes.add(node);
28 }
29 this.size = nodes.size();
30 }
31
32 @Override
33 public TemplateModel get(int index) throws TemplateModelException {
34 return new JcrModel(nodes.get(index));
35 }
36
37 @Override
38 public int size() throws TemplateModelException {
39 return size;
40 }
41
42 }