package org.wonderdb.serialize.record; import java.util.Set; import org.jboss.netty.buffer.ChannelBuffer; import org.wonderdb.serialize.block.BlockHeader; import org.wonderdb.types.DBType; import org.wonderdb.types.TableRecordMetadata; import org.wonderdb.types.TypeMetadata; import org.wonderdb.types.record.ExtendedTableRecord; import org.wonderdb.types.record.ObjectRecord; import org.wonderdb.types.record.Record; import org.wonderdb.types.record.TableRecord; public class RecordSerializer { private static RecordSerializer instance = new RecordSerializer(); private RecordSerializer() { } public static RecordSerializer getInstance() { return instance; } public Record readMinimum(BlockHeader blockHeader, ChannelBuffer buffer, TypeMetadata meta) { if (meta instanceof TableRecordMetadata) { return TableRecordSerializer.getInstance().readMinimum(buffer, meta); } return ObjectRecordSerializer.getInstance().readMinimum(blockHeader, buffer, meta); } public void readFull(Record record, TypeMetadata meta) { if (meta instanceof TableRecordMetadata) { TableRecordSerializer.getInstance().readFull((TableRecord) record, meta); } else { ObjectRecordSerializer.getInstance().readFull((ObjectRecord) record, meta); } } public void serializeExtended(byte fileId, ExtendedTableRecord record, int blockSize, TypeMetadata meta, Set<Object> pinnedBlocks) { TableRecordSerializer.getInstance().serializeExtended(fileId, record, blockSize, meta, pinnedBlocks); } public void serializeMinimum(Record record, ChannelBuffer buffer, TypeMetadata meta) { if (meta instanceof TableRecordMetadata) { TableRecordSerializer.getInstance().serializeMinimum((TableRecord) record, buffer, meta); } else { ObjectRecordSerializer.getInstance().serializeMinimum((ObjectRecord) record, buffer, meta); } } public int getRecordSize(DBType object, TypeMetadata meta) { if (meta instanceof TableRecordMetadata) { return TableRecordSerializer.getInstance().getObjectSize(object, meta); } return ObjectRecordSerializer.getInstance().getObjectSize(object, meta); } }