package net.ion.craken.node.crud;
import java.util.Iterator;
import java.util.List;
import net.ion.craken.node.ReadSession;
import net.ion.craken.node.crud.tree.Fqn;
import net.ion.framework.util.ListUtil;
public class WalkChildrenIterator implements Iterable<WalkReadNode>, Iterator<WalkReadNode> {
private ReadSession session;
private List<WalkReadNode> list;
private int index = 0 ;
WalkChildrenIterator(ReadSession session, List<WalkReadNode> list) {
this.session = session ;
this.list = list ;
}
final static WalkChildrenIterator create(ReadSession session, List<WalkReadNode> list){
return new WalkChildrenIterator(session, list) ;
}
@Override
public Iterator<WalkReadNode> iterator() {
return this;
}
@Override
public boolean hasNext() {
return list.size() > index;
}
public int count() {
return list.size() ;
}
@Override
public WalkReadNode next() {
return list.get(index++);
}
@Override
public void remove() {
throw new UnsupportedOperationException("readonly");
}
public ReadSession session() {
return session;
}
public ReadChildren toReadChildren() {
List<Fqn> tnodes = ListUtil.newList() ;
for (WalkReadNode trn : list) {
tnodes.add(trn.fqn()) ;
}
return new ReadChildren(session, null, tnodes.iterator());
}
}