Interface DataIterator
- All Superinterfaces:
AutoCloseable
- All Known Implementing Classes:
BucketContainerIterator
,CombineDataIterator
,ContainerDataIterator
,DeletedMinMaxIterator
,EmptyDataIterator
,SequentialContainerIterator
,TimeSpecificationCombineDataIterator
Ein Iterator über die Datensätze von mehreren Containern. Der Iterator verhält sich anders als der Standard-Java-iterator und mehr wie
eine Queue.
peek
ruft den aktuellen Datensatz am Kopf der Queue ab, remove
entfernt diesen,
sodass der nächste Datensatz abgerufen werden kann (falls vorhanden). poll(ContainerDataResult)
gibt den aktuellen Datensatz zurück und entfernt ihn in einem Schritt.
Die Iteration mit dieser Klasse erfolg wie beispielsweise folgt:
ContainerDataResult result = new ContainerDataResult()
while(!iter.isEmpty()) {
iter.poll(result);
// tue was mit result
}
iter.close()
oder alternative Vorgehensweise zum Ausgeben aller Datenindizes:
while(!iterator.isEmpty()) {
System.out.println(iterator.peekDataIndex());
iterator.remove();
}
-
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
Terminiert das iterieren.static DataIterator
empty()
Gibt einen leeren DataIterator zurückGibt 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.default void
poll
(ContainerDataResult result) Entspricht dem Aufruf von `peek(result)´ gefolgt von `remove()`.void
remove()
Entfernt/Überspringt das aktuelle Element.
-
Method Details
-
peek
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.- Parameters:
result
- Ziel-Element- Throws:
NoSuchElementException
- falls kein Element mehr Verfügbar (isEmpty == true)PersistenceException
- Lesefehler im Persistenzverzeichnis
-
peekNext
@Nullable ContainerDataResult peekNext() throws PersistenceException, SynchronizationFailedExceptionGibt 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, wennisEmpty()
true zurückliefert.- Returns:
- Ziel-Element oder null, falls es keinen nächsten Datensatz gibt
- Throws:
IllegalStateException
- falls isEmpty != truePersistenceException
- Lesefehler im PersistenzverzeichnisSynchronizationFailedException
- Synchronisierung fehlgeschlagen
-
peekDataIndex
long peekDataIndex()Ruft den aktuellen Datenindex ab. Entspricht
ist aber wahrscheinlich performanter.ContainerDataResult result = new ContainerDataResult() this.peek(result) return result.getDataIndex()
- Returns:
- Datenindex des aktuellen Elements
- Throws:
NoSuchElementException
- falls kein Element mehr Verfügbar (isEmpty == true)
-
peekDataTime
long peekDataTime()Ruft die aktuelle Datenzeit ab. Entspricht
ist aber wahrscheinlich performanter.ContainerDataResult result = new ContainerDataResult() this.peek(result) return result.getDataTime()
- Returns:
- Datenzeit des aktuellen Elements
- Throws:
NoSuchElementException
- falls kein Element mehr Verfügbar (isEmpty == true)
-
peekArchiveTime
long peekArchiveTime()Ruft die aktuelle Archivzeit ab. Entspricht
ist aber wahrscheinlich performanter.ContainerDataResult result = new ContainerDataResult() this.peek(result) return result.getArchiveTime()
- Returns:
- Archivzeit des aktuellen Elements
- Throws:
NoSuchElementException
- falls kein Element mehr Verfügbar (isEmpty == true)
-
poll
default void poll(ContainerDataResult result) throws PersistenceException, SynchronizationFailedException Entspricht dem Aufruf von `peek(result)´ gefolgt von `remove()`.- Parameters:
result
- Objekt, in dem das Ergebnis abgelegt wird.- Throws:
PersistenceException
- Lesefehler im PersistenzverzeichnisSynchronizationFailedException
- Synchronisierung fehlgeschlagen
-
remove
Entfernt/Überspringt das aktuelle Element. Der Container wird nicht modifiziert, nur der Iterator.- Throws:
PersistenceException
- Lesefehler im PersistenzverzeichnisSynchronizationFailedException
- Synchronisierung fehlgeschlagen
-
isEmpty
boolean isEmpty()Gibttrue
zurück, wenn der Iterator erschöpft ist. Ist das der Fall liefern alle anderen Funktionen außer close()NoSuchElementException
s.- Returns:
true
, wenn der Iterator erschöpft ist, sonstfalse
-
close
void close()Terminiert das iterieren. Hierdurch werden alle ggf. noch offenen Containerdateien geschlossen.- Specified by:
close
in interfaceAutoCloseable
-
empty
Gibt einen leeren DataIterator zurück- Returns:
- leerer DataIterator (singleton)
-
getContainerManagementData
Gibt die Containerheaderdaten des Containers des aktuell betrachteten Datensatzes zurück- Returns:
- ContainerManagementData
- Throws:
PersistenceException
- Lesefehler im Persistenzverzeichnis
-