Schnittstelle DataIterator

Alle Superschnittstellen:
AutoCloseable
Alle bekannten Implementierungsklassen:
BucketContainerIterator, CombineDataIterator, ContainerDataIterator, DeletedMinMaxIterator, EmptyDataIterator, SequentialContainerIterator, TimeSpecificationCombineDataIterator

public interface DataIterator extends AutoCloseable
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();
      }
 
  • Methodenübersicht

    Modifizierer und Typ
    Methode
    Beschreibung
    void
    Terminiert das iterieren.
    Gibt einen leeren DataIterator zurück
    Gibt die Containerheaderdaten des Containers des aktuell betrachteten Datensatzes zurück
    boolean
    Gibt true zurück, wenn der Iterator erschöpft ist.
    void
    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.
    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
    Entspricht dem Aufruf von `peek(result)´ gefolgt von `remove()`.
    void
    Entfernt/Überspringt das aktuelle Element.
  • Methodendetails

    • peek

      void peek(ContainerDataResult result) throws PersistenceException
      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.
      Parameter:
      result - Ziel-Element
      Löst aus:
      NoSuchElementException - falls kein Element mehr Verfügbar (isEmpty == true)
      PersistenceException - Lesefehler im Persistenzverzeichnis
    • 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. Diese Methode darf nur aufgerufen werden, wenn isEmpty() true zurückliefert.
      Gibt zurück:
      Ziel-Element oder null, falls es keinen nächsten Datensatz gibt
      Löst aus:
      IllegalStateException - falls isEmpty != true
      PersistenceException - Lesefehler im Persistenzverzeichnis
      SynchronizationFailedException - Synchronisierung fehlgeschlagen
    • peekDataIndex

      long peekDataIndex()
      Ruft den aktuellen Datenindex ab. Entspricht
      
      	 ContainerDataResult result = new ContainerDataResult()
      	 this.peek(result)
      	 return result.getDataIndex()
       
      ist aber wahrscheinlich performanter.
      Gibt zurück:
      Datenindex des aktuellen Elements
      Löst aus:
      NoSuchElementException - falls kein Element mehr Verfügbar (isEmpty == true)
    • peekDataTime

      long peekDataTime()
      Ruft die aktuelle Datenzeit ab. Entspricht
      
      	 ContainerDataResult result = new ContainerDataResult()
      	 this.peek(result)
      	 return result.getDataTime()
       
      ist aber wahrscheinlich performanter.
      Gibt zurück:
      Datenzeit des aktuellen Elements
      Löst aus:
      NoSuchElementException - falls kein Element mehr Verfügbar (isEmpty == true)
    • peekArchiveTime

      long peekArchiveTime()
      Ruft die aktuelle Archivzeit ab. Entspricht
      
       ContainerDataResult result = new ContainerDataResult()
       this.peek(result)
       return result.getArchiveTime()
       
      ist aber wahrscheinlich performanter.
      Gibt zurück:
      Archivzeit des aktuellen Elements
      Löst aus:
      NoSuchElementException - falls kein Element mehr Verfügbar (isEmpty == true)
    • poll

      Entspricht dem Aufruf von `peek(result)´ gefolgt von `remove()`.
      Parameter:
      result - Objekt, in dem das Ergebnis abgelegt wird.
      Löst aus:
      PersistenceException - Lesefehler im Persistenzverzeichnis
      SynchronizationFailedException - Synchronisierung fehlgeschlagen
    • remove

      Entfernt/Überspringt das aktuelle Element. Der Container wird nicht modifiziert, nur der Iterator.
      Löst aus:
      PersistenceException - Lesefehler im Persistenzverzeichnis
      SynchronizationFailedException - Synchronisierung fehlgeschlagen
    • isEmpty

      boolean isEmpty()
      Gibt true zurück, wenn der Iterator erschöpft ist. Ist das der Fall liefern alle anderen Funktionen außer close() NoSuchElementExceptions.
      Gibt zurück:
      true, wenn der Iterator erschöpft ist, sonst false
    • close

      void close()
      Terminiert das iterieren. Hierdurch werden alle ggf. noch offenen Containerdateien geschlossen.
      Angegeben von:
      close in Schnittstelle AutoCloseable
    • empty

      static DataIterator empty()
      Gibt einen leeren DataIterator zurück
      Gibt zurück:
      leerer DataIterator (singleton)
    • getContainerManagementData

      @NotNull ContainerManagementData getContainerManagementData() throws PersistenceException
      Gibt die Containerheaderdaten des Containers des aktuell betrachteten Datensatzes zurück
      Gibt zurück:
      ContainerManagementData
      Löst aus:
      PersistenceException - Lesefehler im Persistenzverzeichnis