Search in sources :

Example 1 with PropertyType

use of org.neo4j.kernel.impl.nioneo.store.PropertyType in project graphdb by neo4j-attic.

the class DumpLogicalLog method readPropertyCommand.

static XaCommand readPropertyCommand(ReadableByteChannel byteChannel, ByteBuffer buffer) throws IOException {
    // id+in_use(byte)+type(int)+key_indexId(int)+prop_blockId(long)+
    // prev_prop_id(long)+next_prop_id(long)+nr_value_records(int)
    buffer.clear();
    buffer.limit(9);
    if (byteChannel.read(buffer) != buffer.limit()) {
        return null;
    }
    buffer.flip();
    int id = buffer.getInt();
    byte inUseFlag = buffer.get();
    boolean inUse = false;
    if ((inUseFlag & Record.IN_USE.byteValue()) == Record.IN_USE.byteValue()) {
        inUse = true;
    }
    boolean nodeProperty = true;
    if ((inUseFlag & Record.REL_PROPERTY.byteValue()) == Record.REL_PROPERTY.byteValue()) {
        nodeProperty = false;
    }
    int primitiveId = buffer.getInt();
    PropertyRecord record = new PropertyRecord(id);
    if (primitiveId != -1 && nodeProperty) {
        record.setNodeId(primitiveId);
    } else if (primitiveId != -1) {
        record.setRelId(primitiveId);
    }
    if (inUse) {
        buffer.clear();
        buffer.limit(32);
        if (byteChannel.read(buffer) != buffer.limit()) {
            return null;
        }
        buffer.flip();
        PropertyType type = getType(buffer.getInt());
        if (type == null) {
            return null;
        }
        record.setType(type);
        record.setInUse(inUse);
        record.setKeyIndexId(buffer.getInt());
        record.setPropBlock(buffer.getLong());
        record.setPrevProp(buffer.getLong());
        record.setNextProp(buffer.getLong());
    }
    buffer.clear();
    buffer.limit(4);
    if (byteChannel.read(buffer) != buffer.limit()) {
        return null;
    }
    buffer.flip();
    int nrValueRecords = buffer.getInt();
    for (int i = 0; i < nrValueRecords; i++) {
        DynamicRecord dr = readDynamicRecord(byteChannel, buffer);
        if (dr == null) {
            return null;
        }
        record.addValueRecord(dr);
    }
    return new Command(record);
}
Also used : DynamicRecord(org.neo4j.kernel.impl.nioneo.store.DynamicRecord) PropertyRecord(org.neo4j.kernel.impl.nioneo.store.PropertyRecord) XaCommand(org.neo4j.kernel.impl.transaction.xaframework.XaCommand) PropertyType(org.neo4j.kernel.impl.nioneo.store.PropertyType)

Aggregations

DynamicRecord (org.neo4j.kernel.impl.nioneo.store.DynamicRecord)1 PropertyRecord (org.neo4j.kernel.impl.nioneo.store.PropertyRecord)1 PropertyType (org.neo4j.kernel.impl.nioneo.store.PropertyType)1 XaCommand (org.neo4j.kernel.impl.transaction.xaframework.XaCommand)1