public class ContainerFile
extends java.lang.Object
Diese Klasse enthaelt die Funktionalitaet zum Erzeugen, Lesen, Schreiben und Loeschen von Container-Dateien. Jeder Task, der mit Container-Dateien arbeitet, enthaelt ein Objekt dieser Klasse. Die Sichtbarkeit von Konstruktor und Methoden ist beschraenkt, da diese Klasse nur durch den PersistenceManager
im gleichen Package benutzt wird. Dieser haelt für jede anfragende RepeatingTask
ein Objekt dieser Klasse und leitet Anfragen bzgl. Container-Dateien an dieses ContainerFile
-Objekt weiter.
Modifier and Type | Field and Description |
---|---|
static java.io.FilenameFilter |
CONT_FILENAME_FILTER
Filter zur Erkennung von Containerdateien anhand des Dateinamens.
|
static boolean |
DECOMPRESS_QUERY_RESULTS
Falls wahr, werden Archivanfragen komprimiert beantwortet (ist langsam, weil das Stream-Interface der Kernsoftware langsam ist)
|
static int |
MAX_UNCOMPRESSED
Datensätze bis zu dieser Laenge bleiben immer unkomprimiert.
|
static int |
NOT_COMPRESSED
Wert des Compress-Info-Feldes, wenn DS nicht komprimiert ist
|
Modifier and Type | Method and Description |
---|---|
void |
closeContainerRecount(long vorhalteZeit)
Schliesst einen Container, indem jeder Datensatz-Header des Containers gelesen wird, um die Min-/Max-Werte und die Anzahl der Datensätze zu bestimmen.
|
static long |
compareContainerFile(java.io.File file1,
java.io.File file2)
Vergleicht die ID’s von zwei ContainerFiles:
- grösser 0, wenn die ID des ersten ContainerFiles grösser ist, als die Zweite; - kleiner 0, wenn sie kleiner ist als die Zweite; - 0, wenn sie gleich sind. |
long |
compareContainerFile(long fileID2CompareWith)
Vergleicht die ID’s von zwei ContainerFiles
grösser 0, wenn die ID dieses ContainerFiles grösser ist, als die zu Vergleichende kleiner 0, wenn sie kleiner ist als die zu Vergleichende 0, wenn sie gleich sind |
static java.lang.String |
getContainerFileName(long containerId)
Liefert den Dateinamen des Daten-Containers mit der angegebenen Container-ID.
|
static long |
getContID(java.io.File file)
Liefert die Container-ID zur angegebenen Container-Datei, indem die im Container-Dateinamen enthaltene Container-ID ausgelesen wird.
|
static long |
getContID(java.lang.String fileName)
Liefert die Container-ID zum angegebenen Container-Datei-Namen, indem die im Container-Dateinamen enthaltene Container-ID ausgelesen wird.
|
static int |
getHeaderLen()
Ermittelt die Gesamtlaenge des mit
accessContainer() im Zugriff befindlichen Containers. |
static int |
getOpenFileLimit() |
static int |
getTotalDataOverhead()
Ermittelt den vollstaendigen Overhead für einen Datensatz.
|
static boolean |
isContainerFile(java.io.File f)
Liefert Kennzeichen, ob die angegebene Datei eine Container-Datei ist.
|
static boolean |
isContainerFileName(java.lang.String name)
Liefert Kennzeichen, ob der angegebene Dateiname eine moegliche Container-Datei ist.
|
static void |
prepareForPerformanceTest(byte[] testDat)
Wenn diese Methode aufgerufen wird, koennen keine Daten archiviert werden.
|
static void |
setOpenFileLimit(int openFileLimit) |
java.lang.String |
toString() |
void |
writeContainerHeader()
Schreibt die aktuellen Header-Parameter an den Anfang der Container-Datei.
|
void |
writeInitialContainerHeader()
Schreibt die aktuellen Header-Parameter an den Anfang der Container-Datei.
|
public static final int NOT_COMPRESSED
Wert des Compress-Info-Feldes, wenn DS nicht komprimiert ist
public static boolean DECOMPRESS_QUERY_RESULTS
Falls wahr, werden Archivanfragen komprimiert beantwortet (ist langsam, weil das Stream-Interface der Kernsoftware langsam ist)
public static int MAX_UNCOMPRESSED
public static final java.io.FilenameFilter CONT_FILENAME_FILTER
Filter zur Erkennung von Containerdateien anhand des Dateinamens.
public static int getOpenFileLimit()
public static void setOpenFileLimit(int openFileLimit)
public static void prepareForPerformanceTest(byte[] testDat)
Wenn diese Methode aufgerufen wird, koennen keine Daten archiviert werden. Stattdessen werden Dummy-Daten mit bekannter Laenge archiviert, um die Performance des Speichersystems testen zu koennen.
testDat
- Daten, die pro Datensatz in die Container geschrieben werden.public long compareContainerFile(long fileID2CompareWith)
Vergleicht die ID’s von zwei ContainerFiles
grösser 0, wenn die ID dieses ContainerFiles grösser ist, als die zu Vergleichende
kleiner 0, wenn sie kleiner ist als die zu Vergleichende
0, wenn sie gleich sind
fileID2CompareWith
- public static long compareContainerFile(java.io.File file1, java.io.File file2) throws PersistenceException
Vergleicht die ID’s von zwei ContainerFiles:
- grösser 0, wenn die ID des ersten ContainerFiles grösser ist, als die Zweite;
- kleiner 0, wenn sie kleiner ist als die Zweite;
- 0, wenn sie gleich sind.
file1
- das erste Filefile2
- das zweite FilePersistenceException
- falls die Dateien keine ContainerFiles sindpublic java.lang.String toString()
toString
in class java.lang.Object
public static boolean isContainerFile(java.io.File f)
Liefert Kennzeichen, ob die angegebene Datei eine Container-Datei ist.
f
- Dateipublic static boolean isContainerFileName(java.lang.String name)
Liefert Kennzeichen, ob der angegebene Dateiname eine moegliche Container-Datei ist.
name
- Dateinamepublic static long getContID(java.io.File file)
Liefert die Container-ID zur angegebenen Container-Datei, indem die im Container-Dateinamen enthaltene Container-ID ausgelesen wird. Alternativ kann die Container-ID aus den Container-Header-Parametern gelesen werden; siehe dazu #getContainerHeaderParam(KeyValParam)
.
file
- Container-Dateipublic static long getContID(java.lang.String fileName)
Liefert die Container-ID zum angegebenen Container-Datei-Namen, indem die im Container-Dateinamen enthaltene Container-ID ausgelesen wird. Alternativ kann die Container-ID aus den Container-Header-Parametern gelesen werden; siehe dazu #getContainerHeaderParam(KeyValParam)
.
file
- Container-Dateipublic static java.lang.String getContainerFileName(long containerId)
Liefert den Dateinamen des Daten-Containers mit der angegebenen Container-ID.
containerId
- Container-IDpublic void closeContainerRecount(long vorhalteZeit) throws PersistenceException
Schliesst einen Container, indem jeder Datensatz-Header des Containers gelesen wird, um die Min-/Max-Werte und die Anzahl der Datensätze zu bestimmen. Die Information der Indexe reicht nicht aus, weil dort die Anzahl der Datensätze nicht verfuegbar ist.
vorhalteZeit
- parametrierte Vorhaltezeit in SekundenPersistenceException
public void writeContainerHeader() throws PersistenceException
Schreibt die aktuellen Header-Parameter an den Anfang der Container-Datei. Bei einer neuen leeren Datei werden die Parameter an den Anfang der Datei angehangen, bei einer zu aendernden Container-Datei werden die vorhandenen Parameter ueberschrieben. Bevor mit dieser Methode der Header geschrieben werden kann, muss entweder mit #createDefaultContainerHeader(boolean,long) neuer Header erzeugt oder mit {@link #readContainerHeader()} ein Header eingelesen worden sein.
PersistenceException
public void writeInitialContainerHeader() throws PersistenceException
Schreibt die aktuellen Header-Parameter an den Anfang der Container-Datei. Bei einer neuen leeren Datei werden die Parameter an den Anfang der Datei angehangen, bei einer zu aendernden Container-Datei werden die vorhandenen Parameter ueberschrieben. Bevor mit dieser Methode der Header geschrieben werden kann, muss entweder mit #createDefaultContainerHeader(boolean,long) neuer Header erzeugt oder mit {@link #readContainerHeader()} ein Header eingelesen worden sein.
PersistenceException
public static int getHeaderLen()
Ermittelt die Gesamtlaenge des mit accessContainer()
im Zugriff befindlichen Containers.
PersistenceException
public static int getTotalDataOverhead()
Ermittelt den vollstaendigen Overhead für einen Datensatz. Inklusive Laengenbyte, Datensatz-Header, Compress-Feld und abschliessendem Separator.