de.bsvrz.ars.ars.persistence
Class CacheManager

java.lang.Object
  extended by de.bsvrz.ars.ars.persistence.CacheManager

public class CacheManager
extends Object

Diese Klasse implementiert die Verwaltung der Caches für die Schreibzugriffe auf Containerdateien. Die Klasse ist als Singleton realisiert, weil es im Original-Archivsystem keine zentrale Stelle zum Zugriff auf Container-Dateien gibt (der PersistenzManager war wohl dafür vorgesehen, allerdings gibt es auch einige Zugriffe auf Containerdateien, die am PersistenzManager vorbei gehen). Vor dem Zugriff auf Containerdateien muss die Cache-Verwaltung mit der Methode init() erzeugt und initialisiert werden. Beim Beenden des Archivsystems muss mit einem Aufruf der Methode close das Schreiben der noch in den einzelnen Caches vorhandenen Daten veranlasst werden.

Author:
Kappich Systemberatung

Nested Class Summary
static class CacheManager.Cache
          Realisiert den Zwischenspeicher für eine Containerdatei.
static class CacheManager.DataIdentificationIds
          Klasse, die die IDs der Objekte einer Datenidentifikation aufnehmen kann.
 
Method Summary
 void close()
          Schreibt alle in den einzelnen Caches vorhandenen Daten und schließt die Cache-Verwaltung.
 CacheManager.Cache createCache(ContainerFile cont, boolean createFile)
          Erzeugt einen neuen Cache für den angegebenen Container.
 void flushAll()
          Schreibt alle in den einzelnen Caches vorhandenen Daten.
 void forgetCache(ContainerFile containerFile)
          Entfernt den Cache des angegebenen Containers aus der Containerverwaltung.
 void forgetCache(long containerId)
          Entfernt den Cache des angegebenen Containers aus der Containerverwaltung.
 CacheManager.Cache getCache(ContainerFile containerFile)
          Liefert den Cache für den angegebenen Container zurück.
 long[] getCounts()
          Liefert ein Array mit folgenden statistischen Informationen:

Gesamtanzahl von Datei-Schreibvorgängen aller geschlossenen Cache-Objekte.

static CacheManager getInstance()
           
 void init(ArgumentList argumentList)
          Initialisiert den CacheManager.
 boolean isCacheEnabled()
           
 void setCacheEnabled(boolean cacheEnabled)
           
 void setCachingEnabled(long objectId, long atgId, long aspectId, int simulationVariant, boolean enable)
          Mit dieser Methode kann die Zwischenspeicherung für eine angegebene Datenidentifikation ein- bzw.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getInstance

public static CacheManager getInstance()
Returns:
Liefert das CacheManager-Objekt zurück.

init

public void init(ArgumentList argumentList)
Initialisiert den CacheManager. Das Aufrufargument -cachePufferGroesse=..., mit dem die Größe des Puffers pro Cache eingestellt werden kann, wird gelesen.

Parameters:
argumentList - Aufrufargumente der Applikation

close

public void close()
Schreibt alle in den einzelnen Caches vorhandenen Daten und schließt die Cache-Verwaltung. Vor einer erneuten Verwendung muss die Cache-Verwaltung mit einem erneuten Aufruf der Methode init initialisiert werden.


flushAll

public void flushAll()
Schreibt alle in den einzelnen Caches vorhandenen Daten.


getCache

public CacheManager.Cache getCache(ContainerFile containerFile)
Liefert den Cache für den angegebenen Container zurück.

Parameters:
containerFile - Container, dessen Cache bestimmt werden soll
Returns:
Cache des Containers oder null, wenn der Container keinen Cache hat.

createCache

public CacheManager.Cache createCache(ContainerFile cont,
                                      boolean createFile)
Erzeugt einen neuen Cache für den angegebenen Container.

Parameters:
cont - Container für den ein neuer Cache erzeugt werden soll.
createFile - true, falls eine neue Datei erzeugt werden soll; false, falls zu einer vorhandenen Dqtei hinzugefügt werden soll.
Returns:
Neuer Cache oder null, falls die Datenidentifikation des Containers nicht gecacht werden soll..

forgetCache

public void forgetCache(ContainerFile containerFile)
Entfernt den Cache des angegebenen Containers aus der Containerverwaltung. Eventuell noch im Cache befindliche Daten werden nicht automatisch geschrieben, sondern müssen vorher durch einen expliziten Aufruf der Methode CacheManager.Cache.flush() geschrieben werden.

Parameters:
containerFile - Container dessen Cache aus der Verwaltung entfernt werden soll.

forgetCache

public void forgetCache(long containerId)
Entfernt den Cache des angegebenen Containers aus der Containerverwaltung. Eventuell noch im Cache befindliche Daten werden nicht automatisch geschrieben, sondern müssen vorher durch einen expliziten Aufruf der Methode CacheManager.Cache.flush() geschrieben werden.

Parameters:
containerId - ID des Containers dessen Cache aus der Verwaltung entfernt werden soll.

getCounts

public long[] getCounts()
Liefert ein Array mit folgenden statistischen Informationen:

Gesamtanzahl von Datei-Schreibvorgängen aller geschlossenen Cache-Objekte.

Gesamtanzahl von verarbeiteten Datenblöcken aller geschlossenen Cache-Objekte.

Gesamtanzahl von zwischengespeicherten Datenblöcken aller geschlossenen Cache-Objekte.

Gesamtanzahl von nicht zwischengespeicherten Datenblöcken aller geschlossenen Cache-Objekte.

Returns:
Array mit statistischen Informationen

setCachingEnabled

public void setCachingEnabled(long objectId,
                              long atgId,
                              long aspectId,
                              int simulationVariant,
                              boolean enable)
Mit dieser Methode kann die Zwischenspeicherung für eine angegebene Datenidentifikation ein- bzw. ausgeschaltet werden.

Parameters:
objectId - Objekt-ID der Datenidentifikation.
atgId - ID der Attribugruppe der Datenidentifikation.
aspectId - ID des Aspekts der Datenidentifikation.
simulationVariant - Simulationsvariante der Datenidentifikation.
enable - true, wenn die Zwischenspeicherung eingeschaltetwerden soll; false, wenn die Zwischenspeicherung ausgeschaltet werden soll.

isCacheEnabled

public boolean isCacheEnabled()

setCacheEnabled

public void setCacheEnabled(boolean cacheEnabled)