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:


Fields inherited from class pl.edu.pjwstk.yaod.store.AbstractBlock
m_blockID
 
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 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
 

Constructor Detail

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.
Method Detail

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.