public class MultiContainerDataIterator
extends java.lang.Object
Klasse zum Iterieren ueber Containergrenzen einer Datenidentifikation hinweg. Es wird stets ueber aufsteigende Datenindexe iteriert.
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 Debug |
_debug |
private ArchiveManager |
arcMgr
Archive-Manager für DataIdentTree-Zugriff.
|
private MultiContainerDataIterator.ContainerWalk[] |
contWalks
Liste mit Container-Walks für die einzelnen Datensatzarten.
|
static int |
DEL_FULLCOUNT
Beim Iterieren geloeschter Container werden alle Datensätze gezaehlt
|
static int |
DEL_IGNORE
Geloeschte Container werden beim Iterieren ignoriert
|
static int |
DEL_MINMAX
Beim Itererieren geloeschter Container werden nur 2 Datensätze (Min/Max) gezaehlt
|
private int |
deletedTreatment
Gibt an, wie über geloeschte Container iteriert wird,
0 : Container wird ignoriert 1 : Container wird als 2 Datensätze (Min/Max) gezaehlt 2 : Container wird voll gezaehlt |
private java.io.File |
didDir
Persistent-Verzeichnis der aktuellen Datenidentifikation.
|
private MultiContainerDataIterator.ContainerWalk |
lastContWalk
Der Container-Walk, aus dem der letzte Datensatz geliefert worden ist.
|
private static int |
NN
Datensatzart-Index.
|
private static int |
OA
Datensatzart-Index.
|
private Task |
ownerTask
Aufrufender Task.
|
private PersistenceManager |
persMgr
Persistenz-Manager für 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.
|
java.lang.String |
descPosition()
Liefert eine textuelle Beschreibung der aktuellen Position aus Verzeichnis, Container und Datensatz.
|
private int |
getContainerFileIdx(ArchiveDataKind dataKind,
int contInfoIdx)
Eindeutiger ContainerFile-Index für Persistenz-Zugriff.
|
private MultiContainerDataIterator.ContInfo[] |
getContInfos(java.io.File[] contFiles,
ArchiveDataKind dataKind)
Liefert die Container-Infos zu den uebergebenen Container-Dateien der angegebenen Datensatzart.
|
int |
getCurContFileIdx()
Liefert den ContainerFile-Index für
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(java.io.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 Datensätzen 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 Debug _debug
private static int OA
Datensatzart-Index.
private static int NN
Datensatzart-Index.
private Task ownerTask
Aufrufender Task. Wird bei Zugriffen auf die Persistenz benoetigt.
private ArchiveManager arcMgr
Archive-Manager für DataIdentTree-Zugriff.
private PersistenceManager persMgr
Persistenz-Manager für Container-Datei-Zugriff.
private java.io.File didDir
Persistent-Verzeichnis der aktuellen Datenidentifikation.
private MultiContainerDataIterator.ContainerWalk[] contWalks
Liste mit Container-Walks für die einzelnen Datensatzarten.
private MultiContainerDataIterator.ContainerWalk lastContWalk
Der Container-Walk, aus dem der letzte Datensatz geliefert worden ist.
public static final int DEL_IGNORE
Geloeschte Container werden beim Iterieren ignoriert
public static final int DEL_MINMAX
Beim Itererieren geloeschter Container werden nur 2 Datensätze (Min/Max) gezaehlt
public static final int DEL_FULLCOUNT
Beim Iterieren geloeschter Container werden alle Datensätze gezaehlt
private int deletedTreatment
Gibt an, wie über geloeschte Container iteriert wird,
0 : Container wird ignoriert
1 : Container wird als 2 Datensätze (Min/Max) gezaehlt
2 : Container wird voll gezaehlt
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
Erzeugt einen Multi-Iterator, der ueber mehrere Container und Datensatzarten laeuft und dabei als naechsten DS stets den mit dem kleinsten Index liefert.
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 Datensätzen genommen werden.on
- Kennzeichen, ob Container mit Online-Nachgeliefert erhaltenen Datensätzen genommen werden.na
- Kennzeichen, ob Container mit Nachgefordert-Aktuell erhaltenen Datensätzen genommen werden.nn
- Kennzeichen, ob Container mit Nachgefordert-Nachgeliefert erhaltenen Datensätzen 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
Erzeugt einen Multi-Iterator, der ueber mehrere Container und Datensatzarten laeuft und dabei als naechsten DS stets den mit dem kleinsten Index liefert.
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 Datensätzen genommen werden.on
- Kennzeichen, ob Container mit Online-Nachgeliefert erhaltenen Datensätzen genommen werden.na
- Kennzeichen, ob Container mit Nachgefordert-Aktuell erhaltenen Datensätzen genommen werden.nn
- Kennzeichen, ob Container mit Nachgefordert-Nachgeliefert erhaltenen Datensätzen 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
Erzeugt einen Multi-Iterator, der ueber mehrere Container und Datensatzarten laeuft und dabei als naechsten DS stets den mit dem kleinsten Index liefert.
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 Datensätze (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
Erzeugt einen Multi-Iterator, der ueber mehrere Container und Datensatzarten laeuft und dabei als naechsten DS stets den mit dem kleinsten Index liefert. Nimmt die Container aller Datensatzarten.
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 Datensätze (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
Erzeugt einen Multi-Iterator, der ueber mehrere Container und Datensatzarten laeuft und dabei als naechsten DS stets den mit dem kleinsten Index liefert.
Bei den Container-ID-Listen gilt:
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 für Online-Aktuell erhaltene Datensätze.onRes
- Liste mit Container-IDs für Online-Nachgeliefert erhaltene Datensätze.naRes
- Liste mit Container-IDs für Nachgefordert-Aktuell erhaltene Datensätze.nnRes
- Liste mit Container-IDs für Nachgefordert-Nachgeliefert erhaltene Datensätze.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
Erzeugt einen Multi-Iterator, der ueber mehrere Container und Datensatzarten laeuft und dabei als naechsten DS stets den mit dem kleinsten Index liefert.
Bei den Container-ID-Listen gilt:
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 für Online-Aktuell erhaltene Datensätze.onRes
- Liste mit Container-IDs für Online-Nachgeliefert erhaltene Datensätze.naRes
- Liste mit Container-IDs für Nachgefordert-Aktuell erhaltene Datensätze.nnRes
- Liste mit Container-IDs für Nachgefordert-Nachgeliefert erhaltene Datensätze.deletedTreatment
- Gibt an, ob geloeschte Container ignoriert werden [0], als 2 Datensätze (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
Erzeugt einen Multi-Iterator, der ueber mehrere Container und Datensatzarten laeuft und dabei als naechsten DS stets den mit dem kleinsten Index liefert.
Bei den Container-ID-Listen gilt:
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 für Online-Aktuell erhaltene Datensätze.onRes
- Liste mit Container-IDs für Online-Nachgeliefert erhaltene Datensätze.naRes
- Liste mit Container-IDs für Nachgefordert-Aktuell erhaltene Datensätze.nnRes
- Liste mit Container-IDs für Nachgefordert-Nachgeliefert erhaltene Datensätze.deletedTreatment
- Gibt an, ob geloeschte Container ignoriert werden [0], als 2 Datensätze (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
Liefert Datensatz-Iterator zurueck, der auf dem naechsten Datensatz steht.
null
wenn alle Iteratoren am Ende sindPersistenceException
public ContainerDataIterator readSkipNextDIdx() throws PersistenceException
Liefert Datensatz-Iterator zurueck, der auf dem naechsten Datensatz steht, und ueberspringt diesen Datensatz.
PersistenceException
public void close()
Schliesst den Multi-Iterator und damit auch alle noch offenen Container-Dateien.
public long getCurContID()
Liefert die Container-ID des Containers, der den letzten Datensatz geliefert hat.
public int getCurContFileIdx()
Liefert den ContainerFile-Index für PersistenceManager.getContainerHeaderParamAsLong(Task,int,KeyValParam)
des Containers, der den letzten Datensatz geliefert hat.
public java.lang.String descPosition()
Liefert eine textuelle Beschreibung der aktuellen Position aus Verzeichnis, Container und Datensatz.
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.
contWalk
- Zu iterierender Container-Walkprivate boolean accessContainer(MultiContainerDataIterator.ContainerWalk contWalk)
Oeffnet im angegebenen Container-Walk alle Container innerhalb des aktuellen Container-Walk-Indexes zum Lesen. Der ContainerDataIterator wird in jedem Container bereits auf den ersten Datensatz positioniert.
contWalk
- Container-Walktrue
falls Container zum Lesen geoeffnet werden koennen, false
sonstprivate void leaveContainer(MultiContainerDataIterator.ContainerWalk contWalk, int contWalkIdx)
Verlaesst im angegebenen Container-Walk alle Container innerhalb des angegebenen Container-Walk-Indexes.
contWalk
- Container-WalkcontWalkIdx
- Container-Walk-Indexprivate void leaveContainer(MultiContainerDataIterator.ContInfo contInfo)
Verlaesst den durch die Container-Info spezifizierten Container und markiert ihn als erledigt.
contInfo
- Zu verlassender Containerprivate MultiContainerDataIterator.ContInfo[] getContInfos(java.io.File[] contFiles, ArchiveDataKind dataKind) throws PersistenceException
Liefert die Container-Infos zu den uebergebenen Container-Dateien der angegebenen Datensatzart.
contFiles
- Liste mit Container-DateiendataKind
- Datensatzart der ContainerPersistenceException
private int getContainerFileIdx(ArchiveDataKind dataKind, int contInfoIdx)
Eindeutiger ContainerFile-Index für Persistenz-Zugriff.
private long[] getDataIdx(java.io.File contFile, long contId, ArchiveDataKind dataKind) throws PersistenceException
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 Datensätzen 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.
contFile
- Container-DateicontId
- Container-IDdataKind
- Datensatzart des ContainersPersistenceException