de.bsvrz.ars.ars.persistence.index
Class DIdxATimeMonotoneIndex

java.lang.Object
  extended by de.bsvrz.ars.ars.persistence.index.ATimeMonotoneIndex
      extended by de.bsvrz.ars.ars.persistence.index.DIdxATimeMonotoneIndex

public class DIdxATimeMonotoneIndex
extends ATimeMonotoneIndex

In dieser Klasse ist zusaetzlich gefordert, dass die Folge der Datenindexe streng monoton ist.

Author:
beck et al. projects GmbH, Phil Schrettenbrunner, Alexander Schmidt

Nested Class Summary
 
Nested classes/interfaces inherited from class de.bsvrz.ars.ars.persistence.index.ATimeMonotoneIndex
ATimeMonotoneIndex.IndexStartmode, ATimeMonotoneIndex.Key
 
Field Summary
 
Fields inherited from class de.bsvrz.ars.ars.persistence.index.ATimeMonotoneIndex
APPEND_REUSE_LAST, AT, DI, DT, ENTRY_LEN, ERASE_OLD, IDX_FILENAME, NO_VALUE
 
Constructor Summary
DIdxATimeMonotoneIndex(int size)
          Erzeugt einen neuen monoton steigenden Index.
DIdxATimeMonotoneIndex(int size, String basePath, ATimeMonotoneIndex.IndexStartmode startmode)
          Erzeugt einen neuen monoton steigenden Index.
 
Method Summary
 void add(String basePath, long dIMin, long dIMax, long aTMin, long aTMax, long dTMin, long dTMax, long cID)
          Fügt einen neuen Eintrag in den Buffer ein.
 void checkForAdd(String basePath, long dIMin, long dIMax, long aTMin, long aTMax, long dTMin, long dTMax, long cID)
          Prüft, ob dem Index ein neuer Eintrag hinzugefügt werden könnte.
private  void checkForAddLocal(long dIMin, long dIMax, long aTMin, long aTMax, long dTMin, long dTMax, long cID)
           
 long getAbsoluteDIdxMin(String basePath)
          Liefert den kleinsten Datenindex-Minwert, der jemals in diesem Index gespeichert wurde.
 IndexResult getContainerIDByDIdx(String basePath, byte[] temp, long minKey, long maxKey)
           
 
Methods inherited from class de.bsvrz.ars.ars.persistence.index.ATimeMonotoneIndex
capacity, closeIndex, entries, getAbsoluteATMin, getContainerID, getContainerIDByATime, getCurrentATMax, getCurrentATMin, getCurrentCID, getCurrentDIMax, getCurrentDIMin, getCurrentDTMax, getCurrentDTMin, getMinEntry, resize, toString, updateMax
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

DIdxATimeMonotoneIndex

public DIdxATimeMonotoneIndex(int size)
Erzeugt einen neuen monoton steigenden Index. Neue Eintraege werden an eine bestehende Indexdatei angefuegt, wenn diese bereits existiert. Existiert keine Indexdatei, wird eine erzeugt. Initial werden keine Daten eingelesen; es findet kein Plattenzugriff statt.

Parameters:
size - Größe des Buffers (Anzahl der Einträge). Wird mindestens auf 1 gesetzt.

DIdxATimeMonotoneIndex

public DIdxATimeMonotoneIndex(int size,
                              String basePath,
                              ATimeMonotoneIndex.IndexStartmode startmode)
                       throws IndexException
Erzeugt einen neuen monoton steigenden Index.

Bei startmode==APPEND_REUSE_LAST wird der Ringpuffer mit den aktuellsten Daten aus einer vorhandenen Indexdate gefüllt. Zusätzlich wird der letzte Eintrag in der Indexdatei zum currentEntry. Damit kann ein Container fortgesetzt und der Key2 weiter aktualisiert werden.

Bei startmode==CREATE_NEW wird ein leerer Index erzeugt und die bisherige Indexdatei (sofern vorhanden) geloescht.

Parameters:
size - Größe des Buffers (Anzahl der Einträge)
basePath - Verzeichnis der Indexdatei
startmode - IndexStartmode#ERASE_OLD: alte Indexdatei loeschen, IndexStartmode#APPEND_REUSE_LAST: anfuegen, letzten Eintrag weiterverwenden
Throws:
IndexException
Method Detail

add

public void add(String basePath,
                long dIMin,
                long dIMax,
                long aTMin,
                long aTMax,
                long dTMin,
                long dTMax,
                long cID)
         throws IndexException
Fügt einen neuen Eintrag in den Buffer ein. Bei Bedarf wird der Puffer auf Platte geschrieben.

Overrides:
add in class ATimeMonotoneIndex
Parameters:
basePath - Verzeichnis der Indexdatei
dIMin - Min-Wert des Datenindex
dIMax - Max-Wert des Datenindex
aTMin - Min-Wert der Archivzeit
aTMax - Max-Wert der Archivzeit
dTMin - Min-Wert der Datenzeit
dTMax - Max-Wert der Datenzeit
cID - Container-ID des Neueintrags
Throws:
IndexException - Falls die Konsistenzpruefung der Eintraege fehlschlaegt

checkForAdd

public void checkForAdd(String basePath,
                        long dIMin,
                        long dIMax,
                        long aTMin,
                        long aTMax,
                        long dTMin,
                        long dTMax,
                        long cID)
                 throws IndexException
Prüft, ob dem Index ein neuer Eintrag hinzugefügt werden könnte.

Overrides:
checkForAdd in class ATimeMonotoneIndex
Parameters:
basePath - Verzeichnis der Indexdatei
dIMin - Min-Wert des Datenindex
dIMax - Max-Wert des Datenindex
aTMin - Min-Wert der Archivzeit
aTMax - Max-Wert der Archivzeit
dTMin - Min-Wert der Datenzeit
dTMax - Max-Wert der Datenzeit
cID - Container-ID des Neueintrags
Throws:
IndexException - Falls die Konsistenzpruefung der Eintraege fehlschlaegt

checkForAddLocal

private void checkForAddLocal(long dIMin,
                              long dIMax,
                              long aTMin,
                              long aTMax,
                              long dTMin,
                              long dTMax,
                              long cID)
                       throws CorruptIndexException
Throws:
CorruptIndexException

getContainerIDByDIdx

public IndexResult getContainerIDByDIdx(String basePath,
                                        byte[] temp,
                                        long minKey,
                                        long maxKey)
                                 throws IndexException
Throws:
IndexException

getAbsoluteDIdxMin

public long getAbsoluteDIdxMin(String basePath)
                        throws IndexException
Liefert den kleinsten Datenindex-Minwert, der jemals in diesem Index gespeichert wurde.

Parameters:
basePath - Verzeichnis, in dem die Index-Datei liegt
Returns:
Kleinster Datenindex
Throws:
IndexException - Bei Zugriffsproblemen mit der IndexDatei