public final class DataTimeIndex extends Object
ATimeMonotoneIndex
. Der Unterschied ist, dass die Folge der Eintraege
(min, max, min, max...) nicht monoton ist, weil es Rueckspruenge geben kann. Stattdessen sind die Eintraege nur nach dem min-Wert sortiert.Modifier and Type | Class and Description |
---|---|
static class |
DataTimeIndex.IndexStartmode
Modi, mit denen ein Index angelegt werden kann (siehe
DataTimeIndex(int,String,byte[],IndexStartmode) ) |
Modifier and Type | Field and Description |
---|---|
static DataTimeIndex.IndexStartmode |
APPEND_REUSE_LAST |
static DataTimeIndex.IndexStartmode |
ERASE_OLD |
static String |
IDX_FILENAME
Dateiname, unter dem alle Indices dieser Art gespeichert werden
|
static int |
NO_VALUE
Flag, mit dem signalisiert wird, dass ein Eintrag "keinen Wert" hat
|
Constructor and Description |
---|
DataTimeIndex(int bufferSize)
Erzeugt einen neuen DatenZeitIndex.
|
DataTimeIndex(int bufferSize,
String basePath,
byte[] temp,
DataTimeIndex.IndexStartmode startmode)
Erzeugt einen neuen Datenzeitindex.
|
Modifier and Type | Method and Description |
---|---|
void |
add(String basePath,
byte[] temp,
long dTMin,
long dTMax,
long dIMin,
long dIMax,
long contId)
Fügt dem Index einen neuen Eintrag hinzu.
|
int |
capacity()
Anzahl der Einträge, die dieser Index im RAM halten kann
|
void |
checkForAdd(String basePath,
byte[] temp,
long dTMin,
long dTMax,
long dIMin,
long dIMax,
long contId)
Prüft, ob dem Index ein neuer Eintrag hinzugefügt werden könnte.
|
void |
closeIndex(String basePath,
byte[] temp)
Schließt den Index und speichert alle geänderten Daten auf Platte.
|
int |
entries()
Anzahl der Einträge, die dieser Index im RAM hält
|
long |
getAbsolutDTMin(String basePath)
Liefert den kleinsten DT Min Wert, der jemals in diesem Index gespeichert wird.
|
IndexResult |
getContainerID(String basePath,
byte[] temp,
long dTMin,
long dTMax)
Liefert eine Matrix mit DTMin/Max, DIMin/Max und ContainerIds, deren DTMin/Max-Werte zwischen dTMin und dTMax liegen.
|
long |
getCurrentCID()
Liefert die aktuelle Container ID.
|
long |
getCurrentDIMax()
Liefert vom aktuellen Eintrag den Max-Wert des DatenIndex
|
long |
getCurrentDIMin()
Liefert vom aktuellen Eintrag den Min-Wert des DatenIndex
|
long |
getCurrentDTMax()
Liefert vom aktuellen Eintrag den Max-Wert
|
long |
getCurrentDTMin()
Liefert vom aktuellen Eintrag den Min-Wert
|
void |
resize(int newSize,
String basePath)
Verändert die Größe des RingBuffers.
|
String |
toString()
Gibt den Inhalt des ByteBuffers als String aus, inkl Angaben über Kapazität, Anzahl der Einträge und des CurrentEntries.
|
void |
updateMax(long newDTMax,
long newDIMax)
Aktualisiert den Max-Wert des aktuellsten Eintrages.
|
public static final String IDX_FILENAME
public static final int NO_VALUE
public static final DataTimeIndex.IndexStartmode APPEND_REUSE_LAST
public static final DataTimeIndex.IndexStartmode ERASE_OLD
public DataTimeIndex(int bufferSize, String basePath, byte[] temp, DataTimeIndex.IndexStartmode startmode) throws IndexException
bufferSize
- Anzahl der Einträge, die der die der Index im RAM halten sollbasePath
- Verzeichnis, in dem die Indexdatei liegttemp
- Ein temporäres ByteArray, das zum Suchen des currentEntries verwendet wirdstartmode
- DataTimeIndex.IndexStartmode.ERASE_OLD
: alte Indexdatei loeschen, DataTimeIndex.IndexStartmode.APPEND_REUSE_LAST
: anfuegen, letzten Eintrag
weiterverwendenIndexException
- Bei Problemem mit dem Dateizugriffpublic DataTimeIndex(int bufferSize)
bufferSize
- Anzahl der Einträge, die der die der Index im RAM halten sollpublic void updateMax(long newDTMax, long newDIMax) throws IndexException
newDTMax
- neuer Wert für DatenZeitIndex-MaxnewDIMax
- neuer Wert für DatenIndexIndex-MaxIndexException
- Wenn der neue Wert kleiner als der dazugehörige Min-Wert ist oder wenn keinen currentEntry gibtpublic long getCurrentCID()
public long getCurrentDTMin()
public long getCurrentDTMax()
public long getCurrentDIMin()
public long getCurrentDIMax()
public int capacity()
public int entries()
public void add(String basePath, byte[] temp, long dTMin, long dTMax, long dIMin, long dIMax, long contId) throws IndexException
basePath
- Verzeichnis, in dem die Index-Datei liegttemp
- Puffer, der beim Einlesen/Schreiben der Index-Datei verwendet wirddTMin
- DatenZeit Min-WertdTMax
- DatenZeit Max-WertdIMin
- DatenIndex Min-WertdIMax
- DatenIndex Max-WertcontId
- Container IDIndexException
- Bei Problemem mit der Index-Dateipublic void checkForAdd(String basePath, byte[] temp, long dTMin, long dTMax, long dIMin, long dIMax, long contId) throws IndexException
basePath
- Verzeichnis, in dem die Index-Datei liegttemp
- Puffer, der beim Einlesen/Schreiben der Index-Datei verwendet wirddTMin
- DatenZeit Min-WertdTMax
- DatenZeit Max-WertdIMin
- DatenIndex Min-WertdIMax
- DatenIndex Max-WertcontId
- Container IDIndexException
- Bei Problemem mit der Index-Dateipublic IndexResult getContainerID(String basePath, byte[] temp, long dTMin, long dTMax) throws IndexException
basePath
- Verzeichnis, in dem die Index-Datei liegttemp
- Puffer, der beim Einlesen/Schreiben der Index-Datei verwendet wirddTMin
- Min-Wert der ZeitspannedTMax
- Max-Wert der ZeitspanneIndexException
- Bei Problemem mit der IndexDateipublic long getAbsolutDTMin(String basePath) throws IndexException
basePath
- Verzeichnis, in dem die Index-Datei liegtIndexException
- Bei Zugriffsproblemen mit der IndexDateipublic void closeIndex(String basePath, byte[] temp) throws IndexException
basePath
- Verzeichnis, in dem die Index-Datei liegttemp
- Puffer, der beim Schreiben der Index-Datei verwendet wirdIndexException
public String toString()
public void resize(int newSize, String basePath) throws IndexException
newSize
- basePath
- IndexException