|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--pl.edu.pjwstk.yaod.store.AbstractBlock | +--pl.edu.pjwstk.yaod.store.defaultstore.blocks.DataBlock
Klasa zapewnia logike zwiazana z wewnetrznym funkcjonowaniem blokow danych. Blok danych jest struktura umozliwiajaca rejestrowanie w niej rekordow. Rekord jest zserializowanym atomem. Blok danych sklada sie z sekcji:
Field Summary | |
static short |
DATABLOCK_HEADER_LENGTH
|
static short |
NEXT_RECORD_LENGTH
|
static short |
RECORD_HEADER_LENGTH
|
static short |
SLOT_LENGTH
|
Fields inherited from class pl.edu.pjwstk.yaod.store.AbstractBlock |
m_blockID |
Constructor Summary | |
DataBlock(byte[] rawBlock,
BlockID blockID)
Tworzy blok danych na podstawie podanej tablicy, zawierajacej jego zserializowana zawartosc. |
|
DataBlock(short size,
BlockID blockID)
Tworzy pusty blok danych podanej wielkosci. |
Method Summary | |
short |
createRecord(byte[] record,
boolean chained)
Tworzy rekord. |
void |
deleteRecord(short slot)
Usuwa rekord identyfikowany podanym slotem. |
short |
getDataSize()
Zwraca wielkosc zapisanej przestrzeni w ramach bloku, jako rozmiar sekcji danych. |
short |
getFreeSpaceSize()
Zwraca wielkosc dostepnej wolnej przestrzeni w ramach bloku, jako rozmiar sekcji pustej. |
byte[] |
getNextPart(short slot)
Zwraca wskaznik kolejnego rekordu dla danego rekordu lancuchowanego. |
static int |
getRawRecordLength(byte[] rec)
Zwraca rzeczywista dlugosc, jaka przyjelyby dane, gdyby zostaly zapisane w bloku jako rekord. |
byte[] |
getRecord(short slot)
Zwraca rekord identyfikowany podanym slotem. |
short |
getRecordLength(short slot)
Zwraca dlugosc rekordu. |
short |
getSize()
Zwraca wielkosc bloku (suma wszystkich sekcji). |
boolean |
isChainedRecord(short slot)
Sprawdza, czy dany rekord jest lancuchowany, czyli czy zawiera dalszy ciag w innym bloku. |
void |
setNextPart(short slot,
byte[] rawPartPtr)
Ustawia wskaznik kolejnego rekordu dla danego rekordu lancuchowanego. |
byte[] |
toByteArray()
Serializuje blok (w celu pozniejszego zapisania go np. na dysku). |
void |
updateRecord(short slot,
byte[] record,
boolean chained)
Aktualizuje rekord identyfikowany podanym slotem. |
Methods inherited from class pl.edu.pjwstk.yaod.store.AbstractBlock |
getBlockID, isModified, setBlockID, setModified |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
public static final short SLOT_LENGTH
public static final short RECORD_HEADER_LENGTH
public static final short NEXT_RECORD_LENGTH
public static final short DATABLOCK_HEADER_LENGTH
Constructor Detail |
public DataBlock(short size, BlockID blockID) throws BlockFormatException
size
- wielkosc tworzonego bloku.BlockFormatException
- blad niespodziewany (prawdopodobnie zbyt
maly rozmiar bloku)public DataBlock(byte[] rawBlock, BlockID blockID) throws BlockFormatException
rawBlock
- zserializowany blok.BlockFormatException
- podnoszony, jesli podana tablica nie
zawiera wlasciwie sformatowanego bloku danych.java.lang.Exception
- podnoszony w przypadku awarii nieznanego
pochodzenia.Method Detail |
public byte[] toByteArray()
toByteArray
in class AbstractBlock
podnoszony
- w razie awarii nieznanego pochodzenia.public short getSize()
getSize
in class AbstractBlock
public short getFreeSpaceSize()
public short getDataSize()
public short createRecord(byte[] record, boolean chained) throws BlockFreeSpaceException
record
- tresc rekordu jako ciag bajtow.type
- czy rekord posiada dalszy ciag w innym bloku.NoFreeSpaceException
- za malo wolnego miejsca na stworzenie rekordu.
- public byte[] getRecord(short slot) throws NoSuchSlotException
slot
- numer slotu przypisanego danemu rekordowi.NoSuchRecordException
- rekord o podanym slocie nie istnieje.public void updateRecord(short slot, byte[] record, boolean chained) throws BlockFreeSpaceException, NoSuchSlotException
slot
- numer slotu przypisanego danemu rekordowi.record
- nowa tresc rekordu.chained
- czy rekord ma dalszy ciag w innym bloku.NoFreeSpaceException
- nie ma miejsca na zaktualizowanie danych.NoSuchSlotException
- blad nieznanego pochodzenia.public void deleteRecord(short slot) throws NoSuchSlotException
slot
- numer slotu przypisanego danemu rekordowi.NoSuchRecordException
- rekord zwiazany ze slotem nie istnieje.public boolean isChainedRecord(short slot) throws NoSuchSlotException
slot
- numer slotu przypisanego danemu rekordowi.NoSuchRecordException
- podany rekord bazowy nie istnieje.public void setNextPart(short slot, byte[] rawPartPtr) throws NoSuchSlotException, RecordNotChainedException
slot
- numer slotu przypisanego danemu rekordowi.ptr
- wskaznik do nastepnego rekordu.NoSuchRecordException
- podany rekord bazowy nie istnieje.RecordNotChained
- rekord nie jest lancuchowany.public byte[] getNextPart(short slot) throws NoSuchSlotException
slot
- numer slotu przypisanego danemu rekordowi.NoSuchRecordException
- podany rekord bazowy nie istnieje.public short getRecordLength(short slot) throws NoSuchSlotException
slot
- numer slotu przypisanego danemu rekordowi.NoSuchRecordException
- rekord z podanym slotem nie istnieje.public static int getRawRecordLength(byte[] rec)
rec
- dane majace utworzyc rekord.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |