|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectde.bsvrz.ars.ars.mgmt.tasks.ArchiveQueryTask.Query
private class ArchiveQueryTask.Query
Klasse, die eine einzelne Unterabfrage (ArchiveDataSpecification
) aus der Archivanfrage und die zugehoerigen Daten fuer die Archivantwort kapselt.
Field Summary | |
---|---|
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. |
Constructor Summary | |
---|---|
private |
ArchiveQueryTask.Query(ArchiveDataSpecification ads,
int qIdx,
boolean requestedIntervalError)
Erzeugt eine neue Query mit dem angegebenen Index zur Bearbeitung der angegebenen Unterabfrage. |
Method Summary | |
---|---|
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) |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
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
Constructor Detail |
---|
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 sind
IndexException
PersistenceException
Method Detail |
---|
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-Walk
null
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-Info
private boolean matchesLowerBoundSearchDirectly(ArchiveQueryTask.Container contInfo)
Dies hat nichts damit zu tun, ob ein Datensatz Teil der Antwort ist.
contInfo
- Container-Info
true
, 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
- Datensatz
private boolean matchesUpperBound(ArchiveQueryTask.SimpleArchiveData sad)
sad
- Archivdatensatz
private boolean matchesLowerBound(ArchiveQueryTask.SimpleArchiveData sad)
sad
- Archivdatensatz
private boolean beforeLowerBound(ArchiveQueryTask.SimpleArchiveData sad)
sad
- Archivdatensatz
private boolean beforeUpperBound(ArchiveQueryTask.Container contInfo)
contInfo
- Informationen zu einem Ergebnis-Datencontainer
private boolean accessContainer(ArchiveQueryTask.ContWalk contWalk)
contWalk
- Container-Walk
true
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 Bereichs
private 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-Indexes
private boolean containSameData(ArchiveQueryTask.SimpleArchiveData arcData1, ArchiveQueryTask.SimpleArchiveData arcData2)
arcData1
- Erster DatensatzarcData2
- Zweiter Datensatz
private 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ätze
private 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 DID
private 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
-
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |