public interface PersistenceModule
Eine weitere Aufgabe des "PersistenceModule" ist es, die gespeicherten Datensätze persistent zu speichern. Diese
Aufgabe wird von einer Implementation des Interface ArchiveFileSaver
übernommen, diese
wird auch als Sicherung bezeichnet.
Modifier and Type | Method | Description |
---|---|---|
boolean |
checkPersistenceCapacity(long requiredCapacity) |
Die Implementation dieser Methode überprüft, ob für die Persistenz genügend freier Speicherplatz zur Verfügung
steht, der zum Archivieren von Archivdaten genutzt werden kann.
|
PersistentDataContainer |
createContainer(long containerId,
DataContainerIdentification containerIdentification,
long holdBackTime,
boolean saveTypeB,
int serializerVersion) |
Diese Methode erzeugt ein Objekt, über das auf einen Archivdatensatzcontainer zugegriffen werden kann.
|
PersistentContainerStreamSupplier |
getAllContainers() |
Die Implementation dieser Methode gibt ein Objekt zurück, über das alle Container, die sich im direkten Zugriff der
Persistenz befinden, angefordert werden können.
|
PersistentDataStreamSupplier[] |
getArchiveDataStreams(PersistentDataRequest[] requests) |
Startet eine Archivabfrage.
|
PersistentDataContainer |
getContainer(long containerId) |
Gibt ein Objekt zurück, über das auf einen Archivdatensatzcontainer zugegriffen werden kann.
|
java.util.Collection<java.lang.String> |
getFiles(int volumeId) |
Die Implementation dieser Methode gibt alle Dateinamen zurück, die sich auf einem Speichermedium des Typs B der
Sicherung befinden und mit der Methode
ArchiveFileSaver.saveFile(java.lang.String, java.io.File) dort abgelegt
wurden. |
java.util.Collection<java.lang.Integer> |
getVolumes() |
Die Implementation dieser Methode gibt die eindeutige Identifikation aller Speichermedien zurück, die sich im
direkten Zugriff der Sicherung befinden.
|
void |
initialize(ClientDavInterface connection) |
Die Implementation dieser Methode übernimmt ein Objekt vom Typ ClientDavInterface und stellt dieses intern zur
Verfügung.
|
void |
parseArguments(de.bsvrz.sys.funclib.commandLineArgs.ArgumentList argumentList) |
Diese Methode wird in der Initialisierungsphase aufgerufen um dem Persistenzmodul die Möglichkeit zu geben,
Aufrufparameter der Applikation zu lesen und zu interpretieren.
|
PersistentDataContainer |
reloadContainer(long containerId,
int volumeId) |
Die Implementation dieser Methode lädt einen Container aus der Sicherung.
|
void parseArguments(de.bsvrz.sys.funclib.commandLineArgs.ArgumentList argumentList) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException
argumentList
- Aufrufparameter der Applikation.java.lang.ClassNotFoundException
- Die angegebene Klasse, die das PersistenceModule implementieren soll, konnte nicht
gefunden werdenjava.lang.IllegalAccessException
- Die angegebene Klasse, die das PersistenceModule implementieren soll, ist nicht im
Zugriff der aufrufenden Klassejava.lang.InstantiationException
- Die angegebene Klasse, die das PersistenceModule implementieren soll, kann nicht
instanziiert werdenPersistentDataContainer getContainer(long containerId) throws java.io.IOException, java.lang.IllegalStateException
containerId
- Eindeutige Nummer des Containers.java.io.IOException
- Der Container ist auf dem benutzten Speichermedium nicht mehr vorhanden (gelöscht,
verschoben, umbenannt, ...)java.lang.IllegalStateException
- Der Container ist zwar physisch vorhanden, konnte nicht mehr rekonstruiert werden
(Daten im Container sind fehlerhaft und können nicht mehr ausgelesen/dekodiert
werden)PersistentDataContainer createContainer(long containerId, DataContainerIdentification containerIdentification, long holdBackTime, boolean saveTypeB, int serializerVersion) throws java.io.IOException, java.lang.IllegalArgumentException
containerId
- Eindeutiger Index, der den Container identifiziertcontainerIdentification
- Eindeutige Identifizierung des ContainersholdBackTime
- Vorhaltezeitraum des ContainerssaveTypeB
- Bestimmt ob der Container der Sicherung übergeben werden soll (true = ja; false =
nein)serializerVersion
- Version mit der alle Datensätze des Containers serialisiert wurdenjava.io.IOException
- Der Container konnte auf dem Speichermedium nicht erzeugt werdenjava.lang.IllegalArgumentException
- Der Container konnte nicht erzeugt werden, da er bereits existiertPersistentDataStreamSupplier[] getArchiveDataStreams(PersistentDataRequest[] requests)
PersistentDataRequest.isDelayedDataReorderedByDataTime()
) in der entsprechenden Teilanfrage beeinflusst werden. Je
Stream-Supplier werden alle Datensätze im spezifizierten Intervall zurückgegeben. Dazu gehört auch der Datensatz der
zu Beginn des Intervalls gültig ist. Dies ist i.a. nicht der erste Datensatz im Intervall, sondern der mit dem
nächstkleineren Datensatzindex. Dieser hat i.a. einen Zeitstempel der vor dem angefragten Intervall liegt. Nach dem
letzten Datensatz im Intervall wird ein Datensatz mit dem Typ DataState.END_OF_ARCHIVE
zurückgegeben. Es ist zu beachten, das die Teilanfragen unabhängig voneinander und parallel bearbeitet werden
müssen, da vom Abnehmer dynamisch gesteuert werden kann, in welcher Reihenfolge die entsprechender
Stream-Supplier-Objekte in der Rückgabe ausgelesen werden. Weiterhin müssen mehrere Aufrufe parallel bearbeitet und
die jeweiligen Ergebnis unabhängig voneinander abgefragt werden können.requests
- Array mit den parallel zu verarbeitenden Teilanfragen.PersistentDataContainer reloadContainer(long containerId, int volumeId) throws java.io.IOException, java.lang.IllegalStateException, BadVolumeException
containerId
- Eindeutige Identifikation des ContainersvolumeId
- Eindeutige Identifiktation des Speichermediums auf dem der Container gesichert wurde. Der
Container wurde mit dem Aufruf PersistentDataContainer.saveAllData()
auf dem
Speichermedium Typ B gesichert.java.io.IOException
- Fehler beim Zugriff auf die Datei, die von der Sicherung zurückgegeben wurde/solltejava.lang.IllegalStateException
- Der Container ist zwar physisch vorhanden, konnte nicht mehr rekonstruiert werden
(Daten im Container sind fehlerhaft und können nicht mehr ausgelesen/dekodiert
werden)BadVolumeException
- Das angegebene Speichermedium vom Typ B befindet sich nicht im direkten Zugriff der
Sicherungjava.util.Collection<java.lang.Integer> getVolumes()
java.util.Collection<java.lang.String> getFiles(int volumeId) throws java.io.IOException, java.lang.IllegalArgumentException, BadVolumeException
ArchiveFileSaver.saveFile(java.lang.String, java.io.File)
dort abgelegt
wurden.volumeId
- Eindeutige Identifikation des Speichermediums Typ B der SicherungArchiveFileSaver.saveFile(java.lang.String, java.io.File)
gespeichert wurdenjava.io.IOException
- Der Zugriff auf die Datei über das Speichermedium der Sicherung ist fehlgeschlagenjava.lang.IllegalArgumentException
- Die angegebene Datei war auf dem angegebenen Datenträger nicht zu findenBadVolumeException
- Der angegebene Datenträger ist nicht mehr vorhanden oder nicht mehr im direkten
Zugriff der SicherungPersistentContainerStreamSupplier getAllContainers()
void initialize(ClientDavInterface connection)
connection
- Objekt der Klasse ClientDavInterfaceboolean checkPersistenceCapacity(long requiredCapacity)
requiredCapacity
- Angabe des Speicherplatzes der Persistenz, der der Implementation des Interfaces zum
Speichern von Archivdaten zur Verfügung stehen muss. Die Angabe erfolgt in
Byte
.