Class FileIndexStorage

java.lang.Object
de.bsvrz.ars.ars.persistence.index.backend.storage.FileIndexStorage
All Implemented Interfaces:
IndexStorage, AutoCloseable

public final class FileIndexStorage extends Object implements IndexStorage, AutoCloseable
Implementierung des IndexStorage-Interfaces für Dateien im Dateisystem
  • Constructor Details

    • FileIndexStorage

      public FileIndexStorage(Path file, int entryByteSize) throws IOException
      Erstellt ein neues FileIndexStorage
      Parameters:
      file - Datei
      entryByteSize - Größe eines Eintrags in Bytes
      Throws:
      IOException
  • Method Details

    • getEntries

      public void getEntries(long entryIndex, int numEntries, byte[] result, int destPos) throws IOException
      Description copied from interface: IndexStorage
      Gibt Einträge aus dem Index zurück
      Specified by:
      getEntries in interface IndexStorage
      Parameters:
      entryIndex - Nullbasierte Position des ersten Eintrags, der angefragt werden soll. Gemeint ist hier die "Zeilennummer" im Index, nicht der byte-Offset
      numEntries - Anzahl Einträge, die angefragt werden sollen
      result - Byte-Array, in das das Ergebnis kopiert werden soll, muss mindestens destPos + (numEntries * IndexStorage.entryByteSize()) Bytes groß sein.
      destPos - Ziel-Position im Byte-Array. Standardmäßig 0.
      Throws:
      IOException - IO-Fehler (z. B. bei Dateizugriff)
    • setEntries

      public void setEntries(long entryIndex, int numEntries, byte[] data, int fromPos) throws IOException
      Description copied from interface: IndexStorage
      Setzt Einträge im Index
      Specified by:
      setEntries in interface IndexStorage
      Parameters:
      entryIndex - Nullbasierte Position des ersten Eintrags, der gesetzt werden soll. Gemeint ist hier die "Zeilennummer" im Index, nicht der byte-Offset
      numEntries - Anzahl Einträge, die überschrieben werden sollen
      data - Byte-Array, aus dem die Daten kopiert werden sollen, muss mindestens fromPos + (numEntries * IndexStorage.entryByteSize()) Bytes groß sein.
      fromPos - Von-Position im Byte-Array. Standardmäßig 0.
      Throws:
      IOException - IO-Fehler (z. B. bei Dateizugriff)
    • insertEntries

      public void insertEntries(long entryIndex, int numEntries, byte[] data, int fromPos) throws IOException
      Description copied from interface: IndexStorage
      Fügt Einträge im Index ein, anders als bei IndexStorage.setEntries(long, int, byte[]) werden die dort bestehenden Daten aber nicht überschrieben, sondern nach hinten geschoben.
      Specified by:
      insertEntries in interface IndexStorage
      Parameters:
      entryIndex - Nullbasierte Position an der Eingefügt werden soll (neuer Index des ersten eingefügten Eintrags). Gemeint ist hier die "Zeilennummer" im Index, nicht der byte-Offset
      numEntries - Anzahl Einträge, die eingefügt werden sollen
      data - Byte-Array, aus dem die Daten kopiert werden sollen, muss mindestens (numEntries * IndexStorage.entryByteSize()) Bytes groß sein.
      fromPos - Von-Position im Byte-Array. Standardmäßig 0.
      Throws:
      IOException - IO-Fehler (z. B. bei Dateizugriff)
    • deleteEntryAtIndex

      public void deleteEntryAtIndex(long entryIndex) throws IOException
      Description copied from interface: IndexStorage
      Löscht den Eintrag am Index entryIndex
      Specified by:
      deleteEntryAtIndex in interface IndexStorage
      Parameters:
      entryIndex - Index, der gelöscht werden soll
      Throws:
      IOException
    • flush

      public void flush() throws IOException
      Throws:
      IOException
    • numEntries

      public long numEntries() throws IOException
      Description copied from interface: IndexStorage
      Gibt die Anzahl Einträge zurück
      Specified by:
      numEntries in interface IndexStorage
      Returns:
      die Anzahl Einträge
      Throws:
      IOException
    • entryByteSize

      public int entryByteSize()
      Description copied from interface: IndexStorage
      Gibt die Byte-Größe eines Eintrags zurück
      Specified by:
      entryByteSize in interface IndexStorage
      Returns:
      die Byte-Größe eines Eintrags
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • close

      public void close() throws IOException
      Specified by:
      close in interface AutoCloseable
      Throws:
      IOException