Search in sources :

Example 1 with Int64

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

the class Commit method execute.

@Override
public Sequence execute(StaticContext sctx, QueryContext ctx, Sequence[] args) throws QueryException {
    final DBNode doc = ((DBNode) args[0]);
    if (doc.getTrx() instanceof XdmNodeWriteTrx) {
        final XdmNodeWriteTrx wtx = (XdmNodeWriteTrx) doc.getTrx();
        final long revision = wtx.getRevisionNumber();
        wtx.commit();
        return new Int64(revision);
    } else {
        final ResourceManager manager = doc.getTrx().getResourceManager();
        final XdmNodeWriteTrx wtx;
        if (manager.getAvailableNodeWriteTrx() == 0) {
            wtx = manager.getXdmNodeWriteTrx().get();
        } else {
            wtx = manager.beginNodeWriteTrx();
        }
        final int revision = doc.getTrx().getRevisionNumber();
        if (revision < manager.getMostRecentRevisionNumber()) {
            wtx.revertTo(doc.getTrx().getRevisionNumber());
        }
        wtx.commit();
        return new Int64(revision);
    }
}
Also used : DBNode(org.sirix.xquery.node.DBNode) XdmNodeWriteTrx(org.sirix.api.XdmNodeWriteTrx) Int64(org.brackit.xquery.atomic.Int64) ResourceManager(org.sirix.api.ResourceManager)

Example 2 with Int64

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

the class Rollback method execute.

@Override
public Sequence execute(StaticContext sctx, QueryContext ctx, Sequence[] args) throws QueryException {
    final DBNode doc = ((DBNode) args[0]);
    if (doc.getTrx() instanceof XdmNodeWriteTrx) {
        final XdmNodeWriteTrx wtx = (XdmNodeWriteTrx) doc.getTrx();
        final long revision = wtx.getRevisionNumber();
        wtx.rollback();
        return new Int64(revision);
    } else {
        throw new QueryException(new QNm("The transaction is not a write transaction!"));
    }
}
Also used : DBNode(org.sirix.xquery.node.DBNode) XdmNodeWriteTrx(org.sirix.api.XdmNodeWriteTrx) QNm(org.brackit.xquery.atomic.QNm) QueryException(org.brackit.xquery.QueryException) Int64(org.brackit.xquery.atomic.Int64)

Aggregations

Int64 (org.brackit.xquery.atomic.Int64)2 XdmNodeWriteTrx (org.sirix.api.XdmNodeWriteTrx)2 DBNode (org.sirix.xquery.node.DBNode)2 QueryException (org.brackit.xquery.QueryException)1 QNm (org.brackit.xquery.atomic.QNm)1 ResourceManager (org.sirix.api.ResourceManager)1