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!");
}
}
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);
}
}
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;
}
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;
}
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());
}
Aggregations