Example usage for org.apache.commons.jxpath.ri.model NodeIterator setPosition

List of usage examples for org.apache.commons.jxpath.ri.model NodeIterator setPosition

Introduction

In this page you can find the example usage for org.apache.commons.jxpath.ri.model NodeIterator setPosition.

Prototype

boolean setPosition(int position);

Source Link

Document

Set the new current position.

Usage

From source file:org.eclipse.e4.emf.internal.xpath.CollectionNodeIterator.java

/**
 * Prepare...//from   w w  w.  ja  v a2  s.c  o m
 */
private void prepare() {
    collection = new ArrayList<>();
    NodePointer ptr = (NodePointer) pointer.clone();
    int length = ptr.getLength();
    for (int i = 0; i < length; i++) {
        ptr.setIndex(i);
        NodePointer elementPointer = ptr.getValuePointer();
        NodeIterator iter = getElementNodeIterator(elementPointer);

        for (int j = 1; iter.setPosition(j); j++) {
            NodePointer childPointer = iter.getNodePointer();
            if (reverse) {
                collection.add(0, childPointer);
            } else {
                collection.add(childPointer);
            }
        }
    }
    if (startWith != null) {
        int index = collection.indexOf(startWith);
        if (index == -1) {
            throw new JXPathException("Invalid starting pointer for iterator: " + startWith);
        }
        while (collection.size() > index) {
            if (!reverse) {
                collection.remove(collection.size() - 1);
            } else {
                collection.remove(0);
            }
        }
    }
}

From source file:org.firesoa.common.jxpath.model.dom4j.Dom4JNodePointer.java

public NodePointer createChild(JXPathContext context, QName name, int index) {
    if (index == WHOLE_COLLECTION) {
        index = 0;/*from   w ww.j a v a  2s  . c om*/
    }
    boolean success = getAbstractFactory(context).createObject(context, this, node, name.toString(), index);
    if (success) {
        NodeTest nodeTest;
        String prefix = name.getPrefix();
        String namespaceURI = prefix == null ? null : context.getNamespaceURI(prefix);
        nodeTest = new NodeNameTest(name, namespaceURI);

        NodeIterator it = childIterator(nodeTest, false, null);
        if (it != null && it.setPosition(index + 1)) {
            return it.getNodePointer();
        }
    }
    throw new JXPathAbstractFactoryException("Factory could not create " + "a child node for path: " + asPath()
            + "/" + name + "[" + (index + 1) + "]");
}

From source file:org.firesoa.common.jxpath.model.dom4j.Dom4JNodePointer.java

/**
 * ??nameattribute//  w  w  w.j av a 2 s .  c  o m
 */
public NodePointer createAttribute(JXPathContext context, QName name) {
    if (!(node instanceof Element)) {
        return super.createAttribute(context, name);
    }
    Element element = (Element) node;
    String prefix = name.getPrefix();
    if (prefix != null) {
        String nsUri = null;
        NamespaceResolver nsr = getNamespaceResolver();
        if (nsr != null) {
            nsUri = nsr.getNamespaceURI(prefix);
        }
        if (nsUri == null) {
            throw new JXPathException("Unknown namespace prefix: " + prefix);
        }
        Namespace dom4jNs = Namespace.get(prefix, nsUri);
        org.dom4j.QName attributeName = new org.dom4j.QName(name.getName(), dom4jNs);
        Attribute attr = element.attribute(attributeName);
        if (attr == null) {
            element.addAttribute(attributeName, "");
        }
    } else {
        Attribute attr = element.attribute(name.getName());
        if (attr == null) {
            element.addAttribute(name.getName(), "");
        }
    }
    NodeIterator it = attributeIterator(name);
    it.setPosition(1);
    return it.getNodePointer();
}