Class BucketContainerIterator
java.lang.Object
de.bsvrz.ars.ars.persistence.iter.BucketContainerIterator
- All Implemented Interfaces:
DataIterator
,AutoCloseable
Iteriert wie der
SequentialContainerIterator
über eine Menge von Containern. Diese Klasse muss benutzt werden, wenn sich die Containerdateien
zeitlich bzw. datenindexmäßig überschneiden.
In diesem Fall, werden die Container-Dateien in Buckets sortiert, wobei ein Bucket immer eine Menge an sich überschneidenden Containerdateien enthält. Die Buckets selbst werden aufsteigend nach Datenindex sortiert.
Diese Klasse erzeugt die Buckets nicht selbst, sondern sie werden im Konstruktor übergeben. Diese Klasse übernimmt das Iterieren und Sortieren von den einzelnen Datensätzen.
-
Constructor Summary
ConstructorsConstructorDescriptionBucketContainerIterator
(List<List<QueryDataSequence.IndexedContainer>> containerFiles, de.bsvrz.dav.daf.main.archive.ArchiveDataKind adk, de.bsvrz.dav.daf.main.archive.ArchiveOrder order, IdDataIdentification idDataIdentification, DataGapManager gapManager) Erstellt einen neuen BucketContainerIterator -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
Terminiert das iterieren.Gibt die Containerheaderdaten des Containers des aktuell betrachteten Datensatzes zurückboolean
isEmpty()
Gibttrue
zurück, wenn der Iterator erschöpft ist.void
peek
(ContainerDataResult result) Kopiert die Daten des aktuellen Elements in das angegebene Result-Objekt.long
Ruft die aktuelle Archivzeit ab.long
Ruft den aktuellen Datenindex ab.long
Ruft die aktuelle Datenzeit ab.peekNext()
Gibt Daten des auf die gültige Sequenz folgenden Datensatzes zurück, damit kann dann unter anderem bestimmt werden, wie lange der Datensatz gültig ist.void
remove()
Entfernt/Überspringt das aktuelle Element.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface de.bsvrz.ars.ars.persistence.iter.DataIterator
poll
-
Constructor Details
-
BucketContainerIterator
public BucketContainerIterator(List<List<QueryDataSequence.IndexedContainer>> containerFiles, de.bsvrz.dav.daf.main.archive.ArchiveDataKind adk, de.bsvrz.dav.daf.main.archive.ArchiveOrder order, IdDataIdentification idDataIdentification, DataGapManager gapManager) throws PersistenceException Erstellt einen neuen BucketContainerIterator- Parameters:
containerFiles
- Vorsortierte Container-Dateien. Eine Liste von Container-Dateien-Gruppen, die sich jeweils zeitlich überschneiden. Die äußere Liste ist nach Datenindex sortiert. Die Liste darf nicht leer sein.adk
- Archivdatenartorder
- SortierungidDataIdentification
- DatenidentifikationgapManager
- Verwaltung von Datenlücken- Throws:
PersistenceException
- Lesefehler beim Lesen von Daten
-
-
Method Details
-
peek
Description copied from interface:DataIterator
Kopiert die Daten des aktuellen Elements in das angegebene Result-Objekt. Dies ist eine Optimierung, damit nicht ständig neue Result-Objekt angelegt werden müssen.- Specified by:
peek
in interfaceDataIterator
- Parameters:
result
- Ziel-Element- Throws:
PersistenceException
- Lesefehler im Persistenzverzeichnis
-
peekNext
Description copied from interface:DataIterator
Gibt Daten des auf die gültige Sequenz folgenden Datensatzes zurück, damit kann dann unter anderem bestimmt werden, wie lange der Datensatz gültig ist. Diese Methode darf nur aufgerufen werden, wennDataIterator.isEmpty()
true zurückliefert.- Specified by:
peekNext
in interfaceDataIterator
- Returns:
- Ziel-Element oder null, falls es keinen nächsten Datensatz gibt
-
peekDataIndex
public long peekDataIndex()Description copied from interface:DataIterator
Ruft den aktuellen Datenindex ab. Entspricht
ist aber wahrscheinlich performanter.ContainerDataResult result = new ContainerDataResult() this.peek(result) return result.getDataIndex()
- Specified by:
peekDataIndex
in interfaceDataIterator
- Returns:
- Datenindex des aktuellen Elements
-
peekDataTime
public long peekDataTime()Description copied from interface:DataIterator
Ruft die aktuelle Datenzeit ab. Entspricht
ist aber wahrscheinlich performanter.ContainerDataResult result = new ContainerDataResult() this.peek(result) return result.getDataTime()
- Specified by:
peekDataTime
in interfaceDataIterator
- Returns:
- Datenzeit des aktuellen Elements
-
peekArchiveTime
public long peekArchiveTime()Description copied from interface:DataIterator
Ruft die aktuelle Archivzeit ab. Entspricht
ist aber wahrscheinlich performanter.ContainerDataResult result = new ContainerDataResult() this.peek(result) return result.getArchiveTime()
- Specified by:
peekArchiveTime
in interfaceDataIterator
- Returns:
- Archivzeit des aktuellen Elements
-
remove
Description copied from interface:DataIterator
Entfernt/Überspringt das aktuelle Element. Der Container wird nicht modifiziert, nur der Iterator.- Specified by:
remove
in interfaceDataIterator
- Throws:
PersistenceException
- Lesefehler im PersistenzverzeichnisSynchronizationFailedException
- Synchronisierung fehlgeschlagen
-
isEmpty
public boolean isEmpty()Description copied from interface:DataIterator
Gibttrue
zurück, wenn der Iterator erschöpft ist. Ist das der Fall liefern alle anderen Funktionen außer close()NoSuchElementException
s.- Specified by:
isEmpty
in interfaceDataIterator
- Returns:
true
, wenn der Iterator erschöpft ist, sonstfalse
-
close
public void close()Description copied from interface:DataIterator
Terminiert das iterieren. Hierdurch werden alle ggf. noch offenen Containerdateien geschlossen.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceDataIterator
-
getContainerManagementData
Description copied from interface:DataIterator
Gibt die Containerheaderdaten des Containers des aktuell betrachteten Datensatzes zurück- Specified by:
getContainerManagementData
in interfaceDataIterator
- Returns:
- ContainerManagementData
- Throws:
PersistenceException
- Lesefehler im Persistenzverzeichnis
-