All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.tacitknowledge.jcr.testing.impl.NodeIteratorAdapter Maven / Gradle / Ivy

package com.tacitknowledge.jcr.testing.impl;

import org.apache.commons.collections.IteratorUtils;

import javax.jcr.Node;
import javax.jcr.NodeIterator;
import java.util.Iterator;
import java.util.List;

public class NodeIteratorAdapter implements NodeIterator {

    private int position;
    private Iterator iterator;
    private List nodeList;

    public NodeIteratorAdapter(Iterator iterator) {
        this.nodeList = IteratorUtils.toList(iterator);
        this.iterator = nodeList.iterator();
        this.position = 0;
    }

    @Override
    public Node nextNode() {
        Node next = iterator.next();
        removeFromList(1);
        return next;
    }

    @Override
    public void skip(long skipNum) {
        removeFromList((int) skipNum);
        iterator = nodeList.iterator();
    }

    private void removeFromList(int skipNum) {
        int size = nodeList.size();
        nodeList = nodeList.subList(skipNum, size);
        position += skipNum;
    }

    @Override
    public long getSize() {
        return nodeList.size();
    }

    @Override
    public long getPosition() {
        return position;
    }

    @Override
    public boolean hasNext() {
        return iterator.hasNext();
    }

    @Override
    public Object next() {
        Node next = iterator.next();
        removeFromList(1);
        return next;
    }

    @Override
    public void remove() {
        removeFromList(1);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy