public interface PersistentDataContainer
Schnittstelle mit der das Persistenzmodul die Grundfunktionalität eines Archivdatensatzcontainers zur Verfügung stellt (siehe auch Technische Anforderungen ArS). Konkrete Objekte dieses Typs werden von der Methode PersistenceModule.getContainer(long)
des Persistenz-Moduls erzeugt.
Modifier and Type | Method and Description |
---|---|
boolean |
containerSavedTypeB()
Die Implementation dieser Methode zeigt an, ob der Container von der Sicherung auf einem Speichermedium vom Typ B gesichert wurde.
|
boolean |
deleteAllData()
Löscht den gesamten Container mit allen gespeicherten Datensätzen vom Speichermedium Typ A.
|
void |
finalizeAllData()
Dieser Aufruf signalisiert dem Persistenzmodul, dass kein weiterer Datensatz mehr in diesen Container abgelegt wird.
|
void |
flush()
Sichert alle Datensätze, die vom Container gepuffert wurden.
|
long |
getContainerId()
Bestimmt die eindeutige laufende Nummer dieses Datensatzcontainers.
|
DataContainerIdentification |
getDataContainerIdentification()
Bestimmt die identifizierenden Informationen des Containers (Systemobjekt, Attributgruppe, Aspekt, Simulationsvariante und Datensatzart).
|
int |
getDataCount()
Bestimmt die Anzahl Datensätze in diesem Container Nach einem unkontrollierten Beenden des Archivsystems wird diese Methode in der Initialisierungsphase für jeden noch nicht abgschlossenen Container aufgerufen um die notwendigen Verwaltungsinformationen zu aktualisieren.
|
long |
getDeleteDate()
Der Rückgabewert dieser Methode bestimmt, wann der Container zu löschen ist.
|
DataTiming |
getMaximumDataTiming()
Bestimmt die maximalen Werte von Datenzeitstempel, Archivzeitstempel und Datensatzindex aller in diesem Container mit
storeData(de.bsvrz.dav.daf.main.impl.archive.DataTiming, de.bsvrz.dav.daf.main.DataState, byte[], boolean) gespeicherten Daten. |
DataTiming |
getMinimumDataTiming()
Bestimmt die minimalen Werte von Datenzeitstempel, Archivzeitstempel und Datensatzindex aller in diesem Container mit
storeData(de.bsvrz.dav.daf.main.impl.archive.DataTiming, de.bsvrz.dav.daf.main.DataState, byte[], boolean) gespeicherten Daten. |
boolean |
getSaveStatus()
Der Rückgabewert dieser Methode gibt darüber Auskunft, ob der Container der Sicherung übergeben werden soll.
|
int |
getSerializerVersion()
Bestimmt die Version des Serialisierers, der beim Serialisieren der Datensätze dieses Containers benutzt wurde.
|
long |
getStorageSize()
Bestimmt den Speicherbedarf des Containers.
|
int |
getVolumeIdTypeB()
Die Implemetierung dieser Methode gibt die eindeutige Identifizierung des Speichermediums vom Typ B zurück, auf dem der Container gesichert wurde.
|
boolean |
isContainerFinalized()
Die Implemetierung dieser Methode gibt den Zustand des Containers wieder, wurde der Container mit der Methode
finalizeAllData() abgeschlossen, wird der Wert true zurückgegeben in allen anderen Fällen der Wert false. |
void |
loadAllData(int mediaName)
Lädt alle Datensätze eines Containers von einem externen Medium.
|
int |
saveAllData()
Sichert alle Datensätze des Containers auf einem externen Medium.
|
void |
storeData(DataTiming dataTiming,
DataState dataState,
byte[] dataBytes,
boolean flush)
Speichert einen Datensatz mit seinen Headerinformationen (Zeitstempel, laufende Nummer und Kompressionsart) im Container ab.
|
long getContainerId()
Bestimmt die eindeutige laufende Nummer dieses Datensatzcontainers.
DataContainerIdentification getDataContainerIdentification()
Bestimmt die identifizierenden Informationen des Containers (Systemobjekt, Attributgruppe, Aspekt, Simulationsvariante und Datensatzart).
int getSerializerVersion()
Bestimmt die Version des Serialisierers, der beim Serialisieren der Datensätze dieses Containers benutzt wurde.
Serializer.getVersion()
void storeData(DataTiming dataTiming, DataState dataState, byte[] dataBytes, boolean flush) throws java.io.IOException
Speichert einen Datensatz mit seinen Headerinformationen (Zeitstempel, laufende Nummer und Kompressionsart) im Container ab. Weitere Headerinformationen (Objekt-Id, Attributgruppe, Aspekt etc.) werden nicht mit jedem Datensatz gespeichert, weil sie sich innerhalb eines Containers nicht verändern. Bezüglich eines Containers kann davon ausgegangen werden, dass die Daten- und Archivzeitstempel sowie der Datensatzindex in aufeinanderfolgenden Aufrufen der Methode monoton steigend sind. Das übergebene Bytearray kann bei Bedarf von einer Implementierung komprimiert werden. Über ein Flag kann bei Bedarf spezifiziert werden, ob die Speicherung synchron erfolgen soll und abgeschlossen sein muss, bevor die Methode sich beendet. Dies wird vom ContainerManager gesetzt, wenn der Datensatz nach dem Speichern quittiert werden soll. Wenn das Flag nicht gesetzt ist, kann eine Implementierung die Speicherung bei Bedarf asynchron bzw. gepuffert durchführen.
dataTiming
- Datenzeitstempel, Archivzeitstempel und Datensatzindex des Datensatzes.dataState
- Typ des Datensatzes (Nutzdaten, keine Daten, keine Quelle, potentielle Datenlücke etc.).dataBytes
- Byte-Array mit den unkomprimierten, serialisierten Nutzdaten oder null
im Falle eines leeren Datensatzes ohne Nutzdaten.flush
- true
, wenn die Speicherung synchron durchgeführt werden soll, sonst false
.java.io.IOException
- Beim Zugriff auf die physische Abbildung des Containers auf einem Speichermedium kam es zu einem Fehler. Die Daten konnten nicht geschrieben werden.void finalizeAllData() throws java.io.IOException
Dieser Aufruf signalisiert dem Persistenzmodul, dass kein weiterer Datensatz mehr in diesen Container abgelegt wird. Nach dem Aufruf dieser Methode wird die Methode storeData(de.bsvrz.dav.daf.main.impl.archive.DataTiming, de.bsvrz.dav.daf.main.DataState, byte[], boolean)
für diesen Container nicht mehr aufgerufen.
java.io.IOException
- Beim Zugriff auf die physische Abbildung des Containers auf einem Speichermedium kam es zu einem Fehler. Der Container konnte nicht abgeschlossen werden.DataTiming getMinimumDataTiming()
Bestimmt die minimalen Werte von Datenzeitstempel, Archivzeitstempel und Datensatzindex aller in diesem Container mit storeData(de.bsvrz.dav.daf.main.impl.archive.DataTiming, de.bsvrz.dav.daf.main.DataState, byte[], boolean)
gespeicherten Daten. Nach einem unkontrollierten Beenden des Archivsystems wird diese Methode in der Initialisierungsphase für jeden noch nicht abgschlossenen Container aufgerufen um die notwendigen Verwaltungsinformationen zu aktualisieren.
DataTiming getMaximumDataTiming()
Bestimmt die maximalen Werte von Datenzeitstempel, Archivzeitstempel und Datensatzindex aller in diesem Container mit storeData(de.bsvrz.dav.daf.main.impl.archive.DataTiming, de.bsvrz.dav.daf.main.DataState, byte[], boolean)
gespeicherten Daten. Nach einem unkontrollierten Beenden des Archivsystems wird diese Methode in der Initialisierungsphase für jeden noch nicht abgschlossenen Container aufgerufen um die notwendigen Verwaltungsinformationen zu aktualisieren.
int getDataCount()
Bestimmt die Anzahl Datensätze in diesem Container Nach einem unkontrollierten Beenden des Archivsystems wird diese Methode in der Initialisierungsphase für jeden noch nicht abgschlossenen Container aufgerufen um die notwendigen Verwaltungsinformationen zu aktualisieren.
long getStorageSize()
Bestimmt den Speicherbedarf des Containers. Diese Methode wird vom ContainerManager bei der Entscheidung ob ein Container abgeschlossen und ein neuer Container angelegt werden soll verwendet. Ein Implementierung sollte den vom Container beanspruchten Platz nach eventueller Komprimierung der Datensätze ermitteln und zurückgeben.
boolean getSaveStatus()
Der Rückgabewert dieser Methode gibt darüber Auskunft, ob der Container der Sicherung übergeben werden soll.
boolean containerSavedTypeB()
Die Implementation dieser Methode zeigt an, ob der Container von der Sicherung auf einem Speichermedium vom Typ B gesichert wurde.
long getDeleteDate()
Der Rückgabewert dieser Methode bestimmt, wann der Container zu löschen ist. Dieser Wert entspricht dem Vorhaltezeitraum in den technischen Anforderungen. Ist der Vorhaltezeitraum abgelaufen wird der Container vom Speichermedium Typ A entfernt.
int getVolumeIdTypeB() throws java.lang.IllegalStateException
Die Implemetierung dieser Methode gibt die eindeutige Identifizierung des Speichermediums vom Typ B zurück, auf dem der Container gesichert wurde.
java.lang.IllegalStateException
- Der Container wurde bisher noch nicht auf einem Speichermedium vom Typ B gesichert, somit ist die eindeutige Identifizierung unbekanntint saveAllData() throws java.io.IOException
Sichert alle Datensätze des Containers auf einem externen Medium.
java.io.IOException
boolean deleteAllData()
Löscht den gesamten Container mit allen gespeicherten Datensätzen vom Speichermedium Typ A.
void loadAllData(int mediaName) throws java.io.IOException, BadVolumeException
Lädt alle Datensätze eines Containers von einem externen Medium.
mediaName
- Name des Mediums auf dem die Datensätze vorher mit der Methode saveAllData()
gesichert wurden.java.io.IOException
- Beim Zugriff auf die physische Abbildung des Containers auf einem Speichermedium kam es zu einem Fehler, der geforderte Container nicht wiederhergestellt werdenBadVolumeException
- Auf das Speichermedium der Sicherung konnte nicht Zugegriffen werden, obwohl sich dieses im Zugriff der Sicherung befindetvoid flush() throws java.io.IOException
Sichert alle Datensätze, die vom Container gepuffert wurden. Nachdem diese Methode verlassen wird, sind alle Datensätze des Containers persistent auf einem Datenträger gespeichert und befinden sich im direkten Zugriff des Archivsystems.
java.io.IOException
- Beim Zugriff auf die physische Abbildung des Containers auf einem Speichermedium kam es zu einem Fehler, gepufferte Datensätze konnten nicht geschrieben werden.boolean isContainerFinalized()
Die Implemetierung dieser Methode gibt den Zustand des Containers wieder, wurde der Container mit der Methode finalizeAllData()
abgeschlossen, wird der Wert true zurückgegeben in allen anderen Fällen der Wert false.