Search in sources :

Example 56 with QNm

use of org.brackit.xquery.atomic.QNm in project sirix by sirixdb.

the class AttributeNodeTest method testAttributeNode.

@Test
public void testAttributeNode() throws IOException {
    final byte[] value = { (byte) 17, (byte) 18 };
    final NodeDelegate del = new NodeDelegate(99, 13, 0, 0, Optional.of(SirixDeweyID.newRootID()));
    final NameNodeDelegate nameDel = new NameNodeDelegate(del, 13, 14, 15, 1);
    final ValNodeDelegate valDel = new ValNodeDelegate(del, value, false);
    final AttributeNode node = new AttributeNode(del, nameDel, valDel, new QNm("ns", "a", "p"));
    // Create empty node.
    check(node);
    // Serialize and deserialize node.
    final ByteArrayOutputStream out = new ByteArrayOutputStream();
    node.getKind().serialize(new DataOutputStream(out), node, mPageReadTrx);
    final ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
    final AttributeNode node2 = (AttributeNode) Kind.ATTRIBUTE.deserialize(new DataInputStream(in), node.getNodeKey(), node.getDeweyID(), mPageReadTrx);
    check(node2);
}
Also used : QNm(org.brackit.xquery.atomic.QNm) ByteArrayInputStream(java.io.ByteArrayInputStream) DataOutputStream(java.io.DataOutputStream) ValNodeDelegate(org.sirix.node.delegates.ValNodeDelegate) ByteArrayOutputStream(java.io.ByteArrayOutputStream) DataInputStream(java.io.DataInputStream) NodeDelegate(org.sirix.node.delegates.NodeDelegate) NameNodeDelegate(org.sirix.node.delegates.NameNodeDelegate) ValNodeDelegate(org.sirix.node.delegates.ValNodeDelegate) NameNodeDelegate(org.sirix.node.delegates.NameNodeDelegate) Test(org.junit.Test)

Example 57 with QNm

use of org.brackit.xquery.atomic.QNm in project sirix by sirixdb.

the class ElementNodeTest method testElementNode.

@Test
public void testElementNode() throws IOException {
    final NodeDelegate del = new NodeDelegate(13, 14, 0, 0, Optional.of(SirixDeweyID.newRootID()));
    final StructNodeDelegate strucDel = new StructNodeDelegate(del, 12l, 17l, 16l, 1l, 0);
    final NameNodeDelegate nameDel = new NameNodeDelegate(del, 17, 18, 19, 1);
    final ElementNode node = new ElementNode(strucDel, nameDel, new ArrayList<Long>(), HashBiMap.<Long, Long>create(), new ArrayList<Long>(), new QNm("ns", "a", "p"));
    // Create empty node.
    node.insertAttribute(97, 100);
    node.insertAttribute(98, 101);
    node.insertNamespace(99);
    node.insertNamespace(100);
    check(node);
    // Serialize and deserialize node.
    final ByteArrayOutputStream out = new ByteArrayOutputStream();
    node.getKind().serialize(new DataOutputStream(out), node, mPageReadTrx);
    final ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
    final ElementNode node2 = (ElementNode) Kind.ELEMENT.deserialize(new DataInputStream(in), node.getNodeKey(), node.getDeweyID(), mPageReadTrx);
    check(node2);
}
Also used : QNm(org.brackit.xquery.atomic.QNm) StructNodeDelegate(org.sirix.node.delegates.StructNodeDelegate) ByteArrayInputStream(java.io.ByteArrayInputStream) DataOutputStream(java.io.DataOutputStream) ByteArrayOutputStream(java.io.ByteArrayOutputStream) DataInputStream(java.io.DataInputStream) NodeDelegate(org.sirix.node.delegates.NodeDelegate) StructNodeDelegate(org.sirix.node.delegates.StructNodeDelegate) NameNodeDelegate(org.sirix.node.delegates.NameNodeDelegate) NameNodeDelegate(org.sirix.node.delegates.NameNodeDelegate) Test(org.junit.Test)

Example 58 with QNm

use of org.brackit.xquery.atomic.QNm in project sirix by sirixdb.

the class XMLShredder method insertNewContent.

/**
 * Insert new content based on a StAX parser {@link XMLStreamReader}.
 *
 * @throws SirixException if something went wrong while inserting
 */
protected final void insertNewContent() throws SirixException {
    try {
        boolean firstElement = true;
        int level = 0;
        QName rootElement = null;
        boolean endElemReached = false;
        final StringBuilder sBuilder = new StringBuilder();
        long insertedRootNodeKey = -1;
        // Iterate over all nodes.
        while (mReader.hasNext() && !endElemReached) {
            final XMLEvent event = mReader.nextEvent();
            switch(event.getEventType()) {
                case XMLStreamConstants.START_ELEMENT:
                    level++;
                    addNewElement(event.asStartElement());
                    if (firstElement) {
                        firstElement = false;
                        insertedRootNodeKey = mWtx.getNodeKey();
                        rootElement = event.asStartElement().getName();
                    }
                    break;
                case XMLStreamConstants.END_ELEMENT:
                    level--;
                    if (level == 0 && rootElement != null && rootElement.equals(event.asEndElement().getName())) {
                        endElemReached = true;
                    }
                    final QName name = event.asEndElement().getName();
                    processEndTag(new QNm(name.getNamespaceURI(), name.getPrefix(), name.getLocalPart()));
                    break;
                case XMLStreamConstants.CHARACTERS:
                    if (mReader.peek().getEventType() == XMLStreamConstants.CHARACTERS) {
                        sBuilder.append(event.asCharacters().getData().trim());
                    } else {
                        sBuilder.append(event.asCharacters().getData().trim());
                        processText(sBuilder.toString());
                        sBuilder.setLength(0);
                    }
                    break;
                case XMLStreamConstants.COMMENT:
                    if (mIncludeComments) {
                        processComment(((Comment) event).getText());
                    }
                    break;
                case XMLStreamConstants.PROCESSING_INSTRUCTION:
                    if (mIncludePIs) {
                        final ProcessingInstruction pi = (ProcessingInstruction) event;
                        processPI(pi.getData(), pi.getTarget());
                    }
                    break;
                default:
            }
        }
        mWtx.moveTo(insertedRootNodeKey);
    } catch (final XMLStreamException e) {
        throw new SirixIOException(e);
    }
}
Also used : QNm(org.brackit.xquery.atomic.QNm) XMLStreamException(javax.xml.stream.XMLStreamException) QName(javax.xml.namespace.QName) XMLEvent(javax.xml.stream.events.XMLEvent) SirixIOException(org.sirix.exception.SirixIOException) ProcessingInstruction(javax.xml.stream.events.ProcessingInstruction)

Example 59 with QNm

use of org.brackit.xquery.atomic.QNm in project sirix by sirixdb.

the class XMLUpdateShredder method addNewElement.

/**
 * Add a new element node.
 *
 * @param paramAdd determines wether node is added as first child or right sibling
 * @param paramStartElement the current {@link StartElement}
 * @throws SirixException if inserting node fails
 */
private void addNewElement(final EAdd paramAdd, final StartElement paramStartElement) throws SirixException {
    assert paramStartElement != null;
    final QName name = paramStartElement.getName();
    final QNm qName = new QNm(name.getNamespaceURI(), name.getPrefix(), name.getLocalPart());
    long key;
    if (mInsert == Insert.ASRIGHTSIBLING) {
        key = mWtx.insertElementAsRightSibling(qName).getNodeKey();
    } else {
        if (paramAdd == EAdd.ASFIRSTCHILD) {
            key = mWtx.insertElementAsFirstChild(qName).getNodeKey();
        } else {
            key = mWtx.insertElementAsRightSibling(qName).getNodeKey();
        }
    }
    // Parse namespaces.
    for (final Iterator<?> it = paramStartElement.getNamespaces(); it.hasNext(); ) {
        final Namespace namespace = (Namespace) it.next();
        mWtx.insertNamespace(new QNm(namespace.getNamespaceURI(), namespace.getPrefix(), ""));
        mWtx.moveTo(key);
    }
    // Parse attributes.
    for (final Iterator<?> it = paramStartElement.getAttributes(); it.hasNext(); ) {
        final Attribute attribute = (Attribute) it.next();
        final QName attName = attribute.getName();
        mWtx.insertAttribute(new QNm(attName.getNamespaceURI(), attName.getPrefix(), attName.getLocalPart()), attribute.getValue());
        mWtx.moveTo(key);
    }
}
Also used : QNm(org.brackit.xquery.atomic.QNm) Attribute(javax.xml.stream.events.Attribute) QName(javax.xml.namespace.QName) Namespace(javax.xml.stream.events.Namespace)

Example 60 with QNm

use of org.brackit.xquery.atomic.QNm in project sirix by sirixdb.

the class SAXSerializer method emitEndElement.

@Override
protected void emitEndElement(final XdmNodeReadTrx rtx) {
    final QNm qName = rtx.getName();
    final String mURI = qName.getNamespaceURI();
    try {
        mContHandler.endPrefixMapping(qName.getPrefix());
        mContHandler.endElement(mURI, qName.getLocalName(), Utils.buildName(qName));
    } catch (final SAXException e) {
        LOGGER.error(e.getMessage(), e);
    }
}
Also used : QNm(org.brackit.xquery.atomic.QNm) SAXException(org.xml.sax.SAXException)

Aggregations

QNm (org.brackit.xquery.atomic.QNm)89 XdmNodeReadTrx (org.sirix.api.XdmNodeReadTrx)20 Test (org.junit.Test)18 QueryException (org.brackit.xquery.QueryException)15 XdmNodeWriteTrx (org.sirix.api.XdmNodeWriteTrx)15 DBNode (org.sirix.xquery.node.DBNode)12 QName (javax.xml.namespace.QName)11 PathSummaryReader (org.sirix.index.path.summary.PathSummaryReader)11 IndexController (org.sirix.access.IndexController)10 IndexDef (org.sirix.index.IndexDef)10 Item (org.brackit.xquery.xdm.Item)7 Axis (org.sirix.api.Axis)7 DescendantAxis (org.sirix.axis.DescendantAxis)7 SirixException (org.sirix.exception.SirixException)7 Attribute (javax.xml.stream.events.Attribute)5 Namespace (javax.xml.stream.events.Namespace)5 DocumentException (org.brackit.xquery.xdm.DocumentException)5 SirixIOException (org.sirix.exception.SirixIOException)5 Ignore (org.junit.Ignore)4 SirixUsageException (org.sirix.exception.SirixUsageException)4