Class FileIndexStorage
java.lang.Object
de.bsvrz.ars.ars.persistence.index.backend.storage.FileIndexStorage
- All Implemented Interfaces:
IndexStorage
,java.lang.AutoCloseable
public final class FileIndexStorage extends java.lang.Object implements IndexStorage, java.lang.AutoCloseable
Implementierung des
IndexStorage
-Interfaces für Dateien im Dateisystem-
Constructor Summary
Constructors Constructor Description FileIndexStorage(java.nio.file.Path file, int entryByteSize)
Erstellt ein neues FileIndexStorage -
Method Summary
Modifier and Type Method Description void
close()
void
deleteEntryAtIndex(long entryIndex)
Löscht den Eintrag am Index entryIndexint
entryByteSize()
Gibt die Byte-Größe eines Eintrags zurückvoid
flush()
void
getEntries(long entryIndex, int numEntries, byte[] result, int destPos)
Gibt Einträge aus dem Index zurückvoid
insertEntries(long entryIndex, int numEntries, byte[] data, int fromPos)
Fügt Einträge im Index ein, anders als beiIndexStorage.setEntries(long, int, byte[])
werden die dort bestehenden Daten aber nicht überschrieben, sondern nach hinten geschoben.long
numEntries()
Gibt die Anzahl Einträge zurückvoid
setEntries(long entryIndex, int numEntries, byte[] data, int fromPos)
Setzt Einträge im Indexjava.lang.String
toString()
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface de.bsvrz.ars.ars.persistence.index.backend.storage.IndexStorage
addLast, addLast, getAll, getEntries, getFirst, getLast, insertEntries, setEntries, setLast
-
Constructor Details
-
FileIndexStorage
public FileIndexStorage(java.nio.file.Path file, int entryByteSize) throws java.io.IOExceptionErstellt ein neues FileIndexStorage- Parameters:
file
- DateientryByteSize
- Größe eines Eintrags in Bytes- Throws:
java.io.IOException
-
-
Method Details
-
getEntries
public void getEntries(long entryIndex, int numEntries, byte[] result, int destPos) throws java.io.IOExceptionDescription copied from interface:IndexStorage
Gibt Einträge aus dem Index zurück- Specified by:
getEntries
in interfaceIndexStorage
- Parameters:
entryIndex
- Nullbasierte Position des ersten Eintrags, der angefragt werden soll. Gemeint ist hier die "Zeilennummer" im Index, nicht der byte-OffsetnumEntries
- Anzahl Einträge, die angefragt werden sollenresult
- 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:
java.io.IOException
- IO-Fehler (z. B. bei Dateizugriff)
-
setEntries
public void setEntries(long entryIndex, int numEntries, byte[] data, int fromPos) throws java.io.IOExceptionDescription copied from interface:IndexStorage
Setzt Einträge im Index- Specified by:
setEntries
in interfaceIndexStorage
- Parameters:
entryIndex
- Nullbasierte Position des ersten Eintrags, der gesetzt werden soll. Gemeint ist hier die "Zeilennummer" im Index, nicht der byte-OffsetnumEntries
- Anzahl Einträge, die überschrieben werden sollendata
- 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:
java.io.IOException
- IO-Fehler (z. B. bei Dateizugriff)
-
insertEntries
public void insertEntries(long entryIndex, int numEntries, byte[] data, int fromPos) throws java.io.IOExceptionDescription copied from interface:IndexStorage
Fügt Einträge im Index ein, anders als beiIndexStorage.setEntries(long, int, byte[])
werden die dort bestehenden Daten aber nicht überschrieben, sondern nach hinten geschoben.- Specified by:
insertEntries
in interfaceIndexStorage
- 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-OffsetnumEntries
- Anzahl Einträge, die eingefügt werden sollendata
- 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:
java.io.IOException
- IO-Fehler (z. B. bei Dateizugriff)
-
deleteEntryAtIndex
public void deleteEntryAtIndex(long entryIndex) throws java.io.IOExceptionDescription copied from interface:IndexStorage
Löscht den Eintrag am Index entryIndex- Specified by:
deleteEntryAtIndex
in interfaceIndexStorage
- Parameters:
entryIndex
- Index, der gelöscht werden soll- Throws:
java.io.IOException
-
flush
public void flush() throws java.io.IOException- Specified by:
flush
in interfaceIndexStorage
- Throws:
java.io.IOException
-
numEntries
public long numEntries() throws java.io.IOExceptionDescription copied from interface:IndexStorage
Gibt die Anzahl Einträge zurück- Specified by:
numEntries
in interfaceIndexStorage
- Returns:
- die Anzahl Einträge
- Throws:
java.io.IOException
-
entryByteSize
public int entryByteSize()Description copied from interface:IndexStorage
Gibt die Byte-Größe eines Eintrags zurück- Specified by:
entryByteSize
in interfaceIndexStorage
- Returns:
- die Byte-Größe eines Eintrags
-
toString
public java.lang.String toString()- Overrides:
toString
in classjava.lang.Object
-
close
public void close() throws java.io.IOException- Specified by:
close
in interfacejava.lang.AutoCloseable
- Throws:
java.io.IOException
-