de.bsvrz.ars.ars.persistence
Class CacheManager.Cache

java.lang.Object
  extended by de.bsvrz.ars.ars.persistence.CacheManager.Cache
Enclosing class:
CacheManager

public static class CacheManager.Cache
extends Object

Realisiert den Zwischenspeicher für eine Containerdatei.


Field Summary
private  int _bufferedCount
          Anzahl der bisher von diesem Cache zwischengespeicherten Datenblöcke.
private  int _bufferSize
          Kapazität des Zwischenspeichers in Byte
private  int _containerSize
          Größe der ContainerDatei wie sie nach dem Schreiben der noch zwischengespeicherten Daten wäre.
private  boolean _createFile
          true, falls beim nächsten Schreibvorgang eine neue Datei erzeugt werden soll; false, false beim nächsten Schreibvorgang an die bereits vorhandenen Datei angehangen werden soll.
private  File _file
          Datei in die zwischengespeicherte Daten letztendlich geschrieben werden sollen.
private  ByteArrayOutputStream _out
          Zwischenspeicher für noch zu schreibende Bytes.
private  int _processedCount
          Anzahl der bisher von diesem Cache bearbeiteten Datenblöcke.
private  int _unbufferedCount
          Anzahl der bisher von diesem Cache nicht zwischengespeicherten Datenblöcke.
private  int _writeCount
          Anzahl der bisher durchgeführten Datei-Schreibvorgänge in diesem Container.
 
Constructor Summary
private CacheManager.Cache(File file, boolean createFile, int bufferSize)
          Erzeugt einen neuen Cache für die angegebene Datei.
 
Method Summary
 void cache(byte[] data, int length)
          Cachen der übergebenen Daten.
 void flush()
          Schreibt die zwischengespeicherten Daten in die ContainerDatei.
(package private)  int getBufferedCount()
           
(package private)  int getBufferSize()
           
 long getContainerSize()
          Bestimmt die Größe der ContainerDatei wie sie nach dem Schreiben der noch zwischengespeicherten Daten wäre.
(package private)  File getFile()
           
(package private)  int getProcessedCount()
           
(package private)  int getUnbufferedCount()
           
(package private)  int getWriteCount()
           
(package private)  boolean isCreateFile()
           
 String toString()
           
private  void writeCacheAndDataToFile(byte[] data, int offset, int length)
          Schreibt eventuell zwischengespeicherte Daten und optional zusätzlich einen weiteren Datensatz in die ContainerDatei
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

_file

private final File _file
Datei in die zwischengespeicherte Daten letztendlich geschrieben werden sollen.


_createFile

private boolean _createFile
true, falls beim nächsten Schreibvorgang eine neue Datei erzeugt werden soll; false, false beim nächsten Schreibvorgang an die bereits vorhandenen Datei angehangen werden soll.


_bufferSize

private final int _bufferSize
Kapazität des Zwischenspeichers in Byte


_out

private final ByteArrayOutputStream _out
Zwischenspeicher für noch zu schreibende Bytes.


_containerSize

private int _containerSize
Größe der ContainerDatei wie sie nach dem Schreiben der noch zwischengespeicherten Daten wäre.


_writeCount

private int _writeCount
Anzahl der bisher durchgeführten Datei-Schreibvorgänge in diesem Container.


_processedCount

private int _processedCount
Anzahl der bisher von diesem Cache bearbeiteten Datenblöcke.


_bufferedCount

private int _bufferedCount
Anzahl der bisher von diesem Cache zwischengespeicherten Datenblöcke.


_unbufferedCount

private int _unbufferedCount
Anzahl der bisher von diesem Cache nicht zwischengespeicherten Datenblöcke.

Constructor Detail

CacheManager.Cache

private CacheManager.Cache(File file,
                           boolean createFile,
                           int bufferSize)
Erzeugt einen neuen Cache für die angegebene Datei.

Parameters:
file - Datei in die zwischengespeicherte Daten letztendlich geschrieben werden sollen.
createFile - true, falls eine neue Datei erzeugt werden soll; false, false an die bereits vorhandenen Datei angehangen werden soll.
bufferSize - Kapazität des Zwischenspeichers in Bytes.
Method Detail

getFile

File getFile()
Returns:
Datei in die zwischengespeicherte Daten letztendlich geschrieben werden sollen.

isCreateFile

boolean isCreateFile()
Returns:
true, falls beim nächsten Schreibvorgang eine neue Datei erzeugt werden soll; false, false beim nächsten Schreibvorgang an die bereits vorhandenen Datei angehangen werden soll.

getBufferSize

int getBufferSize()
Returns:
Kapazität des Zwischenspeichers in Byte

getWriteCount

int getWriteCount()
Returns:
Anzahl der bisher durchgeführten Datei-Schreibvorgänge in diesem Container.

getProcessedCount

int getProcessedCount()
Returns:
Anzahl der bisher von diesem Cache bearbeiteten Datenblöcke.

getBufferedCount

int getBufferedCount()
Returns:
Anzahl der bisher von diesem Cache zwischengespeicherten Datenblöcke.

getUnbufferedCount

int getUnbufferedCount()
Returns:
Anzahl der bisher von diesem Cache nicht zwischengespeicherten Datenblöcke.

getContainerSize

public long getContainerSize()
Bestimmt die Größe der ContainerDatei wie sie nach dem Schreiben der noch zwischengespeicherten Daten wäre.

Returns:
Größe der ContainerDatei in Bytes.

cache

public void cache(byte[] data,
                  int length)
           throws PersistenceException
Cachen der übergebenen Daten. Falls die Gesamtgröße der zwischengespeicherten Daten die Größe des Caches überschreiten würde, werden die bereits zwischengespeicherten Daten vorher in die Containerdatei geschrieben.

Parameters:
data - Array mit den zu speichernden Bytes
length - Anzahl der zu speichernden Bytes im Array
Throws:
PersistenceException - Wenn beim Schreiben der Daten ein Problem aufgetreten ist.

flush

public void flush()
           throws PersistenceException
Schreibt die zwischengespeicherten Daten in die ContainerDatei.

Throws:
PersistenceException - Wenn beim Schreiben der Daten ein Problem aufgetreten ist.

toString

public String toString()
Overrides:
toString in class Object

writeCacheAndDataToFile

private void writeCacheAndDataToFile(byte[] data,
                                     int offset,
                                     int length)
                              throws PersistenceException
Schreibt eventuell zwischengespeicherte Daten und optional zusätzlich einen weiteren Datensatz in die ContainerDatei

Parameters:
data - Array mit weiteren zu schreibenden Daten oder null, falls nur die zwischengespeicherten Daten geschrieben werden sollen.
offset - Index des ersten zu schreibenden Bytes im Array
length - Anzahl der zu schreibenden Bytes im Array
Throws:
PersistenceException - Wenn beim Schreiben der Daten ein Problem aufgetreten ist.