use of org.sirix.api.XdmNodeWriteTrx in project sirix by sirixdb.
the class DBCollection method add.
public DBNode add(final String resName, SubtreeParser parser) throws OperationNotSupportedException, DocumentException {
try {
final String resource = new StringBuilder(2).append("resource").append(mDatabase.listResources().size() + 1).toString();
mDatabase.createResource(ResourceConfiguration.newBuilder(resource, mDatabase.getDatabaseConfig()).useDeweyIDs(true).useTextCompression(true).buildPathSummary(true).build());
final ResourceManager manager = mDatabase.getResourceManager(ResourceManagerConfiguration.newBuilder(resource).build());
final XdmNodeWriteTrx wtx = manager.beginNodeWriteTrx();
final SubtreeHandler handler = new SubtreeBuilder(this, wtx, Insert.ASFIRSTCHILD, Collections.<SubtreeListener<? super AbstractTemporalNode<DBNode>>>emptyList());
// Make sure the CollectionParser is used.
if (!(parser instanceof CollectionParser)) {
parser = new CollectionParser(parser);
}
parser.parse(handler);
return new DBNode(wtx, this);
} catch (final SirixException e) {
LOGGER.error(e.getMessage(), e);
return null;
}
}
use of org.sirix.api.XdmNodeWriteTrx in project sirix by sirixdb.
the class DBCollection method add.
@Override
public DBNode add(SubtreeParser parser) throws OperationNotSupportedException, DocumentException {
try {
final String resourceName = new StringBuilder(2).append("resource").append(mDatabase.listResources().size() + 1).toString();
mDatabase.createResource(ResourceConfiguration.newBuilder(resourceName, mDatabase.getDatabaseConfig()).useDeweyIDs(true).useTextCompression(true).buildPathSummary(true).build());
final ResourceManager resource = mDatabase.getResourceManager(ResourceManagerConfiguration.newBuilder(resourceName).build());
final XdmNodeWriteTrx wtx = resource.beginNodeWriteTrx();
final SubtreeHandler handler = new SubtreeBuilder(this, wtx, Insert.ASFIRSTCHILD, Collections.<SubtreeListener<? super AbstractTemporalNode<DBNode>>>emptyList());
// Make sure the CollectionParser is used.
if (!(parser instanceof CollectionParser)) {
parser = new CollectionParser(parser);
}
parser.parse(handler);
return new DBNode(wtx, this);
} catch (final SirixException e) {
LOGGER.error(e.getMessage(), e);
return null;
}
}
use of org.sirix.api.XdmNodeWriteTrx in project sirix by sirixdb.
the class DBNode method delete.
@Override
public void delete() throws DocumentException {
if (mIsWtx) {
moveRtx();
final XdmNodeWriteTrx wtx = (XdmNodeWriteTrx) mRtx;
try {
wtx.remove();
} catch (final SirixException e) {
wtx.rollback();
wtx.close();
throw new DocumentException(e);
}
} else {
final XdmNodeWriteTrx wtx = getWtx();
try {
wtx.remove();
} catch (final SirixException e) {
wtx.rollback();
wtx.close();
throw new DocumentException(e);
}
}
}
use of org.sirix.api.XdmNodeWriteTrx in project sirix by sirixdb.
the class DBNode method append.
private DBNode append(XdmNodeReadTrx rtx, SubtreeParser parser) throws DocumentException {
try {
if (rtx.hasFirstChild()) {
rtx.moveToLastChild();
}
parser.parse(new SubtreeBuilder(mCollection, (XdmNodeWriteTrx) rtx, Insert.ASRIGHTSIBLING, Collections.<SubtreeListener<? super AbstractTemporalNode<DBNode>>>emptyList()));
moveRtx();
rtx.moveToFirstChild();
} catch (final SirixException e) {
throw new DocumentException(e);
}
return new DBNode(rtx, mCollection);
}
use of org.sirix.api.XdmNodeWriteTrx in project sirix by sirixdb.
the class DBNode method setName.
@Override
public void setName(final QNm name) throws OperationNotSupportedException, DocumentException {
if (mIsWtx) {
moveRtx();
final XdmNodeWriteTrx wtx = (XdmNodeWriteTrx) mRtx;
if (wtx.isNameNode()) {
try {
wtx.setName(name);
} catch (final SirixException e) {
throw new DocumentException(e);
}
} else {
throw new DocumentException("Node has no name!");
}
} else {
final XdmNodeWriteTrx wtx = getWtx();
try {
wtx.setName(name);
} catch (final SirixException e) {
wtx.rollback();
wtx.close();
throw new DocumentException(e);
}
}
}
Aggregations