Class SerializationHelper
java.lang.Object
de.bsvrz.ars.ars.persistence.writer.SerializationHelper
Hilfsklasse, die die Archivierung von Datensätzen übernimmt und diese jeweils entweder an den offenen Container anhängt,
oder einen neuen Container anfängt. Dafür wird die Bedingung geprüft, ob ein Container abgeschlossen werden muss.
Der zu schreibende Datensatz wird erst mit dem getSerializer()
geschrieben, dort gepuffert, und
kann später von ContainerFileHandle.appendSerializedData(ArchiveDataSerializer)
dort "abgeholt" werden
um die eigentlichen Bytes zum Schreiben abzurufen.
Dadurch ist diese Klasse nicht Threadsafe!
-
Constructor Summary
ConstructorsConstructorDescriptionSerializationHelper
(CloseConditions closeConditions, ContainerCreator containerCreator, boolean updateIndexes) Erstellt einen neuen SerializationHelper. -
Method Summary
Modifier and TypeMethodDescriptionboolean
appendSerializedData
(ActivePersistenceDirectory persistenceDirectory, ContainerDirectory containerFileDir, SerializableDataset dataset, int dataEntryLen) Hängt die vorher serialisierten Daten an den offenen Container an.boolean
createNewContainer
(ActivePersistenceDirectory persistenceDirectory, ContainerDirectory containerDirectory, SerializableDataset dataset, int dataEntryLen) Hängt die vorher serialisierten Daten an einen neuen Container an.boolean
writeData
(SerializableDataset dataset, ActivePersistenceDirectory persistenceDirectory, ContainerDirectory containerDirectory) Schreibt einen Datensatz in den offenen Container oder legt einen neuen Container an.
-
Constructor Details
-
SerializationHelper
public SerializationHelper(CloseConditions closeConditions, ContainerCreator containerCreator, boolean updateIndexes) Erstellt einen neuen SerializationHelper.- Parameters:
closeConditions
- AbschlussbedingungencontainerCreator
- Hilfsklasse, die beim Anlegen von neuen Containern hilftupdateIndexes
- Sollen Indexe mit aktualisiert werden? Im Normalfall ist das der Fall, bei der Migration werden die Indexe erst im Nachhinein gebildet, dahier wird dann hier false übergeben.
-
-
Method Details
-
writeData
public boolean writeData(SerializableDataset dataset, ActivePersistenceDirectory persistenceDirectory, ContainerDirectory containerDirectory) throws PersistenceException, IndexException, SynchronizationFailedException Schreibt einen Datensatz in den offenen Container oder legt einen neuen Container an.- Parameters:
dataset
- DatensatzpersistenceDirectory
- persistenzverzeichniscontainerDirectory
- Containerverzeichnis- Returns:
- Serialisierung erfolgreich?
- Throws:
PersistenceException
- Fehler bei SerialisierungIndexException
- Fehler bei IndexzugriffSynchronizationFailedException
- Synchronisierung fehlgeschlagen
-
appendSerializedData
public boolean appendSerializedData(ActivePersistenceDirectory persistenceDirectory, ContainerDirectory containerFileDir, SerializableDataset dataset, int dataEntryLen) throws PersistenceException, IndexException, SynchronizationFailedException Hängt die vorher serialisierten Daten an den offenen Container an.- Parameters:
persistenceDirectory
- PersistenzverzeichniscontainerFileDir
- Containerverzeichnisdataset
- Serialisierter DatensatzdataEntryLen
- Länge der serialisierten Daten- Returns:
- true, wenn erfolgreich, sonst false (insbesondere wenn der Datensatz aufgrund der Größe nicht archiviert werden konnte)
- Throws:
PersistenceException
- Fehler beim SchreibenIndexException
- Fehler beim IndexzugriffSynchronizationFailedException
- Fehler bei Synchronisierung
-
createNewContainer
public boolean createNewContainer(ActivePersistenceDirectory persistenceDirectory, ContainerDirectory containerDirectory, SerializableDataset dataset, int dataEntryLen) throws PersistenceException, IndexException, SynchronizationFailedException Hängt die vorher serialisierten Daten an einen neuen Container an.- Parameters:
persistenceDirectory
- PersistenzverzeichniscontainerDirectory
- Containerverzeichnisdataset
- Serialisierter DatensatzdataEntryLen
- Länge der serialisierten Daten- Returns:
- true, wenn erfolgreich, sonst false (insbesondere wenn der Datensatz aufgrund der Größe nicht archiviert werden konnte)
- Throws:
PersistenceException
- Fehler beim SchreibenIndexException
- Fehler beim IndexzugriffSynchronizationFailedException
- Fehler bei Synchronisierung
-
getSerializer
-