Search in sources :

Example 16 with Axis

use of org.sirix.api.Axis in project sirix by sirixdb.

the class FMSE method firstFMESStep.

/**
 * First step of the edit script algorithm. Combines the update, insert, align and move phases.
 *
 * @param wtx {@link XdmNodeWriteTrx} implementation reference on old revisionso
 * @param pRtxn {@link XdmNodeReadTrx} implementation reference o new revision
 */
private void firstFMESStep(final XdmNodeWriteTrx wtx, final XdmNodeReadTrx rtx) {
    assert wtx != null;
    assert rtx != null;
    wtx.moveTo(mOldStartKey);
    rtx.moveTo(mNewStartKey);
    // 2. Iterate over new shreddered file
    for (final Axis axis = new LevelOrderAxis.Builder(rtx).includeSelf().includeNonStructuralNodes().build(); axis.hasNext(); ) {
        axis.next();
        final long nodeKey = axis.getTrx().getNodeKey();
        doFirstFSMEStep(wtx, rtx);
        axis.getTrx().moveTo(nodeKey);
    }
}
Also used : Axis(org.sirix.api.Axis) VisitorDescendantAxis(org.sirix.axis.visitor.VisitorDescendantAxis) AbstractAxis(org.sirix.axis.AbstractAxis) ChildAxis(org.sirix.axis.ChildAxis) PostOrderAxis(org.sirix.axis.PostOrderAxis) DescendantAxis(org.sirix.axis.DescendantAxis) LevelOrderAxis(org.sirix.axis.LevelOrderAxis) LevelOrderAxis(org.sirix.axis.LevelOrderAxis)

Example 17 with Axis

use of org.sirix.api.Axis in project sirix by sirixdb.

the class DocumentWrapper method selectID.

@Override
public NodeInfo selectID(final String ID, final boolean getParent) {
    try {
        final NodeReadTrx rtx = mSession.beginNodeReadTrx();
        final Axis axis = new DescendantAxis(rtx, IncludeSelf.YES);
        while (axis.hasNext()) {
            if (rtx.getKind() == Kind.ELEMENT) {
                final int attCount = rtx.getAttributeCount();
                if (attCount > 0) {
                    final long nodeKey = rtx.getNodeKey();
                    for (int index = 0; index < attCount; index++) {
                        rtx.moveToAttribute(index);
                        if ("xml:id".equalsIgnoreCase(rtx.getName().getLocalName()) && ID.equals(rtx.getValue())) {
                            if (getParent) {
                                rtx.moveToParent();
                            }
                            return new NodeWrapper(this, rtx.getNodeKey());
                        }
                        rtx.moveTo(nodeKey);
                    }
                }
            }
            axis.next();
        }
        rtx.close();
    } catch (final SirixException e) {
        LOGWRAPPER.error(e.getMessage(), e);
    }
    return null;
}
Also used : NodeReadTrx(org.sirix.api.NodeReadTrx) SirixException(org.sirix.exception.SirixException) DescendantAxis(org.sirix.axis.DescendantAxis) Axis(org.sirix.api.Axis) DescendantAxis(org.sirix.axis.DescendantAxis)

Example 18 with Axis

use of org.sirix.api.Axis in project sirix by sirixdb.

the class DBNode method isPrecedingOf.

@Override
public boolean isPrecedingOf(final Node<?> other) {
    if (other instanceof DBNode) {
        final DBNode node = (DBNode) other;
        moveRtx();
        if (mKind != org.sirix.node.Kind.ATTRIBUTE && mKind != org.sirix.node.Kind.NAMESPACE) {
            if (mDeweyID.isPresent()) {
                return mDeweyID.get().isPrecedingOf(node.mDeweyID.get());
            } else {
                for (final Axis axis = new FollowingAxis(mRtx); axis.hasNext(); ) {
                    axis.next();
                    if (mRtx.getNodeKey() == node.getNodeKey()) {
                        return true;
                    }
                }
            }
        }
    }
    return false;
}
Also used : FollowingAxis(org.sirix.axis.FollowingAxis) AllTimeAxis(org.sirix.axis.temporal.AllTimeAxis) PrecedingAxis(org.sirix.axis.PrecedingAxis) Axis(org.sirix.api.Axis) FirstAxis(org.sirix.axis.temporal.FirstAxis) AbstractTemporalAxis(org.sirix.axis.AbstractTemporalAxis) ChildAxis(org.sirix.axis.ChildAxis) LastAxis(org.sirix.axis.temporal.LastAxis) AttributeAxis(org.sirix.axis.AttributeAxis) PastAxis(org.sirix.axis.temporal.PastAxis) FollowingAxis(org.sirix.axis.FollowingAxis) AncestorAxis(org.sirix.axis.AncestorAxis) FutureAxis(org.sirix.axis.temporal.FutureAxis) NonStructuralWrapperAxis(org.sirix.axis.NonStructuralWrapperAxis) NextAxis(org.sirix.axis.temporal.NextAxis) PreviousAxis(org.sirix.axis.temporal.PreviousAxis) DescendantAxis(org.sirix.axis.DescendantAxis)

Example 19 with Axis

use of org.sirix.api.Axis in project sirix by sirixdb.

the class DBNode method isFollowingOf.

@Override
public boolean isFollowingOf(final Node<?> other) {
    if (other instanceof DBNode) {
        final DBNode node = (DBNode) other;
        moveRtx();
        if (mKind != org.sirix.node.Kind.ATTRIBUTE && mKind != org.sirix.node.Kind.NAMESPACE) {
            if (mDeweyID.isPresent()) {
                return mDeweyID.get().isFollowingOf(node.mDeweyID.get());
            } else {
                for (final Axis axis = new PrecedingAxis(mRtx); axis.hasNext(); ) {
                    axis.next();
                    if (mRtx.getNodeKey() == node.getNodeKey()) {
                        return true;
                    }
                }
            }
        }
    }
    return false;
}
Also used : PrecedingAxis(org.sirix.axis.PrecedingAxis) AllTimeAxis(org.sirix.axis.temporal.AllTimeAxis) PrecedingAxis(org.sirix.axis.PrecedingAxis) Axis(org.sirix.api.Axis) FirstAxis(org.sirix.axis.temporal.FirstAxis) AbstractTemporalAxis(org.sirix.axis.AbstractTemporalAxis) ChildAxis(org.sirix.axis.ChildAxis) LastAxis(org.sirix.axis.temporal.LastAxis) AttributeAxis(org.sirix.axis.AttributeAxis) PastAxis(org.sirix.axis.temporal.PastAxis) FollowingAxis(org.sirix.axis.FollowingAxis) AncestorAxis(org.sirix.axis.AncestorAxis) FutureAxis(org.sirix.axis.temporal.FutureAxis) NonStructuralWrapperAxis(org.sirix.axis.NonStructuralWrapperAxis) NextAxis(org.sirix.axis.temporal.NextAxis) PreviousAxis(org.sirix.axis.temporal.PreviousAxis) DescendantAxis(org.sirix.axis.DescendantAxis)

Example 20 with Axis

use of org.sirix.api.Axis in project sirix by sirixdb.

the class DBNode method isDescendantOf.

@Override
public boolean isDescendantOf(final Node<?> other) {
    moveRtx();
    boolean retVal = false;
    if (other instanceof DBNode) {
        final DBNode node = (DBNode) other;
        assert node.getNodeClassID() == this.getNodeClassID();
        moveRtx();
        if (mKind != org.sirix.node.Kind.ATTRIBUTE && mKind != org.sirix.node.Kind.NAMESPACE) {
            if (mDeweyID.isPresent()) {
                return mDeweyID.get().isDescendantOf(node.mDeweyID.get());
            } else {
                for (final Axis axis = new AncestorAxis(mRtx); axis.hasNext(); ) {
                    axis.next();
                    if (node.getUnderlyingNode().getNodeKey() == mRtx.getNodeKey()) {
                        retVal = true;
                    }
                }
            }
        }
    }
    return retVal;
}
Also used : AncestorAxis(org.sirix.axis.AncestorAxis) AllTimeAxis(org.sirix.axis.temporal.AllTimeAxis) PrecedingAxis(org.sirix.axis.PrecedingAxis) Axis(org.sirix.api.Axis) FirstAxis(org.sirix.axis.temporal.FirstAxis) AbstractTemporalAxis(org.sirix.axis.AbstractTemporalAxis) ChildAxis(org.sirix.axis.ChildAxis) LastAxis(org.sirix.axis.temporal.LastAxis) AttributeAxis(org.sirix.axis.AttributeAxis) PastAxis(org.sirix.axis.temporal.PastAxis) FollowingAxis(org.sirix.axis.FollowingAxis) AncestorAxis(org.sirix.axis.AncestorAxis) FutureAxis(org.sirix.axis.temporal.FutureAxis) NonStructuralWrapperAxis(org.sirix.axis.NonStructuralWrapperAxis) NextAxis(org.sirix.axis.temporal.NextAxis) PreviousAxis(org.sirix.axis.temporal.PreviousAxis) DescendantAxis(org.sirix.axis.DescendantAxis)

Aggregations

Axis (org.sirix.api.Axis)73 DescendantAxis (org.sirix.axis.DescendantAxis)39 FilterAxis (org.sirix.axis.filter.FilterAxis)38 ChildAxis (org.sirix.axis.ChildAxis)23 UnionAxis (org.sirix.service.xml.xpath.expr.UnionAxis)19 DupFilterAxis (org.sirix.service.xml.xpath.filter.DupFilterAxis)19 ForAxis (org.sirix.axis.ForAxis)17 PredicateFilterAxis (org.sirix.axis.filter.PredicateFilterAxis)17 ExceptAxis (org.sirix.service.xml.xpath.expr.ExceptAxis)17 IfAxis (org.sirix.service.xml.xpath.expr.IfAxis)17 IntersectAxis (org.sirix.service.xml.xpath.expr.IntersectAxis)17 RangeAxis (org.sirix.service.xml.xpath.expr.RangeAxis)17 SequenceAxis (org.sirix.service.xml.xpath.expr.SequenceAxis)17 VariableAxis (org.sirix.service.xml.xpath.expr.VariableAxis)17 AddOpAxis (org.sirix.service.xml.xpath.operators.AddOpAxis)17 DivOpAxis (org.sirix.service.xml.xpath.operators.DivOpAxis)17 IDivOpAxis (org.sirix.service.xml.xpath.operators.IDivOpAxis)17 ModOpAxis (org.sirix.service.xml.xpath.operators.ModOpAxis)17 MulOpAxis (org.sirix.service.xml.xpath.operators.MulOpAxis)17 SubOpAxis (org.sirix.service.xml.xpath.operators.SubOpAxis)17