Search in sources :

Example 71 with QNm

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

the class StAXDiffSerializer method emitNode.

/**
 * Emit a node.
 *
 * @param pRTX
 *          sirix reading transaction {@link NodeReadTrx}.
 */
private void emitNode(final NodeReadTrx pRTX) {
    assert pRTX != null;
    switch(pRTX.getKind()) {
        case DOCUMENT:
            mEvent = mFac.createStartDocument();
            break;
        case ELEMENT:
            final long key = pRTX.getNodeKey();
            final QNm qName = pRTX.getName();
            mEvent = mFac.createStartElement(new QName(qName.getNamespaceURI(), qName.getLocalName(), qName.getPrefix()), new AttributeIterator(pRTX), new NamespaceIterator(pRTX));
            pRTX.moveTo(key);
            break;
        case TEXT:
            mEvent = mFac.createCharacters(XMLToken.escapeContent(pRTX.getValue()));
            break;
        default:
            throw new IllegalStateException("Kind not known!");
    }
}
Also used : QNm(org.brackit.xquery.atomic.QNm) QName(javax.xml.namespace.QName)

Example 72 with QNm

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

the class TextView method processStartTag.

/**
 * Generate a String representation from a {@link StartElement}.
 *
 * @param pStartTag
 *          The {@link StartElement} to serialize.
 * @param pDoc
 *          The {@link StyledDocument} from the {@link JTextPane} instance.
 * @param pHasChild
 *          {@link Child}.
 */
private void processStartTag(final StartElement pStartTag, final StyledDocument pDoc, final Child pHasChild) {
    assert pStartTag != null;
    assert pDoc != null;
    assert pHasChild != null;
    try {
        final QName name = pStartTag.getName();
        final String qName = ViewUtilities.qNameToString(new QNm(name.getNamespaceURI(), name.getPrefix(), name.getLocalPart()));
        pDoc.insertString(pDoc.getLength(), new StringBuilder("<").append(qName).toString(), pDoc.getStyle("elements"));
        // Insert a space if namespaces or attributes follow.
        if (pStartTag.getAttributes().hasNext() || pStartTag.getNamespaces().hasNext()) {
            pDoc.insertString(pDoc.getLength(), " ", pDoc.getStyle("elements"));
        }
        // Process namespaces.
        for (final Iterator<?> namespaces = pStartTag.getNamespaces(); namespaces.hasNext(); ) {
            final Namespace ns = (Namespace) namespaces.next();
            if (ns.getPrefix().isEmpty()) {
                pDoc.insertString(pDoc.getLength(), new StringBuilder(" xmlns=\"").append(ns.getNamespaceURI()).append("\"").toString(), pDoc.getStyle("namespaces"));
            } else {
                pDoc.insertString(pDoc.getLength(), new StringBuilder(" xmlns:").append(ns.getPrefix()).append("=\"").append(ns.getNamespaceURI()).append("\"").toString(), pDoc.getStyle("namespaces"));
            }
            if (pStartTag.getAttributes().hasNext()) {
                pDoc.insertString(pDoc.getLength(), " ", pDoc.getStyle("elements"));
            }
        }
        // Process attributes.
        for (final Iterator<?> attributes = pStartTag.getAttributes(); attributes.hasNext(); ) {
            final Attribute att = (Attribute) attributes.next();
            final QName attName = att.getName();
            pDoc.insertString(pDoc.getLength(), new StringBuilder().append(ViewUtilities.qNameToString(new QNm(attName.getNamespaceURI(), attName.getPrefix(), attName.getLocalPart()))).append("=\"").append(att.getValue()).append("\"").toString(), pDoc.getStyle("attributes"));
            if (attributes.hasNext()) {
                pDoc.insertString(pDoc.getLength(), " ", pDoc.getStyle("elements"));
            }
        }
        switch(pHasChild) {
            case CHILD:
                pDoc.insertString(pDoc.getLength(), ">" + NEWLINE, pDoc.getStyle("elements"));
                break;
            case NOCHILD:
                pDoc.insertString(pDoc.getLength(), "/>" + NEWLINE, pDoc.getStyle("elements"));
                break;
            default:
                break;
        }
    } catch (final BadLocationException e) {
        LOGWRAPPER.error(e.getMessage(), e);
    }
}
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) BadLocationException(javax.swing.text.BadLocationException)

Example 73 with QNm

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

the class TreeCellRenderer method getTreeCellRendererComponent.

@Override
public Component getTreeCellRendererComponent(final JTree pTree, Object pValue, final boolean pSel, final boolean pExpanded, final boolean pLeaf, final int pRow, final boolean pHasFocus) throws IllegalStateException {
    final Node node = (Node) pValue;
    final long key = node.getNodeKey();
    switch(node.getKind()) {
        case ELEMENT:
            mRTX.moveTo(node.getNodeKey());
            final String prefix = mRTX.getName().getPrefix();
            final QNm qName = mRTX.getName();
            if (prefix == null || prefix.equals(XMLConstants.DEFAULT_NS_PREFIX)) {
                final String localPart = qName.getLocalName();
                if (mRTX.hasFirstChild()) {
                    pValue = new StringBuilder("<").append(localPart).append(">").toString();
                } else {
                    pValue = new StringBuilder("<").append(localPart).append("/>").toString();
                }
            } else {
                pValue = new StringBuilder("<").append(prefix).append(":").append(qName.getLocalName()).append(">").toString();
            }
            break;
        case ATTRIBUTE:
            // Move transaction to parent of the attribute node.
            mRTX.moveTo(node.getParentKey());
            final long aNodeKey = node.getNodeKey();
            for (int i = 0, attsCount = mRTX.getAttributeCount(); i < attsCount; i++) {
                mRTX.moveToAttribute(i);
                if (mRTX.getNodeKey() == key) {
                    break;
                }
                mRTX.moveTo(aNodeKey);
            }
            // Display value.
            final String attPrefix = mRTX.getName().getPrefix();
            final QNm attQName = mRTX.getName();
            if (attPrefix == null || attPrefix.equals("")) {
                pValue = new StringBuilder("@").append(attQName.getLocalName()).append("='").append(mRTX.getValue()).append("'").toString();
            } else {
                pValue = new StringBuilder("@").append(attPrefix).append(":").append(attQName.getLocalName()).append("='").append(mRTX.getValue()).append("'").toString();
            }
            break;
        case NAMESPACE:
            // Move transaction to parent the namespace node.
            mRTX.moveTo(node.getParentKey());
            final long nNodeKey = node.getNodeKey();
            for (int i = 0, namespCount = mRTX.getNamespaceCount(); i < namespCount; i++) {
                mRTX.moveToNamespace(i);
                if (mRTX.getNodeKey() == key) {
                    break;
                }
                mRTX.moveTo(nNodeKey);
            }
            if (mRTX.nameForKey(mRTX.getPrefixKey()).length() == 0) {
                pValue = new StringBuilder("xmlns='").append(mRTX.nameForKey(mRTX.getURIKey())).append("'").toString();
            } else {
                pValue = new StringBuilder("xmlns:").append(mRTX.nameForKey(mRTX.getPrefixKey())).append("='").append(mRTX.nameForKey(mRTX.getURIKey())).append("'").toString();
            }
            break;
        case TEXT:
            mRTX.moveTo(node.getNodeKey());
            pValue = mRTX.getValue();
            break;
        case COMMENT:
            mRTX.moveTo(node.getNodeKey());
            pValue = new StringBuilder("<!-- ").append(mRTX.getValue()).append(" -->").toString();
            break;
        case PROCESSING_INSTRUCTION:
            mRTX.moveTo(node.getNodeKey());
            pValue = new StringBuilder("<? ").append(mRTX.getValue()).append(" ?>").toString();
            break;
        case DOCUMENT:
            pValue = "Doc: " + mPATH;
            break;
        case WHITESPACE:
            break;
        default:
            throw new IllegalStateException("Node kind not known!");
    }
    pValue += new StringBuilder(" [").append(key).append("]").toString();
    super.getTreeCellRendererComponent(pTree, pValue, pSel, pExpanded, pLeaf, pRow, pHasFocus);
    setBackground(null);
    setBackgroundNonSelectionColor(null);
    setBackgroundSelectionColor(null);
    if (!selected) {
        switch(node.getKind()) {
            case DOCUMENT:
                setForeground(DOC_COLOR);
                break;
            case ELEMENT:
                setForeground(ELEMENT_COLOR);
                break;
            case ATTRIBUTE:
                setForeground(ATTRIBUTE_COLOR);
                break;
            default:
        }
    } else {
        setForeground(WHITE);
    }
    return this;
}
Also used : QNm(org.brackit.xquery.atomic.QNm) Node(org.sirix.node.interfaces.Node)

Example 74 with QNm

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

the class AbstractTraverseModel method fillNamespaces.

/**
 * Fill a namespace list with entries.
 *
 * @param pRtx
 *          Sirix {@link NodeReadTrx}
 * @return {@link List} of {@link Namespace}s
 */
protected List<Namespace> fillNamespaces(final NodeReadTrx pRtx) {
    assert pRtx != null;
    final XMLEventFactory eventFactory = XMLEventFactory.newInstance();
    // attributes in the axis.
    assert pRtx.getKind() == Kind.ELEMENT;
    final int nspNumber = pRtx.getNamespaceCount();
    final List<Namespace> namespaces = new ArrayList<>(nspNumber);
    for (int i = 0; i < nspNumber; i++) {
        pRtx.moveToNamespace(i);
        final QNm qName = pRtx.getName();
        namespaces.add(eventFactory.createNamespace(qName.getPrefix(), qName.getNamespaceURI()));
        pRtx.moveToParent();
    }
    return namespaces;
}
Also used : QNm(org.brackit.xquery.atomic.QNm) XMLEventFactory(javax.xml.stream.XMLEventFactory) ArrayList(java.util.ArrayList) Namespace(javax.xml.stream.events.Namespace)

Example 75 with QNm

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

the class MultipleCommitTest method test.

@Test
public void test() throws SirixException {
    assertEquals(1L, holder.getWriter().getRevisionNumber());
    holder.getWriter().commit();
    holder.getWriter().insertElementAsFirstChild(new QNm("foo"));
    assertEquals(2L, holder.getWriter().getRevisionNumber());
    holder.getWriter().moveTo(1);
    assertEquals(new QNm("foo"), holder.getWriter().getName());
    holder.getWriter().rollback();
    assertEquals(2L, holder.getWriter().getRevisionNumber());
}
Also used : QNm(org.brackit.xquery.atomic.QNm) Test(org.junit.Test)

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