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