package net.ion.craken.node.crud.util ; import java.util.Iterator; import java.util.List; import java.util.Set; import net.ion.craken.node.IteratorList; import net.ion.craken.node.WriteNode; import net.ion.craken.node.convert.Functions; import net.ion.craken.node.crud.WriteChildrenEach; import net.ion.craken.node.crud.WriteChildrenIterator; import net.ion.framework.util.ListUtil; import net.ion.framework.util.SetUtil; public class WriteChildrenEachs { public static final WriteChildrenEach<List<WriteNode>> LIST = new WriteChildrenEach<List<WriteNode>>() { @Override public List<WriteNode> handle(WriteChildrenIterator citer) { List<WriteNode> result = ListUtil.newList() ; while(citer.hasNext()){ result.add(citer.next()) ; } return result; } }; public static final WriteChildrenEach<Void> DEBUG = new WriteChildrenEach<Void>(){ @Override public Void handle(WriteChildrenIterator citer) { while(citer.hasNext()){ WriteNode next = citer.next(); citer.session().credential().tracer().println(next.fqn() + "," + next.transformer(Functions.WRITE_TOFLATMAP)) ; } return null; } }; public static final WriteChildrenEach<Set<String>> CHILDREN_NAME = new WriteChildrenEach<Set<String>>(){ @Override public Set<String> handle(WriteChildrenIterator citer) { Set result = SetUtil.newSet() ; while(citer.hasNext()){ result.add(citer.next().fqn().name()) ; } return result; } }; public static final WriteChildrenEach<Integer> COUNT = new WriteChildrenEach<Integer>(){ @Override public Integer handle(WriteChildrenIterator citer) { return citer.count(); } }; public static final WriteChildrenEach<IteratorList<WriteNode>> ITERATOR = new WriteChildrenEach<IteratorList<WriteNode>>() { @Override public IteratorList<WriteNode> handle(final WriteChildrenIterator citer) { return new IteratorList<WriteNode>() { @Override public Iterator<WriteNode> iterator() { return citer; } @Override public WriteNode next() { return citer.next(); } @Override public boolean hasNext() { return citer.hasNext(); } @Override public List<WriteNode> toList() { return citer.list(); } public int count(){ return citer.count() ; } }; } }; public static final WriteChildrenEach<WriteNode> FIRSTNODE = new WriteChildrenEach<WriteNode>() { @Override public WriteNode handle(WriteChildrenIterator citer) { return citer.hasNext() ? citer.next() : null; } }; }