Class CombineDataIterator
java.lang.Object
de.bsvrz.ars.ars.persistence.iter.CombineDataIterator
- All Implemented Interfaces:
DataIterator,AutoCloseable
- Direct Known Subclasses:
TimeSpecificationCombineDataIterator
Diese Klasse kombiniert mehrere parallel laufende
Iteratoren
um daraus einen einzelnen Iterator zu erstellen, der alle Daten enthält.
Die Daten werden dabei entweder anhand ihrer Datenzeit oder ihres Datenindex einsortiert.
-
Constructor Summary
ConstructorsConstructorDescriptionCombineDataIterator(Collection<DataSequence> containerSequences, de.bsvrz.dav.daf.main.archive.ArchiveOrder order) Konstruktor zum Kombinieren von mehrerenDataSequence-Objekten -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()Terminiert das iterieren.Gibt die Containerheaderdaten des Containers des aktuell betrachteten Datensatzes zurückde.bsvrz.dav.daf.main.archive.ArchiveOrdergetOrder()Gibt die Sortierung zurückbooleanisEmpty()Gibttruezurück, wenn der Iterator erschöpft ist.voidpeek(ContainerDataResult result) Kopiert die Daten des aktuellen Elements in das angegebene Result-Objekt.longRuft die aktuelle Archivzeit ab.longRuft den aktuellen Datenindex ab.longRuft 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.voidremove()Entfernt/Überspringt das aktuelle Element.protected final voidMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface de.bsvrz.ars.ars.persistence.iter.DataIterator
poll
-
Constructor Details
-
CombineDataIterator
public CombineDataIterator(Collection<DataSequence> containerSequences, de.bsvrz.dav.daf.main.archive.ArchiveOrder order) throws PersistenceException, SynchronizationFailedException Konstruktor zum Kombinieren von mehrerenDataSequence-Objekten- Parameters:
containerSequences- Die Sequenzen der verschiedenen Datenartenorder- Sortierung der Sequenzen- Throws:
PersistenceException- Lesefehler im PersistenzverzeichnisSynchronizationFailedException- Synchronisierung fehlgeschlagen
-
-
Method Details
-
peek
Description copied from interface:DataIteratorKopiert 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:
peekin interfaceDataIterator- Parameters:
result- Ziel-Element- Throws:
PersistenceException- Lesefehler im Persistenzverzeichnis
-
peekDataIndex
public long peekDataIndex()Description copied from interface:DataIteratorRuft den aktuellen Datenindex ab. Entspricht
ist aber wahrscheinlich performanter.ContainerDataResult result = new ContainerDataResult() this.peek(result) return result.getDataIndex()- Specified by:
peekDataIndexin interfaceDataIterator- Returns:
- Datenindex des aktuellen Elements
-
peekDataTime
public long peekDataTime()Description copied from interface:DataIteratorRuft die aktuelle Datenzeit ab. Entspricht
ist aber wahrscheinlich performanter.ContainerDataResult result = new ContainerDataResult() this.peek(result) return result.getDataTime()- Specified by:
peekDataTimein interfaceDataIterator- Returns:
- Datenzeit des aktuellen Elements
-
peekArchiveTime
public long peekArchiveTime()Description copied from interface:DataIteratorRuft die aktuelle Archivzeit ab. Entspricht
ist aber wahrscheinlich performanter.ContainerDataResult result = new ContainerDataResult() this.peek(result) return result.getArchiveTime()- Specified by:
peekArchiveTimein interfaceDataIterator- Returns:
- Archivzeit des aktuellen Elements
-
remove
Description copied from interface:DataIteratorEntfernt/Überspringt das aktuelle Element. Der Container wird nicht modifiziert, nur der Iterator.- Specified by:
removein interfaceDataIterator- Throws:
PersistenceException- Lesefehler im PersistenzverzeichnisSynchronizationFailedException- Synchronisierung fehlgeschlagen
-
updateDelegate
protected final void updateDelegate() -
isEmpty
public boolean isEmpty()Description copied from interface:DataIteratorGibttruezurück, wenn der Iterator erschöpft ist. Ist das der Fall liefern alle anderen Funktionen außer close()NoSuchElementExceptions.- Specified by:
isEmptyin interfaceDataIterator- Returns:
true, wenn der Iterator erschöpft ist, sonstfalse
-
peekNext
Description copied from interface:DataIteratorGibt 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:
peekNextin interfaceDataIterator- Returns:
- Ziel-Element oder null, falls es keinen nächsten Datensatz gibt
- Throws:
PersistenceException- Lesefehler im PersistenzverzeichnisSynchronizationFailedException- Synchronisierung fehlgeschlagen
-
close
public void close()Description copied from interface:DataIteratorTerminiert das iterieren. Hierdurch werden alle ggf. noch offenen Containerdateien geschlossen.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceDataIterator
-
getContainerManagementData
Description copied from interface:DataIteratorGibt die Containerheaderdaten des Containers des aktuell betrachteten Datensatzes zurück- Specified by:
getContainerManagementDatain interfaceDataIterator- Returns:
- ContainerManagementData
- Throws:
PersistenceException- Lesefehler im Persistenzverzeichnis
-
getOrder
public de.bsvrz.dav.daf.main.archive.ArchiveOrder getOrder()Gibt die Sortierung zurück- Returns:
- die Sortierung
-