Klasse BucketContainerIterator

java.lang.Object
de.bsvrz.ars.ars.persistence.iter.BucketContainerIterator
Alle implementierten Schnittstellen:
DataIterator, AutoCloseable

public class BucketContainerIterator extends Object implements DataIterator
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.

  • Konstruktordetails

    • 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
      Parameter:
      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 - Archivdatenart
      order - Sortierung
      idDataIdentification - Datenidentifikation
      gapManager - Verwaltung von Datenlücken
      Löst aus:
      PersistenceException - Lesefehler beim Lesen von Daten
  • Methodendetails

    • peek

      public void peek(ContainerDataResult result) throws PersistenceException
      Beschreibung aus Schnittstelle kopiert: 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.
      Angegeben von:
      peek in Schnittstelle DataIterator
      Parameter:
      result - Ziel-Element
      Löst aus:
      PersistenceException - Lesefehler im Persistenzverzeichnis
    • peekNext

      public ContainerDataResult peekNext()
      Beschreibung aus Schnittstelle kopiert: 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, wenn DataIterator.isEmpty() true zurückliefert.
      Angegeben von:
      peekNext in Schnittstelle DataIterator
      Gibt zurück:
      Ziel-Element oder null, falls es keinen nächsten Datensatz gibt
    • peekDataIndex

      public long peekDataIndex()
      Beschreibung aus Schnittstelle kopiert: DataIterator
      Ruft den aktuellen Datenindex ab. Entspricht
      
      	 ContainerDataResult result = new ContainerDataResult()
      	 this.peek(result)
      	 return result.getDataIndex()
       
      ist aber wahrscheinlich performanter.
      Angegeben von:
      peekDataIndex in Schnittstelle DataIterator
      Gibt zurück:
      Datenindex des aktuellen Elements
    • peekDataTime

      public long peekDataTime()
      Beschreibung aus Schnittstelle kopiert: DataIterator
      Ruft die aktuelle Datenzeit ab. Entspricht
      
      	 ContainerDataResult result = new ContainerDataResult()
      	 this.peek(result)
      	 return result.getDataTime()
       
      ist aber wahrscheinlich performanter.
      Angegeben von:
      peekDataTime in Schnittstelle DataIterator
      Gibt zurück:
      Datenzeit des aktuellen Elements
    • peekArchiveTime

      public long peekArchiveTime()
      Beschreibung aus Schnittstelle kopiert: DataIterator
      Ruft die aktuelle Archivzeit ab. Entspricht
      
       ContainerDataResult result = new ContainerDataResult()
       this.peek(result)
       return result.getArchiveTime()
       
      ist aber wahrscheinlich performanter.
      Angegeben von:
      peekArchiveTime in Schnittstelle DataIterator
      Gibt zurück:
      Archivzeit des aktuellen Elements
    • remove

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

      public boolean isEmpty()
      Beschreibung aus Schnittstelle kopiert: DataIterator
      Gibt true zurück, wenn der Iterator erschöpft ist. Ist das der Fall liefern alle anderen Funktionen außer close() NoSuchElementExceptions.
      Angegeben von:
      isEmpty in Schnittstelle DataIterator
      Gibt zurück:
      true, wenn der Iterator erschöpft ist, sonst false
    • close

      public void close()
      Beschreibung aus Schnittstelle kopiert: DataIterator
      Terminiert das iterieren. Hierdurch werden alle ggf. noch offenen Containerdateien geschlossen.
      Angegeben von:
      close in Schnittstelle AutoCloseable
      Angegeben von:
      close in Schnittstelle DataIterator
    • getContainerManagementData

      @NotNull public ContainerManagementData getContainerManagementData() throws PersistenceException
      Beschreibung aus Schnittstelle kopiert: DataIterator
      Gibt die Containerheaderdaten des Containers des aktuell betrachteten Datensatzes zurück
      Angegeben von:
      getContainerManagementData in Schnittstelle DataIterator
      Gibt zurück:
      ContainerManagementData
      Löst aus:
      PersistenceException - Lesefehler im Persistenzverzeichnis