1 package org
.argeo
.cms
.acr
.xml
;
3 import java
.util
.Iterator
;
4 import java
.util
.NoSuchElementException
;
6 import org
.argeo
.api
.acr
.Content
;
7 import org
.argeo
.api
.acr
.CrName
;
8 import org
.argeo
.api
.acr
.spi
.ProvidedSession
;
9 import org
.w3c
.dom
.Element
;
10 import org
.w3c
.dom
.Node
;
11 import org
.w3c
.dom
.NodeList
;
13 class ElementIterator
implements Iterator
<Content
> {
14 private DomContent parent
;
15 private final ProvidedSession session
;
16 private final DomContentProvider provider
;
17 private final NodeList nodeList
;
19 private int currentIndex
;
20 private final int length
;
21 private Element nextElement
= null;
23 public ElementIterator(DomContent parent
, ProvidedSession session
, DomContentProvider provider
, NodeList nodeList
) {
25 this.session
= session
;
26 this.provider
= provider
;
27 this.nodeList
= nodeList
;
29 this.length
= nodeList
.getLength();
30 this.currentIndex
= 0;
31 this.nextElement
= findNext();
34 private Element
findNext() {
35 while (currentIndex
< length
) {
36 Node node
= nodeList
.item(currentIndex
);
37 if (node
instanceof Element
) {
38 return (Element
) node
;
46 public boolean hasNext() {
47 return nextElement
!= null;
51 public Content
next() {
52 if (nextElement
== null)
53 throw new NoSuchElementException();
55 String isMount
= nextElement
.getAttributeNS(CrName
.CR_NAMESPACE_URI
, CrName
.MOUNT
.get().getLocalPart());
56 if (isMount
.equals("true")) {
57 result
= session
.get(parent
.getPath() + '/' + nextElement
.getTagName());
61 result
= new DomContent(session
, provider
, nextElement
);
64 nextElement
= findNext();