private class ArchiveQueryTask.Query extends Object
ArchiveDataSpecification
) aus der Archivanfrage und die zugehoerigen Daten fuer die Archivantwort kapselt.Modifier and Type | Field and Description |
---|---|
private ArchiveDataSpecification |
arcDataSpec
Die Archivanfrage.
|
private Map<ArchiveDataKind,ArchiveQueryTask.ContWalk> |
contWalks
Map mit Container-Walks fuer die einzelnen Datensatzarten.
|
private boolean |
done
Flag, ob Anfrage bereits erledigt ist.
|
private Boolean |
firstDataFromDeletedCont
Flag, ob der Anfangszustand aus einem geloeschten COntainer stammt.
|
private boolean |
firstDataSent
Flag, ob der Kennzeichen-Datensatz am Anfang der Antwort bereits versandt worden ist.
|
private boolean |
hasMatchingData
Flag, ob es zur angefragten Datenidentifikation ueberhaupt irgendwelche Daten im ArS gibt.
|
private ArchiveQueryTask.Container |
lastContainer
Hier wird der Container vermerkt, aus dem der zuletzt gelieferte Ergebnisdatensatz stammt.
|
private ArchiveQueryTask.SimpleArchiveData |
lastDataForDelta
Enthaelt den letzten Datensatz einer aktuellen Datensatzart fuer den Deltavergleich.
|
private int |
maxInterval
Gibt Maximum für die Anzahl von Datensätzen an, die mit einer Relativanfrage zu bekommen sind.
|
private ArchiveOrder |
order |
private int |
qIdx
Index dieser Query; entspricht dem Index des zugeordneten Streams.
|
private boolean |
rephrased |
private boolean |
requestedIntervalError
Flag zeigt an, ob der Beginnzeitpunkt der Unterabfrage zeitlich hinter dem Endzeitpunkt liegt.
|
private Map<ArchiveDataKind,ArchiveQueryTask.SimpleArchiveData> |
resultData
Map mit den naechsten Ergebnisdatensaetzen der einzelnen Datensatzarten.
|
private ArchiveTimeSpecification |
timeSpec
Der Zeit-/Indexbereich der Archivanfrage.
|
Modifier | Constructor and Description |
---|---|
private |
ArchiveQueryTask.Query(ArchiveDataSpecification ads,
int qIdx,
boolean requestedIntervalError)
Erzeugt eine neue Query mit dem angegebenen Index zur Bearbeitung der angegebenen Unterabfrage.
|
Modifier and Type | Method and Description |
---|---|
private void |
abort()
Bricht die Query ab und markiert sie als erledigt.
|
private boolean |
accessContainer(ArchiveQueryTask.ContWalk contWalk)
Oeffnet im angegebenen Container-Walk alle Container innerhalb des aktuellen Container-Walk-Indexes zum Lesen.
|
private boolean |
beforeLowerBound(ArchiveQueryTask.SimpleArchiveData sad)
Liefert Flag, ob der angegebene Datensatz vor der unteren Grenze des gesuchten Intervalls liegt.
|
private boolean |
beforeUpperBound(ArchiveQueryTask.Container contInfo)
Liefert Flag, ob der angegebene Datensatz vor der oberen Grenze des gesuchten Intervalls liegt.
|
private boolean |
containSameData(ArchiveQueryTask.SimpleArchiveData arcData1,
ArchiveQueryTask.SimpleArchiveData arcData2)
Vergleicht die beiden angegebenen Ergebnis-Datensaetze auf Gleichheit der Nutzdaten fuer die Deltaantwort.
|
long |
getAbsoluteMin(ArchiveQueryTask.Info[] infos)
Berechnet den Minimalstempel aller übergebenen Container-Infos
|
long |
getAbsoluteMin(ArchiveQueryTask.Info[] oaInfos,
ArchiveQueryTask.Info[] onInfos,
ArchiveQueryTask.Info[] naInfos,
ArchiveQueryTask.Info[] nnInfos)
Berechnet den Minimalstempel aller übergebenen Container-Infos
|
private long[] |
getAllTillMin(int i,
long minThisSpec,
ArchiveQueryTask.Info[] infos,
long end)
Anzahl der Datensätze bis zum gegebenen Minimalindex aus den entsprechenden Containern einer Datenart (spezifiziert durch Info[]) lesen und den Zähler
inkrementieren
|
private ArchiveQueryTask.Container[] |
getContainer(DataIdentNode din,
TimingType timingType,
ArchiveDataKind dataKind,
String path,
long minKey,
long maxKey)
Erstellt ein Array mit den Container-Infos der Ergebnis-Datencontainer anhand der Container-IDs aus den Indexen passend zu den angegebenen Parametern.
|
private int |
getContainerFileIdx(ArchiveDataKind dataKind,
int contInfoIdx)
Wenn ein Container geoeffnet werden soll, muss der Persistenz ein Index uebergeben werden, mit dem sie mehrere geoffnete Container (ContainerFiles) eines
Tasks unterscheiden kann.
|
private ArchiveQueryTask.SimpleArchiveData |
getEndData()
Erstellt und liefert den Ende-Kennzeichen-Datensatz zur Markierung des Endes der Archivantwort [TArS-39].
|
private ArchiveQueryTask.SimpleArchiveData |
getFirstData()
Wertet die Anfangszustaende (erster Ergebnisdatensatz) der einzelnen Datensatzarten aus und ermittelt den ersten zu sendenden Datensatz.
|
private ArchiveQueryTask.Info[] |
getInfo(File[] containers)
Infos zu Containern aus den zugehörigen Files auslesen
|
ArchiveQueryTask.Info |
getInfoCurrent(File container)
Infos zum spezifizierten Container auslesen
|
private long |
getMax(ArchiveQueryTask.Info info) |
private long |
getMin(ArchiveQueryTask.Info info)
Minimalwert der Zeit / Index der Daten im Container, der durch Info spezifiziert ist.
|
private long |
getMin(long minThisSpec,
ArchiveQueryTask.Info info)
Minimalwert der Zeit / Index der Daten im Container, der durch Info spezifiziert ist (Zeit / Index wird nur angepasst, wenn der im TimingType spezifizierte
Wert tatsächlich kleiner ist, als der, der mit minThisSpec übergeben wird)
|
private ArchiveQueryTask.SimpleArchiveData |
getNextData()
Liefert den naechsten Ergebnis-Datensatz der Unterabfrage zurueck.
|
private ArchiveQueryTask.SimpleArchiveData |
getNextData(ArchiveQueryTask.ContWalk contWalk)
Liefert den naechsten Ergebnis-Datensatz des angegebenen Container-Walks.
|
private long[] |
guessStartEnd(int anzahl)
Startwert für Relativanfrage raten, nebenbei fällt der Wert des Intervallendes, sowie das der minimale jemals archivierte Wert (bzgl.
|
private String |
ident()
Liefert einen Namen zur Identifikation dieser Unterabfrage.
|
private void |
leaveContainer(ArchiveQueryTask.Container contInfo)
Verlaesst den durch die Container-Info spezifizierten Container und markiert ihn als erledigt.
|
private void |
leaveContainer(ArchiveQueryTask.ContWalk contWalk,
int contWalkIdx)
Verlaesst im angegebenen Container-Walk alle Container innerhalb des angegebenen Container-Walk-Indexes.
|
private boolean |
matchesLowerBound(ArchiveQueryTask.SimpleArchiveData sad)
Liefert Flag, ob der angegebene Datensatz genau auf der unteren Grenze des gesuchten Intervalls liegt.
|
private boolean |
matchesLowerBoundSearchDirectly(ArchiveQueryTask.Container contInfo)
Ermittelt, ob der aktuell im ContainerDataIterator der angegebenen ContInfo befindliche Datensatz die Suchkriterien der Query bezüglich der unteren
Intervallgrenze direkt erfuellt.
|
private boolean |
matchesSearchDirectly(ArchiveQueryTask.Container contInfo)
Liefert Flag, ob der aktuell im ContainerDataIterator der angegebenen ContInfo befindliche Datensatz die Suchkriterien der Query direkt erfuellt.
|
private boolean |
matchesSearchDirectly(ArchiveQueryTask.SimpleArchiveData sad)
Liefert Flag, ob der uebergebene Datensatz die Suchkriterien der Query direkt erfuellt.
|
private boolean |
matchesUpperBound(ArchiveQueryTask.SimpleArchiveData sad)
Liefert Flag, ob der angegebene Datensatz genau auf der oberen Grenze des gesuchten Intervalls liegt.
|
private ArchiveQueryTask.SimpleArchiveData |
mixNextData()
Liefert den naechsten zu sendenden Datensatz, wobei dieser aus den naechsten zu sendenden Datensaetzen der verschiedenen Datensatzarten ausgewaehlt wird
("Mischen") [TArS-44].
|
private void |
rephraseQuery()
Für Relativanfragen müssen von einem Endezeitpunkt an X vorherige Datensätze geliefert werden.
|
private File[] |
sortContainersById(File[] files)
Sortiert ein Array von ContainerFiles nach ihrer ID (absteigend)
|
private ArchiveDataSpecification arcDataSpec
private ArchiveTimeSpecification timeSpec
private ArchiveOrder order
private int qIdx
private boolean requestedIntervalError
private boolean hasMatchingData
private Map<ArchiveDataKind,ArchiveQueryTask.ContWalk> contWalks
private Map<ArchiveDataKind,ArchiveQueryTask.SimpleArchiveData> resultData
private boolean firstDataSent
private Boolean firstDataFromDeletedCont
private boolean done
private ArchiveQueryTask.Container lastContainer
private ArchiveQueryTask.SimpleArchiveData lastDataForDelta
null
enthalten.private int maxInterval
private boolean rephrased
private ArchiveQueryTask.Query(ArchiveDataSpecification ads, int qIdx, boolean requestedIntervalError) throws PersistenceException, IndexException
ads
- Unterabfrage, die diese Query bearbeitetqIdx
- Index der Query; entspricht dem Index des zugeordneten Streams.requestedIntervalError
- Zeigt an, ob die Grenzen des Abfrage-Intervalls vertauscht sindIndexException
PersistenceException
private String ident()
private ArchiveQueryTask.SimpleArchiveData getNextData()
null
falls keiner mehr zu liefern ist.private ArchiveQueryTask.SimpleArchiveData getFirstData()
private ArchiveQueryTask.SimpleArchiveData mixNextData()
null
falls keiner mehr zu liefern istprivate ArchiveQueryTask.SimpleArchiveData getNextData(ArchiveQueryTask.ContWalk contWalk)
contWalk
- Container-Walknull
falls keiner mehr zu liefern.private ArchiveQueryTask.SimpleArchiveData getEndData()
private boolean matchesSearchDirectly(ArchiveQueryTask.Container contInfo)
Dies hat nichts damit zu tun, ob ein Datensatz Teil der Antwort ist.
contInfo
- Container-Infoprivate boolean matchesLowerBoundSearchDirectly(ArchiveQueryTask.Container contInfo)
Dies hat nichts damit zu tun, ob ein Datensatz Teil der Antwort ist.
contInfo
- Container-Infotrue
, falls der aktuelle Datensatz auf oder nach der unteren Intervallgrenze liegt.private boolean matchesSearchDirectly(ArchiveQueryTask.SimpleArchiveData sad)
Dies hat nichts damit zu tun, ob ein Datensatz Teil der Antwort ist.
sad
- Datensatzprivate boolean matchesUpperBound(ArchiveQueryTask.SimpleArchiveData sad)
sad
- Archivdatensatzprivate boolean matchesLowerBound(ArchiveQueryTask.SimpleArchiveData sad)
sad
- Archivdatensatzprivate boolean beforeLowerBound(ArchiveQueryTask.SimpleArchiveData sad)
sad
- Archivdatensatzprivate boolean beforeUpperBound(ArchiveQueryTask.Container contInfo)
contInfo
- Informationen zu einem Ergebnis-Datencontainerprivate boolean accessContainer(ArchiveQueryTask.ContWalk contWalk)
contWalk
- Container-Walktrue
falls Container zum Lesen geoeffnet werden koennen, false
sonstprivate void abort()
private void leaveContainer(ArchiveQueryTask.ContWalk contWalk, int contWalkIdx)
contWalk
- Container-WalkcontWalkIdx
- Container-Walk-Indexprivate void leaveContainer(ArchiveQueryTask.Container contInfo)
contInfo
- Zu verlassender Containerprivate ArchiveQueryTask.Container[] getContainer(DataIdentNode din, TimingType timingType, ArchiveDataKind dataKind, String path, long minKey, long maxKey)
din
- DataIdentNode zur angefragten DatenidentifikationtimingType
- Archivzeit, Datenzeit oder DatenindexdataKind
- Datensatzartpath
- Pfad zum ContainerverzeichnisminKey
- Untere Grenze des BereichsmaxKey
- Obere Grenze des Bereichsprivate int getContainerFileIdx(ArchiveDataKind dataKind, int contInfoIdx)
dataKind
- Datensatzart zur Adressierung des Container-Walks dieser DatensatzartcontInfoIdx
- Index der Container-Info des zu oeffnenden Containers innerhalb des aktuellen ContainerWalk-Indexesprivate boolean containSameData(ArchiveQueryTask.SimpleArchiveData arcData1, ArchiveQueryTask.SimpleArchiveData arcData2)
arcData1
- Erster DatensatzarcData2
- Zweiter Datensatzprivate File[] sortContainersById(File[] files)
files
- public long getAbsoluteMin(ArchiveQueryTask.Info[] oaInfos, ArchiveQueryTask.Info[] onInfos, ArchiveQueryTask.Info[] naInfos, ArchiveQueryTask.Info[] nnInfos)
oaInfos
- onInfos
- naInfos
- nnInfos
- public long getAbsoluteMin(ArchiveQueryTask.Info[] infos)
infos
- private long[] guessStartEnd(int anzahl)
anzahl
- Anzahl der gewünschten Datensätzeprivate long[] getAllTillMin(int i, long minThisSpec, ArchiveQueryTask.Info[] infos, long end)
i
- Zähler-Startwert (Container sind absteigend sortiert)minThisSpec
- bisheriger Minimalwert der Zeit / Index (abhängig vom TimingType)infos
- Infos zu Containern einer Datenart zur DIDprivate void rephraseQuery()
private long getMin(long minThisSpec, ArchiveQueryTask.Info info)
minThisSpec
- info
- private long getMin(ArchiveQueryTask.Info info)
info
- private long getMax(ArchiveQueryTask.Info info)
private ArchiveQueryTask.Info[] getInfo(File[] containers)
containers
- public ArchiveQueryTask.Info getInfoCurrent(File container)
container
-