1 package org
.argeo
.cms
.acr
.xml
;
3 import java
.util
.Iterator
;
4 import java
.util
.NoSuchElementException
;
6 import org
.argeo
.api
.acr
.ArgeoNamespace
;
7 import org
.argeo
.api
.acr
.Content
;
8 import org
.argeo
.api
.acr
.CrName
;
9 import org
.argeo
.api
.acr
.spi
.ProvidedSession
;
10 import org
.w3c
.dom
.Element
;
11 import org
.w3c
.dom
.Node
;
12 import org
.w3c
.dom
.NodeList
;
14 class ElementIterator
implements Iterator
<Content
> {
15 private DomContent parent
;
16 private final ProvidedSession session
;
17 private final DomContentProvider provider
;
18 private final NodeList nodeList
;
20 private int currentIndex
;
21 private final int length
;
22 private Element nextElement
= null;
24 public ElementIterator(DomContent parent
, ProvidedSession session
, DomContentProvider provider
, NodeList nodeList
) {
26 this.session
= session
;
27 this.provider
= provider
;
28 this.nodeList
= nodeList
;
30 this.length
= nodeList
.getLength();
31 this.currentIndex
= 0;
32 this.nextElement
= findNext();
35 private Element
findNext() {
36 while (currentIndex
< length
) {
37 Node node
= nodeList
.item(currentIndex
);
38 if (node
instanceof Element
) {
39 return (Element
) node
;
47 public boolean hasNext() {
48 return nextElement
!= null;
52 public Content
next() {
53 if (nextElement
== null)
54 throw new NoSuchElementException();
56 String isMount
= nextElement
.getAttributeNS(ArgeoNamespace
.CR_NAMESPACE_URI
, CrName
.mount
.qName().getLocalPart());
57 if (isMount
.equals("true")) {
58 result
= session
.get(parent
.getPath() + '/' + nextElement
.getTagName());
62 result
= new DomContent(session
, provider
, nextElement
);
65 nextElement
= findNext();