de.bsvrz.ars.ars.persistence
Class ContainerDataIterator

java.lang.Object
  extended by de.bsvrz.ars.ars.persistence.ContainerDataIterator

public class ContainerDataIterator
extends Object

Iterator fuer Datensaetze, die ein Datencontainer auf Anfrage geliefert hat. Mit readNextDataHdr() kann geprueft werden, ob ein weiterer Datensatz verfuegbar ist. Falls ja, koennen seine Header-Daten mit getArcTime(), etc. eingesehen werden und der Datensatz selbst mit #deserializeData() abgeholt oder mit skipData() uebersprungen werden.

Beispiel:

 ContainerDataIterator it = myPersistenceManager.getArchiveData(...);
 while(it.readNextDataHdr()) {
     if (it.getDataIndex() > myBorder) {
         Data data = it.deserializeData();
     } else {
         it.skipData();
     }
 }
 

Author:
beck et al. projects GmbH, Thomas Schaefer

Field Summary
private  long arcTime
           
private  ContainerFile containerFile
           
private  int counter
           
private  long dataIndex
           
private  ArchiveDataKind dataKind
           
private  int dataSize
           
private  long dataTime
           
private  int dataUncSize
           
private  boolean hdrMaxVal
           
private  boolean hdrMinVal
           
private  boolean isNodata
           
private  boolean isNoRights
           
private  boolean isNoSource
           
private  boolean isPotDataGap
           
private  boolean useExtraBuffer
           
 
Constructor Summary
ContainerDataIterator(ContainerFile containerFile)
          Erzeugt einen neuen Iterator fuer das angegebene ContainerFile-Objekt.
 
Method Summary
 void close()
          Schliesst den Iterator und verwirft die zu iterierende Ergebnis-Menge.
 ArchiveDataKind getArchiveDataKind()
           
 long getArcTime()
          Liefert den Archivzeitstempel des Datensatzes dessen Header-Daten zuvor mittels readNextDataHdr() eingelesen worden sind.
 int getCounter()
          Liefert die Position des Datensatzes dessen Header-Daten zuvor mittels readNextDataHdr() eingelesen worden sind.
 long getDataIndex()
          Liefert den Datenindex des Datensatzes dessen Header-Daten zuvor mittels readNextDataHdr() eingelesen worden sind.
 long getDataIndexLfdNr()
           
 int getDataSize()
           
 DataState getDataState()
          Liefert die Markierung fuer diesen Datensatz.
 long getDataTime()
          Liefert den Datenzeitstempel des Datensatzes dessen Header-Daten zuvor mittels readNextDataHdr() eingelesen worden sind.
 int getDataUncSize()
           
 String getHeader()
           
 byte[] getRawData(Inflater decompresser)
          Liefert den serialisierten Datensatz dessen Header-Daten zuvor mittels readNextDataHdr() eingelesen worden sind.
 long getTimeIndex(TimingType tt)
           
 boolean isCompressed()
           
 boolean isData()
           
 boolean isHdrMaxVal()
           
 boolean isHdrMinVal()
           
 boolean isNoData()
          Nachdem readNextDataHdr() aufgerufen wurde, gibt diese Methode an, ob der eingelesene Datensatz eine "keine Daten"-Markierung besitzt.
 boolean isNoRights()
          Nachdem readNextDataHdr() aufgerufen wurde, gibt diese Methode an, ob der eingelesene Datensatz eine "keine Rechte"-Markierung besitzt.
 boolean isNoSource()
          Nachdem readNextDataHdr() aufgerufen wurde, gibt diese Methode an, ob der eingelesene Datensatz eine "keine Quelle"-Markierung besitzt.
 boolean isPotDataGap()
          Nachdem readNextDataHdr() aufgerufen wurde, gibt diese Methode an, ob der eingelesene Datensatz als "potentielle Datenluecke" gekennzeichnet wurde.
 boolean isStillCompressed()
           
(package private)  boolean mustUseExtraBuffer()
           
 boolean readNextDataHdr()
          Prueft, ob ein weiterer Datensatz verfuegbar ist.
(package private)  void setArchiveDataKind(ArchiveDataKind dataKind)
           
(package private)  void setArcTime(long arcTime)
          Wird von der Persistenz benutzt, um den Archivzeitstempel des eingelesenen Datensatzes in diesem Iterator zu setzen.
(package private)  void setCounter(int counter)
          Wird von der Persistenz benutzt, um die Position des eingelesenen Datensatzes in diesem Iterator zu setzen.
(package private)  void setDataIndex(long dataIndex)
          Wird von der Persistenz benutzt, um den Datenindex des eingelesenen Datensatzes in diesem Iterator zu setzen.
(package private)  void setDataSize(int dataSize)
           
(package private)  void setDataTime(long dataTime)
          Wird von der Persistenz benutzt, um den Datenzeitstempel des eingelesenen Datensatzes in diesem Iterator zu setzen.
(package private)  void setDataUncSize(int dataUncSize)
           
(package private)  void setHdrMaxVal(boolean hdrMaxVal)
           
(package private)  void setHdrMinVal(boolean hdrMinVal)
           
(package private)  void setNodata(boolean isNodata)
          Wird von der Persistenz benutzt, um die Markierung "keine Daten" des eingelesenen Datensatzes in diesem Iterator zu setzen.
(package private)  void setNoRights(boolean isNoRights)
          Wird von der Persistenz benutzt, um die Markierung "keine Rechte" des eingelesenen Datensatzes in diesem Iterator zu setzen.
(package private)  void setNoSource(boolean isNoSource)
          Wird von der Persistenz benutzt, um die Markierung "keine Quelle" des eingelesenen Datensatzes in diesem Iterator zu setzen.
(package private)  void setPotDataGap(boolean isPotDataGap)
          Wird von der Persistenz benutzt, um die Markierung "potentielle Datenluecke" des eingelesenen Datensatzes in diesem Iterator zu setzen.
(package private)  void setUseExtraBuffer(boolean useExtraBuffer)
           
 void skipData()
          Ueberspringt den Datensatz dessen Header-Daten zuvor mittels readNextDataHdr() eingelesen worden sind.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

containerFile

private ContainerFile containerFile

dataTime

private long dataTime

arcTime

private long arcTime

dataIndex

private long dataIndex

isNoSource

private boolean isNoSource

isNodata

private boolean isNodata

isPotDataGap

private boolean isPotDataGap

isNoRights

private boolean isNoRights

hdrMinVal

private boolean hdrMinVal

hdrMaxVal

private boolean hdrMaxVal

counter

private int counter

dataSize

private int dataSize

dataUncSize

private int dataUncSize

dataKind

private ArchiveDataKind dataKind

useExtraBuffer

private boolean useExtraBuffer
Constructor Detail

ContainerDataIterator

ContainerDataIterator(ContainerFile containerFile)
Erzeugt einen neuen Iterator fuer das angegebene ContainerFile-Objekt.

Parameters:
containerFile - ContainerFile
Method Detail

readNextDataHdr

public boolean readNextDataHdr()
                        throws PersistenceException
Prueft, ob ein weiterer Datensatz verfuegbar ist. Wenn dies der Fall ist, wird true zurueck geliefert und die Header-Daten des Datensatzes koennen mit getArcTime(), getDataTime() und getDataIndex() eingesehen werden. Der Datensatz selbst ist ueber die Methode #deserializeData() abrufbar, oder kann mit der Methode skipData() uebersprungen werden. Wenn kein Datensatz verfuegbar ist, wird false zurueck geliefert.

Returns:
Kennzeichen, ob Datensatz verfuegbar ist
Throws:
PersistenceException, - falls ein Fehler in der Persistenz aufgetreten ist
PersistenceException

getHeader

public String getHeader()

close

public void close()
           throws PersistenceException
Schliesst den Iterator und verwirft die zu iterierende Ergebnis-Menge.

Throws:
PersistenceException, - falls ein Fehler in der Persistenz aufgetreten ist
PersistenceException

getRawData

public byte[] getRawData(Inflater decompresser)
                  throws PersistenceException
Liefert den serialisierten Datensatz dessen Header-Daten zuvor mittels readNextDataHdr() eingelesen worden sind. Der Datensatz kann komprimiert sein.

Returns:
Datensatz
Throws:
PersistenceException, - falls ein Fehler in der Persistenz aufgetreten ist
PersistenceException

skipData

public void skipData()
              throws PersistenceException
Ueberspringt den Datensatz dessen Header-Daten zuvor mittels readNextDataHdr() eingelesen worden sind.

Throws:
PersistenceException, - falls ein Fehler in der Persistenz aufgetreten ist
PersistenceException

isCompressed

public boolean isCompressed()
Returns:
Ob der Datensatz im Header als komprimiert gekennzeichnet wurde

isStillCompressed

public boolean isStillCompressed()
Returns:
Ob der Datensatz nach dem Lesen mit #getRawData() immer noch komprimiert ist. Das ArS kann so konfiguriert werden, dass es beim Lesen die Datensaetze dekomprimiert und sie unkomprimiert verschickt. Ist deutlich schneller als das Dekomprimieren durch das Stream-Interface.

getArcTime

public long getArcTime()
Liefert den Archivzeitstempel des Datensatzes dessen Header-Daten zuvor mittels readNextDataHdr() eingelesen worden sind.

Returns:
Archivzeitstempel in Millisekunden seit 1970.

getDataIndex

public long getDataIndex()
Liefert den Datenindex des Datensatzes dessen Header-Daten zuvor mittels readNextDataHdr() eingelesen worden sind.

Returns:
Datenindex

getTimeIndex

public long getTimeIndex(TimingType tt)
Parameters:
tt - Datenzeit, Archivzeit, Datenindex
Returns:
Datenzeit, Archivzeit, Datenindex (je nach Parameter)

getDataIndexLfdNr

public long getDataIndexLfdNr()
Returns:
Laufende Nummer des Datenindex (ohne Anmeldezeit Quelle und Modifier-Bits)

getDataTime

public long getDataTime()
Liefert den Datenzeitstempel des Datensatzes dessen Header-Daten zuvor mittels readNextDataHdr() eingelesen worden sind.

Returns:
Datenzeitstempel in Millisekunden seit 1970.

getDataState

public DataState getDataState()
Liefert die Markierung fuer diesen Datensatz.

Returns:

getCounter

public int getCounter()
Liefert die Position des Datensatzes dessen Header-Daten zuvor mittels readNextDataHdr() eingelesen worden sind.

Returns:
Position (0 = erster)

isHdrMinVal

public boolean isHdrMinVal()

setHdrMinVal

void setHdrMinVal(boolean hdrMinVal)

isHdrMaxVal

public boolean isHdrMaxVal()

setHdrMaxVal

void setHdrMaxVal(boolean hdrMaxVal)

isData

public boolean isData()
Returns:
Wahr, falls der Datensatz keine spezielle Markierung besitzt

isNoData

public boolean isNoData()
Nachdem readNextDataHdr() aufgerufen wurde, gibt diese Methode an, ob der eingelesene Datensatz eine "keine Daten"-Markierung besitzt.

Returns:
Wahr, falls der Datensatz eine "keine Daten"-Markierung besitzt

setNodata

void setNodata(boolean isNodata)
Wird von der Persistenz benutzt, um die Markierung "keine Daten" des eingelesenen Datensatzes in diesem Iterator zu setzen.

Parameters:
isNodata -

isNoRights

public boolean isNoRights()
Nachdem readNextDataHdr() aufgerufen wurde, gibt diese Methode an, ob der eingelesene Datensatz eine "keine Rechte"-Markierung besitzt.

Returns:
Wahr, falls der Datensatz eine "keine Rechte"-Markierung besitzt

setNoRights

void setNoRights(boolean isNoRights)
Wird von der Persistenz benutzt, um die Markierung "keine Rechte" des eingelesenen Datensatzes in diesem Iterator zu setzen.

Parameters:
isNoRights -

isNoSource

public boolean isNoSource()
Nachdem readNextDataHdr() aufgerufen wurde, gibt diese Methode an, ob der eingelesene Datensatz eine "keine Quelle"-Markierung besitzt.

Returns:
Wahr, falls der Datensatz eine "keine Quelle"-Markierung besitzt

setNoSource

void setNoSource(boolean isNoSource)
Wird von der Persistenz benutzt, um die Markierung "keine Quelle" des eingelesenen Datensatzes in diesem Iterator zu setzen.

Parameters:
isNoSource -

isPotDataGap

public boolean isPotDataGap()
Nachdem readNextDataHdr() aufgerufen wurde, gibt diese Methode an, ob der eingelesene Datensatz als "potentielle Datenluecke" gekennzeichnet wurde.

Returns:
Wahr, falls der Datensatz als "potentielle Datenluecke" gekennzeichnet wurde

setPotDataGap

void setPotDataGap(boolean isPotDataGap)
Wird von der Persistenz benutzt, um die Markierung "potentielle Datenluecke" des eingelesenen Datensatzes in diesem Iterator zu setzen.

Parameters:
isPotDataGap -

setArcTime

void setArcTime(long arcTime)
Wird von der Persistenz benutzt, um den Archivzeitstempel des eingelesenen Datensatzes in diesem Iterator zu setzen.

Parameters:
arcTime - Archivzeitstempel

setDataIndex

void setDataIndex(long dataIndex)
Wird von der Persistenz benutzt, um den Datenindex des eingelesenen Datensatzes in diesem Iterator zu setzen.

Parameters:
dataIndex - Datenindex

setDataTime

void setDataTime(long dataTime)
Wird von der Persistenz benutzt, um den Datenzeitstempel des eingelesenen Datensatzes in diesem Iterator zu setzen.

Parameters:
dataTime - Datenzeitstempel

getArchiveDataKind

public ArchiveDataKind getArchiveDataKind()

setArchiveDataKind

void setArchiveDataKind(ArchiveDataKind dataKind)

getDataSize

public int getDataSize()

setDataSize

void setDataSize(int dataSize)

getDataUncSize

public int getDataUncSize()

setDataUncSize

void setDataUncSize(int dataUncSize)

setCounter

void setCounter(int counter)
Wird von der Persistenz benutzt, um die Position des eingelesenen Datensatzes in diesem Iterator zu setzen.

Parameters:
counter - Position des Datensatzes (0 = erster)

mustUseExtraBuffer

boolean mustUseExtraBuffer()

setUseExtraBuffer

void setUseExtraBuffer(boolean useExtraBuffer)