Class DataIndexIndexImpl

java.lang.Object
de.bsvrz.ars.ars.persistence.index.backend.management.AbstractIndex<IndexValues>
de.bsvrz.ars.ars.persistence.index.DataIndexIndexImpl
All Implemented Interfaces:
BaseIndex<IndexValues>, DataIndexIndex, java.lang.AutoCloseable

public final class DataIndexIndexImpl
extends AbstractIndex<IndexValues>
implements DataIndexIndex
Diese Klasse stellt einen Datenindex-Index dar. Sie verhält sich ähnlich dem DataTimeIndexImpl. Die Folge der Eintraege (min, max) ist nicht monoton, weil es beim Nachfordern Rückspruenge geben kann. Stattdessen sind die Eintraege nur nach dem min-Wert sortiert. Ein Eintrag enthält Minimum, Maximum des Datenindex und die ContainerID.
  • Field Details

    • IDX_FILENAME

      public static final java.lang.String IDX_FILENAME
      Dateiname, unter dem alle Indices dieser Art gespeichert werden
      See Also:
      Constant Field Values
  • Constructor Details

    • DataIndexIndexImpl

      public DataIndexIndexImpl​(int bufferSize, java.nio.file.Path file) throws CorruptIndexException
      Erzeugt einen neuen DatenIndex.

      Bei startmode==APPEND_REUSE_LAST wird der Ringpuffer mit den aktuellsten Daten aus einer vorhandenen Indexdatei gefüllt. Der Eintrag mit der größten ContainerId wird als currentEntry reaktiviert. Damit kann ein Container fortgesetzt und der reaktivierte Eintrag weiter aktualisiert werden.

      Bei startmode==ERASE_OLD wird ein leerer Index erzeugt und die bisherige Indexdatei (sofern vorhanden) geloescht.

      Parameters:
      bufferSize - Anzahl der Einträge, die der die der Index im RAM halten soll
      file - Datei
      Throws:
      CorruptIndexException - Bei Problemen mit dem Dateizugriff
  • Method Details

    • add

      public void add​(long dIMin, long dIMax, long contId) throws IndexException
      Fügt dem Index einen neuen Eintrag hinzu. Dabei wird der derzeitig aktuelle Eintrag abgeschlossen. Führt dies dazu, dass keine weiteren freien Plätze im Cache vorhanden sind, werden die Änderungen auf Platte geschrieben. Wenn der Cache noch vollständig leer ist, werden die aktuellsten Daten aus der Index-Datei geladen.
      Parameters:
      dIMin - DatenIndex Min-Wert
      dIMax - DatenIndex Max-Wert
      contId - Container ID
      Throws:
      IndexException - Bei Problemem mit der Index-Datei
    • getContainerIDByDataIndex

      public IndexResult<IndexValues> getContainerIDByDataIndex​(long dIMin, long dIMax) throws IndexException
      Liefert eine Matrix mit DIMin/Max und ContainerIds, deren DIMin/Max-Werte zwischen DIMin und dIMax liegen. Wird diese Methode aufgerufen wenn der Cache noch leer ist, werden die aktuellsten Daten aus der Datei nachgeladen.
      Specified by:
      getContainerIDByDataIndex in interface DataIndexIndex
      Parameters:
      dIMin - Min-Wert der Zeitspanne
      dIMax - Max-Wert der Zeitspanne
      Returns:
      IndexResult-Objekt, das die Index innerhalb der gesuchten Zeitspanne enthält (DI Werte, keine DT und AT Werte)
      Throws:
      IndexException - Bei Problemen mit der IndexDatei
    • entrySize

      public static int entrySize()
      Gibt die anzahl Bytes zurück, die ein Indexeintrag belegt.
      Returns:
      Anzahl bytes