pl.edu.pjwstk.yaod.store.defaultstore.blocks
Class FreeSpaceBlock
java.lang.Object
|
+--pl.edu.pjwstk.yaod.store.AbstractBlock
|
+--pl.edu.pjwstk.yaod.store.defaultstore.blocks.FreeSpaceBlock
- All Implemented Interfaces:
- Bufferable
- public class FreeSpaceBlock
- extends AbstractBlock
Klasa zapewnia logike zwiazana z wewnetrzynm funkcjonowaniem blokow wolnej
przestrzeni. Blok wolnej przestrzeni jest struktura umozliwiajaca
opis poziomu zajetosci poszczegolnych blokow w ramach pliku danych.
Kazdy plik danych posiada przynajmniej jeden blok wolnej przestrzeni.
Blok taki moze zawierac odwolania do kolejnych blokow danych,
przydzielanych w razie potrzeby. Wolna przestrzen reprezentowana jest
przez ciag wartosci short, w taki sposob, ze 2 bajty przydzielone sa jednemu
blokowi. Blok wolnej przestrzeni sklada sie z sekcji:
- naglowka bloku (stały rozmiar).
- numer pliku (2 bajty)
- numer bloku (2 bajty)
- typ bloku (1 bajt), zawsze =1
- opcjonalnego numeru bloku w pliku, zawierajacego dane na temat
kolejnych blokow (2 bajty).
- danych (reszta bloku)
Constructor Summary |
FreeSpaceBlock(byte[] rawBlock,
BlockID blockID)
Tworzy nowy blok wolnej przestrzeni na podstawie tablicy bajtow,
zawierajacej jego wersje zserializowana. |
FreeSpaceBlock(short size,
BlockID blockID)
Tworzy nowy pusty blok wolnej przestrzeni. |
Method Summary |
short |
blocksHolded()
Zwraca ilosc blokow, jakie moze reprezentowac dany blok wolnej przestrzeni. |
short |
getBlocksFreeSpace(short block)
Pobiera informacje na temat wolnej przestrzeni bloku o podanym
identyfikatorze. |
short |
getSize()
Zwraca wielkosc bloku (suma wszystkich sekcji). |
void |
setBlocksFreeSpace(short block,
short freeSpace)
Rejestruje informacje na temat wolnej przestrzeni bloku o podanym numerze. |
byte[] |
toByteArray()
Serializuje blok wolnej przestrzeni. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
FreeSpaceBlock
public FreeSpaceBlock(byte[] rawBlock,
BlockID blockID)
throws BlockFormatException
- Tworzy nowy blok wolnej przestrzeni na podstawie tablicy bajtow,
zawierajacej jego wersje zserializowana.
- Parameters:
data
- zserializowany blok.- Throws:
BlockFormatException
- dane nie zawieraja poprawnie sformowanego
bloku wolnej przestrzeni.
FreeSpaceBlock
public FreeSpaceBlock(short size,
BlockID blockID)
throws BlockFormatException
- Tworzy nowy pusty blok wolnej przestrzeni.
- Parameters:
size
- rozmiar bloku.blockID
- identyfikator bloku.- Throws:
BlockFormatException
- nie mozna sformatowac bloku.
toByteArray
public byte[] toByteArray()
- Serializuje blok wolnej przestrzeni.
- Overrides:
toByteArray
in class AbstractBlock
- Returns:
- tablica bajtow, zawierajaca zserializowany blok
(gotowy np. do zapisu na dysku).
getSize
public short getSize()
- Zwraca wielkosc bloku (suma wszystkich sekcji).
- Overrides:
getSize
in class AbstractBlock
- Returns:
- wielkosc bloku.
blocksHolded
public short blocksHolded()
- Zwraca ilosc blokow, jakie moze reprezentowac dany blok wolnej przestrzeni.
- Returns:
- ilosc blokow.
setBlocksFreeSpace
public void setBlocksFreeSpace(short block,
short freeSpace)
throws NoSuchBlockException
- Rejestruje informacje na temat wolnej przestrzeni bloku o podanym numerze.
- Parameters:
block
- numer bloku.freeSpace
- zakodowana wolna przestrzen.- Throws:
NoSuchBlockException
- podano zly numer bloku.
getBlocksFreeSpace
public short getBlocksFreeSpace(short block)
throws NoSuchBlockException
- Pobiera informacje na temat wolnej przestrzeni bloku o podanym
identyfikatorze.
- Returns:
- zakodowana wolna przestrzen.
- Throws:
NoSuchBlockException
- podany numer bloku nie jest reprezentowany
w danym bloku wolnej przestrzeni.