Class DataTimeIndexImpl
java.lang.Object
de.bsvrz.ars.ars.persistence.index.backend.management.AbstractIndex<IndexValues>
de.bsvrz.ars.ars.persistence.index.DataTimeIndexImpl
- All Implemented Interfaces:
BaseIndex<IndexValues>
,DataTimeIndex
,java.lang.AutoCloseable
public final class DataTimeIndexImpl extends AbstractIndex<IndexValues> implements DataTimeIndex
Diese Klasse stellt einen DatenzeitIndex dar. Sie verhält sich ähnlich dem
ArchiveTimeIndexImpl
. Der Unterschied ist, dass die Folge der Eintraege
(min, max, min, max...) nicht monoton ist, weil es Rückspruenge geben kann. Stattdessen sind die Eintraege nur nach dem min-Wert sortiert.-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
IDX_FILENAME
Dateiname, unter dem alle Indices dieser Art gespeichert werden -
Constructor Summary
Constructors Constructor Description DataTimeIndexImpl(int bufferSize, java.nio.file.Path file)
Erzeugt einen neuen Datenzeitindex. -
Method Summary
Modifier and Type Method Description void
add(long dTMin, long dTMax, long dIMin, long dIMax, long contId)
Fügt dem Index einen neuen Eintrag hinzu.static int
entrySize()
Gibt die anzahl Bytes zurück, die ein Indexeintrag belegt.IndexResult<IndexValues>
getContainerIDByDataTime(long dTMin, long dTMax)
Liefert eine Matrix mit DTMin/Max, DIMin/Max und ContainerIds, deren DTMin/Max-Werte zwischen dTMin und dTMax liegen.Methods inherited from class de.bsvrz.ars.ars.persistence.index.backend.management.AbstractIndex
append, append, close, first, flush, getFile, getFirst, getLast, getLocation, getStorage, insert, insert, insertOrReplace, insertOrReplace, memoryCapacity, memoryEntries, numEntries, query, query, removeAll, setInsertValue, setInsertValue, 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.management.BaseIndex
append, append, close, first, flush, getFirst, getLast, getLocation, insert, insert, insertOrReplace, insertOrReplace, numEntries, query, query, removeAll, setInsertValue, setInsertValue
-
Field Details
-
IDX_FILENAME
public static final java.lang.String IDX_FILENAMEDateiname, unter dem alle Indices dieser Art gespeichert werden- See Also:
- Constant Field Values
-
-
Constructor Details
-
DataTimeIndexImpl
Erzeugt einen neuen Datenzeitindex.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 sollfile
- Datei- Throws:
CorruptIndexException
- Bei Problemen mit dem Dateizugriff
-
-
Method Details
-
add
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:
dTMin
- DatenZeit Min-WertdTMax
- DatenZeit Max-WertdIMin
- DatenIndex Min-WertdIMax
- DatenIndex Max-WertcontId
- Container ID- Throws:
IndexException
- Bei Problemem mit der Index-Datei
-
getContainerIDByDataTime
public IndexResult<IndexValues> getContainerIDByDataTime(long dTMin, long dTMax) throws IndexExceptionLiefert eine Matrix mit DTMin/Max, DIMin/Max und ContainerIds, deren DTMin/Max-Werte zwischen dTMin und dTMax liegen. Wird diese Methode aufgerufen wenn der Cache noch leer ist, werden die aktuellsten Daten aus der Datei nachgeladen.- Specified by:
getContainerIDByDataTime
in interfaceDataTimeIndex
- Parameters:
dTMin
- Min-Wert der ZeitspannedTMax
- Max-Wert der Zeitspanne- Returns:
- IndexResult-Objekt, das die Index innerhalb der gesuchten Zeitspanne enthält (DT und DI Werte, keine AT Werte)
- Throws:
IndexException
- Bei Problemem mit der IndexDatei
-
entrySize
public static int entrySize()Gibt die anzahl Bytes zurück, die ein Indexeintrag belegt.- Returns:
- Anzahl bytes
-