public class MultiContainerDataIterator extends Object
Modifier and Type | Class and Description |
---|---|
private class |
MultiContainerDataIterator.ContainerWalk |
private class |
MultiContainerDataIterator.ContInfo
Kapselt folgende Daten zu einem Container: Datei, Container-ID, Datensatzart und min/max Datenindex.
|
Modifier and Type | Field and Description |
---|---|
private ArchiveManager |
arcMgr
Archive-Manager fuer DataIdentTree-Zugriff.
|
private MultiContainerDataIterator.ContainerWalk[] |
contWalks
Liste mit Container-Walks fuer die einzelnen Datensatzarten.
|
static int |
DEL_FULLCOUNT
Beim Iterieren geloeschter Container werden alle Datensaetze gezaehlt
|
static int |
DEL_IGNORE
Geloeschte Container werden beim Iterieren ignoriert
|
static int |
DEL_MINMAX
Beim Itererieren geloeschter Container werden nur 2 Datensaetze (Min/Max) gezaehlt
|
private int |
deletedTreatment
Gibt an, wie über geloeschte Container iteriert wird,
0 : Container wird ignoriert 1 : Container wird als 2 Datensaetze (Min/Max) gezaehlt 2 : Container wird voll gezaehlt |
private File |
didDir
Persistent-Verzeichnis der aktuellen Datenidentifikation.
|
private static boolean |
DONT_INCLUDE_DELETED |
private MultiContainerDataIterator.ContainerWalk |
lastContWalk
Der Container-Walk, aus dem der letzte Datensatz geliefert worden ist.
|
private Debug |
logger |
private static int |
NN
Datensatzart-Index.
|
private static int |
OA
Datensatzart-Index.
|
private Task |
ownerTask
Aufrufender Task.
|
private PersistenceManager |
persMgr
Persistenz-Manager fuer Container-Datei-Zugriff.
|
Constructor and Description |
---|
MultiContainerDataIterator(ArchiveManager arcMgr,
DataIdentTreeIterator it,
IndexResult oaRes,
IndexResult onRes,
IndexResult naRes,
IndexResult nnRes,
int deletedTreatment,
Task ownerTask)
Erzeugt einen Multi-Iterator, der ueber mehrere Container und Datensatzarten laeuft und dabei als naechsten DS stets den mit dem kleinsten Index liefert.
|
MultiContainerDataIterator(ArchiveManager arcMgr,
DataIdentTreeIterator it,
IndexResult oaRes,
IndexResult onRes,
IndexResult naRes,
IndexResult nnRes,
Task ownerTask) |
MultiContainerDataIterator(ArchiveManager arcMgr,
long objID,
long atgID,
long aspID,
int sv,
ArchiveDataKindCombination adkc,
int deletedTreatment,
Task ownerTask)
Erzeugt einen Multi-Iterator, der ueber mehrere Container und Datensatzarten laeuft und dabei als naechsten DS stets den mit dem kleinsten Index liefert.
|
MultiContainerDataIterator(ArchiveManager arcMgr,
long objID,
long atgID,
long aspID,
int sv,
ArchiveDataKindCombination adkc,
Task ownerTask) |
MultiContainerDataIterator(ArchiveManager arcMgr,
long objID,
long atgID,
long aspID,
int sv,
boolean oa,
boolean on,
boolean na,
boolean nn,
int deletedTreatment,
Task ownerTask)
Erzeugt einen Multi-Iterator, der ueber mehrere Container und Datensatzarten laeuft und dabei als naechsten DS stets den mit dem kleinsten Index liefert.
|
MultiContainerDataIterator(ArchiveManager arcMgr,
long objID,
long atgID,
long aspID,
int sv,
boolean oa,
boolean on,
boolean na,
boolean nn,
Task ownerTask)
Erzeugt einen Multi-Iterator, der ueber mehrere Container und Datensatzarten laeuft und dabei als naechsten DS stets den mit dem kleinsten Index liefert.
|
MultiContainerDataIterator(ArchiveManager arcMgr,
long objID,
long atgID,
long aspID,
int sv,
IndexResult oaRes,
IndexResult onRes,
IndexResult naRes,
IndexResult nnRes,
int deletedTreatment,
Task ownerTask)
Erzeugt einen Multi-Iterator, der ueber mehrere Container und Datensatzarten laeuft und dabei als naechsten DS stets den mit dem kleinsten Index liefert.
|
MultiContainerDataIterator(ArchiveManager arcMgr,
long objID,
long atgID,
long aspID,
int sv,
IndexResult oaRes,
IndexResult onRes,
IndexResult naRes,
IndexResult nnRes,
Task ownerTask)
Erzeugt einen Multi-Iterator, der ueber mehrere Container und Datensatzarten laeuft und dabei als naechsten DS stets den mit dem kleinsten Index liefert.
|
MultiContainerDataIterator(ArchiveManager arcMgr,
long objID,
long atgID,
long aspID,
int sv,
int deletedTreatment,
Task ownerTask)
Erzeugt einen Multi-Iterator, der ueber mehrere Container und Datensatzarten laeuft und dabei als naechsten DS stets den mit dem kleinsten Index liefert.
|
MultiContainerDataIterator(ArchiveManager arcMgr,
long objID,
long atgID,
long aspID,
int sv,
Task ownerTask) |
Modifier and Type | Method and Description |
---|---|
private boolean |
accessContainer(MultiContainerDataIterator.ContainerWalk contWalk)
Oeffnet im angegebenen Container-Walk alle Container innerhalb des aktuellen Container-Walk-Indexes zum Lesen.
|
void |
close()
Schliesst den Multi-Iterator und damit auch alle noch offenen Container-Dateien.
|
String |
descPosition()
Liefert eine textuelle Beschreibung der aktuellen Position aus Verzeichnis, Container und Datensatz.
|
private int |
getContainerFileIdx(ArchiveDataKind dataKind,
int contInfoIdx)
Eindeutiger ContainerFile-Index fuer Persistenz-Zugriff.
|
private MultiContainerDataIterator.ContInfo[] |
getContInfos(File[] contFiles,
ArchiveDataKind dataKind)
Liefert die Container-Infos zu den uebergebenen Container-Dateien der angegebenen Datensatzart.
|
int |
getCurContFileIdx()
Liefert den ContainerFile-Index fuer
PersistenceManager.getContainerHeaderParamAsLong(Task,int,KeyValParam) des Containers, der den letzten
Datensatz geliefert hat. |
long |
getCurContID()
Liefert die Container-ID des Containers, der den letzten Datensatz geliefert hat.
|
private long[] |
getDataIdx(File contFile,
long contId,
ArchiveDataKind dataKind)
Bei nicht abgeschlossenen Containern (min/max DataIdx steht noch nicht im Header) liefert diese Methode min/max DataIdx entweder aus den Container-Indexen
oder aus den Datensaetzen des Containers, falls die Container-Indexe diese Information nicht vorhalten. persMgr.accessContainerReadOnly(ownerTask, contFile)
muss bereits vom Aufrufer dieser Methode ausgefuehrt worden sein. persMgr.leaveContainer(ownerTask) muss vom Aufrufer dieser Methode aufgerufen werden,
nachdem diese Methode returniert ist.
|
private void |
getNextData(MultiContainerDataIterator.ContainerWalk contWalk)
Sucht im angegebenen Container-Walk den Container mit den naechsten zu liefernden Datensatz und vermerkt diesen Container im Container-Walk.
|
private void |
leaveContainer(MultiContainerDataIterator.ContainerWalk contWalk,
int contWalkIdx)
Verlaesst im angegebenen Container-Walk alle Container innerhalb des angegebenen Container-Walk-Indexes.
|
private void |
leaveContainer(MultiContainerDataIterator.ContInfo contInfo)
Verlaesst den durch die Container-Info spezifizierten Container und markiert ihn als erledigt.
|
ContainerDataIterator |
readNextDIdx()
Liefert Datensatz-Iterator zurueck, der auf dem naechsten Datensatz steht.
|
ContainerDataIterator |
readSkipNextDIdx()
Liefert Datensatz-Iterator zurueck, der auf dem naechsten Datensatz steht, und ueberspringt diesen Datensatz.
|
private static final boolean DONT_INCLUDE_DELETED
private Debug logger
private static int OA
private static int NN
private Task ownerTask
private ArchiveManager arcMgr
private PersistenceManager persMgr
private File didDir
private MultiContainerDataIterator.ContainerWalk[] contWalks
private MultiContainerDataIterator.ContainerWalk lastContWalk
public static final int DEL_IGNORE
public static final int DEL_MINMAX
public static final int DEL_FULLCOUNT
private int deletedTreatment
public MultiContainerDataIterator(ArchiveManager arcMgr, long objID, long atgID, long aspID, int sv, boolean oa, boolean on, boolean na, boolean nn, int deletedTreatment, Task ownerTask) throws PersistenceException
arcMgr
- Der Archiv-Manager.objID
- Die Objekt-ID.atgID
- Die Attributgruppen-ID.aspID
- Die Aspekt-ID.sv
- Die Simulationsvariante.oa
- Kennzeichen, ob Container mit Online-Aktuell erhaltenen Datensaetzen genommen werden.on
- Kennzeichen, ob Container mit Online-Nachgeliefert erhaltenen Datensaetzen genommen werden.na
- Kennzeichen, ob Container mit Nachgefordert-Aktuell erhaltenen Datensaetzen genommen werden.nn
- Kennzeichen, ob Container mit Nachgefordert-Nachgeliefert erhaltenen Datensaetzen genommen werden.deletedTreatment
- gibt an, wie geloeschte Container behandelt werden sollen.ownerTask
- Aufrufender Task. Wird bei Zugriffen auf die Persistenz benoetigt.PersistenceException
public MultiContainerDataIterator(ArchiveManager arcMgr, long objID, long atgID, long aspID, int sv, boolean oa, boolean on, boolean na, boolean nn, Task ownerTask) throws PersistenceException
arcMgr
- Der Archiv-Manager.objID
- Die Objekt-ID.atgID
- Die Attributgruppen-ID.aspID
- Die Aspekt-ID.sv
- Die Simulationsvariante.oa
- Kennzeichen, ob Container mit Online-Aktuell erhaltenen Datensaetzen genommen werden.on
- Kennzeichen, ob Container mit Online-Nachgeliefert erhaltenen Datensaetzen genommen werden.na
- Kennzeichen, ob Container mit Nachgefordert-Aktuell erhaltenen Datensaetzen genommen werden.nn
- Kennzeichen, ob Container mit Nachgefordert-Nachgeliefert erhaltenen Datensaetzen genommen werden.ownerTask
- Aufrufender Task. Wird bei Zugriffen auf die Persistenz benoetigt.PersistenceException
public MultiContainerDataIterator(ArchiveManager arcMgr, long objID, long atgID, long aspID, int sv, ArchiveDataKindCombination adkc, int deletedTreatment, Task ownerTask) throws PersistenceException
arcMgr
- Der Archiv-Manager.objID
- Die Objekt-ID.atgID
- Die Attributgruppen-ID.aspID
- Die Aspekt-ID.sv
- Die Simulationsvariante.adkc
- Liefert Kennzeichen, von welchen Datensatzarten die Container genommen werdendeletedTreatment
- Gibt an, ob geloeschte Container ignoriert werden [0], als 2 Datensaetze (Min/Max) zaehlen [1], oder voll gezaehlt werden [2]ownerTask
- Aufrufender Task. Wird bei Zugriffen auf die Persistenz benoetigt.PersistenceException
public MultiContainerDataIterator(ArchiveManager arcMgr, long objID, long atgID, long aspID, int sv, ArchiveDataKindCombination adkc, Task ownerTask) throws PersistenceException
PersistenceException
mit deletedTreatment==0
public MultiContainerDataIterator(ArchiveManager arcMgr, long objID, long atgID, long aspID, int sv, int deletedTreatment, Task ownerTask) throws PersistenceException
arcMgr
- Der Archiv-Manager.objID
- Die Objekt-ID.atgID
- Die Attributgruppen-ID.aspID
- Die Aspekt-ID.sv
- Die Simulationsvariante.deletedTreatment
- Gibt an, ob geloeschte Container ignoriert werden [0], als 2 Datensaetze (Min/Max) zaehlen [1], oder voll gezaehlt werden [2]ownerTask
- Aufrufender Task. Wird bei Zugriffen auf die Persistenz benoetigt.PersistenceException
public MultiContainerDataIterator(ArchiveManager arcMgr, long objID, long atgID, long aspID, int sv, Task ownerTask) throws PersistenceException
PersistenceException
mit deletedTreatment==0
public MultiContainerDataIterator(ArchiveManager arcMgr, long objID, long atgID, long aspID, int sv, IndexResult oaRes, IndexResult onRes, IndexResult naRes, IndexResult nnRes, Task ownerTask) throws PersistenceException
null
werden
alle Container genommenIndexResult.EMPTY
wird kein Container genommenarcMgr
- Der Archiv-Manager.objID
- Die Objekt-ID.atgID
- Die Attributgruppen-ID.aspID
- Die Aspekt-ID.sv
- Die Simulationsvariante.oaRes
- Liste mit Container-IDs fuer Online-Aktuell erhaltene Datensaetze.onRes
- Liste mit Container-IDs fuer Online-Nachgeliefert erhaltene Datensaetze.naRes
- Liste mit Container-IDs fuer Nachgefordert-Aktuell erhaltene Datensaetze.nnRes
- Liste mit Container-IDs fuer Nachgefordert-Nachgeliefert erhaltene Datensaetze.ownerTask
- Aufrufender Task. Wird bei Zugriffen auf die Persistenz benoetigt.PersistenceException
public MultiContainerDataIterator(ArchiveManager arcMgr, long objID, long atgID, long aspID, int sv, IndexResult oaRes, IndexResult onRes, IndexResult naRes, IndexResult nnRes, int deletedTreatment, Task ownerTask) throws PersistenceException
null
werden
alle Container genommenIndexResult.EMPTY
wird kein Container genommenarcMgr
- Der Archiv-Manager.objID
- Die Objekt-ID.atgID
- Die Attributgruppen-ID.aspID
- Die Aspekt-ID.sv
- Die Simulationsvariante.oaRes
- Liste mit Container-IDs fuer Online-Aktuell erhaltene Datensaetze.onRes
- Liste mit Container-IDs fuer Online-Nachgeliefert erhaltene Datensaetze.naRes
- Liste mit Container-IDs fuer Nachgefordert-Aktuell erhaltene Datensaetze.nnRes
- Liste mit Container-IDs fuer Nachgefordert-Nachgeliefert erhaltene Datensaetze.deletedTreatment
- Gibt an, ob geloeschte Container ignoriert werden [0], als 2 Datensaetze (Min/Max) zaehlen [1], oder voll gezaehlt werden [2]ownerTask
- Aufrufender Task. Wird bei Zugriffen auf die Persistenz benoetigt.PersistenceException
public MultiContainerDataIterator(ArchiveManager arcMgr, DataIdentTreeIterator it, IndexResult oaRes, IndexResult onRes, IndexResult naRes, IndexResult nnRes, int deletedTreatment, Task ownerTask) throws PersistenceException
null
werden
alle Container genommenIndexResult.EMPTY
wird kein Container genommenarcMgr
- Der Archive-Manager.it
- Die aktuelle Position dieses DataIdentTree-Iterators liefert die Datenidentifikation.oaRes
- Liste mit Container-IDs fuer Online-Aktuell erhaltene Datensaetze.onRes
- Liste mit Container-IDs fuer Online-Nachgeliefert erhaltene Datensaetze.naRes
- Liste mit Container-IDs fuer Nachgefordert-Aktuell erhaltene Datensaetze.nnRes
- Liste mit Container-IDs fuer Nachgefordert-Nachgeliefert erhaltene Datensaetze.deletedTreatment
- Gibt an, ob geloeschte Container ignoriert werden [0], als 2 Datensaetze (Min/Max) zaehlen [1], oder voll gezaehlt werden [2]ownerTask
- Aufrufender Task. Wird bei Zugriffen auf die Persistenz benoetigt.PersistenceException
public MultiContainerDataIterator(ArchiveManager arcMgr, DataIdentTreeIterator it, IndexResult oaRes, IndexResult onRes, IndexResult naRes, IndexResult nnRes, Task ownerTask) throws PersistenceException
PersistenceException
mit deletedTreatment ==
0 (IGNORE)
public ContainerDataIterator readNextDIdx() throws PersistenceException
null
wenn alle Iteratoren am Ende sindPersistenceException
public ContainerDataIterator readSkipNextDIdx() throws PersistenceException
PersistenceException
public void close()
public long getCurContID()
public int getCurContFileIdx()
PersistenceManager.getContainerHeaderParamAsLong(Task,int,KeyValParam)
des Containers, der den letzten
Datensatz geliefert hat.public String descPosition()
private void getNextData(MultiContainerDataIterator.ContainerWalk contWalk)
contWalk
- Zu iterierender Container-Walkprivate boolean accessContainer(MultiContainerDataIterator.ContainerWalk contWalk)
contWalk
- Container-Walktrue
falls Container zum Lesen geoeffnet werden koennen, false
sonstprivate void leaveContainer(MultiContainerDataIterator.ContainerWalk contWalk, int contWalkIdx)
contWalk
- Container-WalkcontWalkIdx
- Container-Walk-Indexprivate void leaveContainer(MultiContainerDataIterator.ContInfo contInfo)
contInfo
- Zu verlassender Containerprivate MultiContainerDataIterator.ContInfo[] getContInfos(File[] contFiles, ArchiveDataKind dataKind) throws PersistenceException
contFiles
- Liste mit Container-DateiendataKind
- Datensatzart der ContainerPersistenceException
private int getContainerFileIdx(ArchiveDataKind dataKind, int contInfoIdx)
private long[] getDataIdx(File contFile, long contId, ArchiveDataKind dataKind) throws PersistenceException
contFile
- Container-DateicontId
- Container-IDdataKind
- Datensatzart des ContainersPersistenceException