Klasse AbstractIndex<E extends Enum<E>>
java.lang.Object
de.bsvrz.ars.ars.persistence.index.backend.management.AbstractIndex<E>
- Typparameter:
E
- Enum, das die möglichen Spalten im Index definiert, z. B.IndexValues
- Alle implementierten Schnittstellen:
BaseIndex<E>
,AutoCloseable
- Bekannte direkte Unterklassen:
ArchiveTimeIndexImpl
,ContainerManagementIndex
,DataIndexIndexImpl
,DataTimeIndexImpl
Basisimplementierung für Indexdateien im Archivsystem. Eine Indexdatei kann man sich vorstellen, wie eine Datenbank- oder Excel-Tabelle,
die nach bestimmten Spalten sortiert abgelegt wird um effizient Anfragen durchführen zu können.
-
Konstruktorübersicht
KonstruktorenKonstruktorBeschreibungAbstractIndex
(IndexContentDescriptor<E> indexContentDescriptor, int bufferSize, Path file) Erstellt eine neue Index-Instanz -
Methodenübersicht
Modifizierer und TypMethodeBeschreibungvoid
append()
Fügt die vorher mitsetInsertValue(Enum, long)
gesetzten Werte hinten an den Index an.void
append
(boolean onlyCheck) Fügt die vorher mitsetInsertValue(Enum, long)
gesetzten Werte hinten an den Index an.void
close()
Schließt den Index und speichert alle geänderten Daten auf Platte.first()
Gibt den ersten (der Sortierung nach am kleinsten) Eintrag zurück (der am Dateianfang gespeichert ist)void
flush()
Schreibt den Index auf die FestplattegetFile()
Gibt die Datei zurücklong
Gibt den Wert in der ersten Zeile un der angegebenen Spalte zurücklong
Gibt den Wert in der letzten Zeile un der angegebenen Spalte zurückZugriff auf die Low-Level-Speicherungsschichtvoid
insert()
Fügt die vorher mitsetInsertValue(Enum, long)
gesetzten Werte in den Index ein.void
insert
(boolean onlyCheck) Fügt die vorher mitsetInsertValue(Enum, long)
gesetzten Werte in den Index ein oder prüft, ob das funktionieren würde.void
Fügt die vorher mitsetInsertValue(Enum, long)
gesetzten Werte in den Index ein oder überschreibt den bisher gespeicherten Wert mit dem gleichenPrimärschlüssel
.void
insertOrReplace
(boolean onlyCheck) Fügt die vorher mitsetInsertValue(Enum, long)
gesetzten Werte in den Index ein oder überschreibt den bisher gespeicherten Wert mit dem gleichenPrimärschlüssel
.long
Anzahl der Einträge, die dieser Index speichertquery()
Ermittelt alle Index-ZeilenErmittelt alle Index-Zeilen, die zu der angegebenen Anfrage passen.void
Löscht alle Einträge, diequery(Map)
mit dem entsprechenden Parameter zurückliefern würde.final void
setInsertValue
(E column, long value) Setzt einen Wert der Einfügezeile, die später mitinsert()
eingefügt werden kann.final void
setInsertValue
(E column, String value) Setzt einen Wert der Einfügezeile, die später mitinsert()
eingefügt werden kann.toString()
-
Konstruktordetails
-
AbstractIndex
public AbstractIndex(IndexContentDescriptor<E> indexContentDescriptor, int bufferSize, @Nullable Path file) throws CorruptIndexException Erstellt eine neue Index-Instanz- Parameter:
indexContentDescriptor
- DerIndexContentDescriptor
gibt an, welche Spalten/informationen der Index enthalten kannbufferSize
- Anzahl Index-Einträge, die aus der Indexdatei maximal gleichzeitig im Speicher gehalten werden (als Cache)file
- Index-Datei, die zu öffnen bzw. anzulegen ist. Falls null, wird der Index nur temporär im Speicher gehalten.- Löst aus:
CorruptIndexException
- Index konnte nciht geladen werden
-
-
Methodendetails
-
query
Ermittelt alle Index-Zeilen, die zu der angegebenen Anfrage passen. Das Ergebnis wird performant ermittelt, indem alle bekannten Einschränkungen ausgewertet werden. Wird nach Spalten eingeschränkt, die nicht im Index vorkommen, dann werden ggf. überflüssige Zeilen/Container usw. zurückgegeben. Hier muss dann der Anfrager entsprechend selbst filtern.- Angegeben von:
query
in SchnittstelleBaseIndex<E extends Enum<E>>
- Parameter:
query
- Anfrage. Zu jeder Spalte in dem Index kann ein von/bis-Bereich angegeben werden, zu dem Container geliefert werden sollen. Wie für Archivdaten üblich, wird als erster Container ggf. der Container zurückgegeben, der den letzten Datensatz vor dem Anfragezeitraum enthält.- Gibt zurück:
- Ein IndexResult, der die Ergebnistabelle enthält
- Löst aus:
IndexException
- Lesefehler oder korrupter Index
-
query
Ermittelt alle Index-Zeilen -
setInsertValue
Setzt einen Wert der Einfügezeile, die später mitinsert()
eingefügt werden kann.- Angegeben von:
setInsertValue
in SchnittstelleBaseIndex<E extends Enum<E>>
- Parameter:
column
- Spaltevalue
- Wert
-
setInsertValue
Setzt einen Wert der Einfügezeile, die später mitinsert()
eingefügt werden kann.- Angegeben von:
setInsertValue
in SchnittstelleBaseIndex<E extends Enum<E>>
- Parameter:
column
- Spaltevalue
- Wert
-
first
Gibt den ersten (der Sortierung nach am kleinsten) Eintrag zurück (der am Dateianfang gespeichert ist) -
insert
Fügt die vorher mitsetInsertValue(Enum, long)
gesetzten Werte in den Index ein. -
insertOrReplace
Fügt die vorher mitsetInsertValue(Enum, long)
gesetzten Werte in den Index ein oder überschreibt den bisher gespeicherten Wert mit dem gleichenPrimärschlüssel
.- Angegeben von:
insertOrReplace
in SchnittstelleBaseIndex<E extends Enum<E>>
- Löst aus:
IndexException
- Lesefehler der Indexe (z. B. korrupt)
-
insert
Fügt die vorher mitsetInsertValue(Enum, long)
gesetzten Werte in den Index ein oder prüft, ob das funktionieren würde. -
insertOrReplace
Fügt die vorher mitsetInsertValue(Enum, long)
gesetzten Werte in den Index ein oder überschreibt den bisher gespeicherten Wert mit dem gleichenPrimärschlüssel
. Oder prüft, ob das funktionieren würde.- Angegeben von:
insertOrReplace
in SchnittstelleBaseIndex<E extends Enum<E>>
- Parameter:
onlyCheck
- falls true wird nur geprüft, ob die neuen Werte eingefügt werden können, ohne dass die Monotoniebedingungen verletzt werden würden.- Löst aus:
IndexException
- Lesefehler der Indexe (z. B. korrupt)
-
append
Fügt die vorher mitsetInsertValue(Enum, long)
gesetzten Werte hinten an den Index an. -
append
Fügt die vorher mitsetInsertValue(Enum, long)
gesetzten Werte hinten an den Index an.- Angegeben von:
append
in SchnittstelleBaseIndex<E extends Enum<E>>
- Parameter:
onlyCheck
- falls true wird nur geprüft, ob die neuen Werte eingefügt werden können, ohne dass die Monotoniebedingungen verletzt werden würden und der Index wird nicht verändert.- Löst aus:
IndexException
- Lesefehler der Indexe (z. B. korrupt)
-
getLast
Gibt den Wert in der letzten Zeile un der angegebenen Spalte zurück -
getFirst
Gibt den Wert in der ersten Zeile un der angegebenen Spalte zurück -
getStorage
Zugriff auf die Low-Level-Speicherungsschicht- Gibt zurück:
- Siehe
IndexStorage
-
close
Schließt den Index und speichert alle geänderten Daten auf Platte. Nach dem Aufruf von close() darf die Index-Instanz nicht mehr verwendet werden.- Angegeben von:
close
in SchnittstelleAutoCloseable
- Angegeben von:
close
in SchnittstelleBaseIndex<E extends Enum<E>>
- Löst aus:
IndexException
- Lesefehler der Indexe (z. B. korrupt)
-
flush
Beschreibung aus Schnittstelle kopiert:BaseIndex
Schreibt den Index auf die Festplatte -
numEntries
public long numEntries()Anzahl der Einträge, die dieser Index speichert- Angegeben von:
numEntries
in SchnittstelleBaseIndex<E extends Enum<E>>
- Gibt zurück:
- Anzahl der Einträge
-
toString
-
getFile
Gibt die Datei zurück -
removeAll
Löscht alle Einträge, diequery(Map)
mit dem entsprechenden Parameter zurückliefern würde. (Ausnahme: Der letzte Container vor dem Anfragebereich, der ggf. als Startwert zurückgegeben würde, wird nicht gelöscht).- Angegeben von:
removeAll
in SchnittstelleBaseIndex<E extends Enum<E>>
- Parameter:
query
- Anfrage (siehequery(Map)
)- Löst aus:
IndexException
- Lese-/Schreibfehler der Indexe (z. B. korrupt)
-