Package de.bsvrz.ars.ars.persistence
Class ContainerFile
java.lang.Object
de.bsvrz.ars.ars.persistence.ContainerFile
public class ContainerFile
extends java.lang.Object
Diese Klasse enthält die Funktionalitaet zum Erzeugen, Lesen, Schreiben und Loeschen von Container-Dateien. Jeder Task, der mit Container-Dateien arbeitet,
enthält 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 hält für jede anfragende Task
ein Objekt dieser Klasse und leitet Anfragen bzgl. Container-Dateien an dieses ContainerFile-Objekt weiter.-
Field Summary
Fields Modifier and Type Field Description static intBUFFER_SIZEGröße der Daten-Puffer in Byte.static java.io.FilenameFilterCONT_FILENAME_FILTERFilter zur Erkennung von Containerdateien anhand des Dateinamens.static intDATALEN_LENLänge des Längenbytes vor jedem Datensatz (4 Bytes, Integer).static intMAX_UNCOMPRESSEDDatensätze bis zu dieser Länge bleiben immer unkomprimiert.static byte[]NO_DATADatensatzbytes, falls "keine Daten" signalisiert wurdestatic byte[]NO_RIGHTSDatensatzbytes, falls "keine Rechte" signalisiert wurdestatic byte[]NO_SOURCEDatensatzbytes, falls "keine Quelle" signalisiert wurdestatic intNOT_COMPRESSEDWert des Compress-Info-Feldes, wenn DS nicht komprimiert iststatic byte[]POT_GAPDatensatzbytes um eine potentielle Datenlücke zu kennzeichnen -
Constructor Summary
Constructors Constructor Description ContainerFile() -
Method Summary
Modifier and Type Method Description voidensureHeaderRead()Stellt sicher dass der Header eingelesen wurde.static java.lang.StringgetContainerFileName(long containerId)Liefert den Dateinamen des Daten-Containers mit der angegebenen Container-ID.longgetContainerId()java.io.FilegetContFile()static longgetContID(java.io.File file)Liefert die Container-ID zur angegebenen Container-Datei, indem die im Container-Dateinamen enthaltene Container-ID ausgelesen wird.static longgetContID(java.lang.String fileName)Liefert die Container-ID zum angegebenen Container-Datei-Namen, indem die im Container-Dateinamen enthaltene Container-ID ausgelesen wird.static intgetHeaderLen()Ermittelt die Gesamtlänge des mitaccessContainer()im Zugriff befindlichen Containers.IdContainerFileDirgetLocation()static intgetTotalDataOverhead()Ermittelt den vollständigen Overhead für einen Datensatz.static booleanisContainerFile(java.io.File f)Liefert Kennzeichen, ob die angegebene Datei eine Container-Datei ist.static booleanisContainerFileName(java.lang.String name)Liefert Kennzeichen, ob der angegebene Dateiname eine mögliche Container-Datei ist.java.lang.StringtoString()static voidwriteContainerFileSafely(java.nio.file.Path containerFile, boolean create, WriteAction writeAction)voidwriteContainerHeader()Schreibt die aktuellen Header-Parameter an den Anfang der Container-Datei.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Field Details
-
DATALEN_LEN
public static final int DATALEN_LENLänge des Längenbytes vor jedem Datensatz (4 Bytes, Integer).- See Also:
- Constant Field Values
-
NOT_COMPRESSED
public static final int NOT_COMPRESSEDWert des Compress-Info-Feldes, wenn DS nicht komprimiert ist- See Also:
- Constant Field Values
-
NO_SOURCE
public static final byte[] NO_SOURCEDatensatzbytes, falls "keine Quelle" signalisiert wurde -
NO_DATA
public static final byte[] NO_DATADatensatzbytes, falls "keine Daten" signalisiert wurde -
NO_RIGHTS
public static final byte[] NO_RIGHTSDatensatzbytes, falls "keine Rechte" signalisiert wurde -
POT_GAP
public static final byte[] POT_GAPDatensatzbytes um eine potentielle Datenlücke zu kennzeichnen -
MAX_UNCOMPRESSED
public static int MAX_UNCOMPRESSED -
CONT_FILENAME_FILTER
public static final java.io.FilenameFilter CONT_FILENAME_FILTERFilter zur Erkennung von Containerdateien anhand des Dateinamens. -
BUFFER_SIZE
public static final int BUFFER_SIZEGröße der Daten-Puffer in Byte. Wenn eine Anfrage 10000 Unteranfragen enthält, werden auch 10000 ContainerFile-Objekte angelegt. Drum nicht zu gross wählen. Bei Bedarf werden Größere Puffer extra angelegt.- See Also:
- Constant Field Values
-
-
Constructor Details
-
ContainerFile
public ContainerFile()
-
-
Method Details
-
toString
public java.lang.String toString()- Overrides:
toStringin classjava.lang.Object
-
isContainerFile
public static boolean isContainerFile(java.io.File f)Liefert Kennzeichen, ob die angegebene Datei eine Container-Datei ist.- Parameters:
f- Datei- Returns:
- Kennzeichen
-
isContainerFileName
public static boolean isContainerFileName(java.lang.String name)Liefert Kennzeichen, ob der angegebene Dateiname eine mögliche Container-Datei ist.- Parameters:
name- Dateiname- Returns:
- Kennzeichen
-
getContID
public 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 dazugetContHdrParamAsLong(KeyValParam).- Parameters:
file- Container-Datei- Returns:
- Container-ID
-
getContID
public 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 dazugetContHdrParamAsLong(KeyValParam).- Parameters:
fileName- Container-Datei- Returns:
- Container-ID
-
getContainerFileName
public static java.lang.String getContainerFileName(long containerId)Liefert den Dateinamen des Daten-Containers mit der angegebenen Container-ID.- Parameters:
containerId- Container-ID- Returns:
- Dateiname
-
ensureHeaderRead
Stellt sicher dass der Header eingelesen wurde. Liest ihn ein, falls noch nicht geschehen.- Throws:
PersistenceException- Lesefehler im Persistenzverzeichnis
-
writeContainerHeader
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 ändernden Container-Datei werden die vorhandenen Parameter überschrieben. Bevor mit dieser Methode der Header geschrieben werden kann, muss entweder mitcreateDefaultContainerHeader(boolean)neuer Header erzeugt oder mitreadContainerHeader()ein Header eingelesen worden sein.- Throws:
PersistenceException- Lesefehler im Persistenzverzeichnis
-
writeContainerFileSafely
public static void writeContainerFileSafely(java.nio.file.Path containerFile, boolean create, WriteAction writeAction) throws PersistenceException- Throws:
PersistenceException
-
getHeaderLen
public static int getHeaderLen()Ermittelt die Gesamtlänge des mitaccessContainer()im Zugriff befindlichen Containers.- Returns:
- Länge der Container-Datei
-
getTotalDataOverhead
public static int getTotalDataOverhead()Ermittelt den vollständigen Overhead für einen Datensatz. Inklusive Längenbyte, Datensatz-Header, Compress-Feld und abschliessendem Separator.- Returns:
-
getContainerId
public long getContainerId() -
getContFile
public java.io.File getContFile() -
getLocation
-