public class ArchiveStreamCombiner extends java.lang.Object implements ArchiveDataQueryResult
Diese Klasse bündelt bei Anfragen nach Pids eventuell mehrere Ergebnis-Streams (pro historischem Objekt) zu einem einzigen Stream (pro Pid), sodass die Streams den angefragten Daten entsprechen.
Modifier and Type | Class and Description |
---|---|
private static class |
ArchiveStreamCombiner.CombinedStream |
private static class |
ArchiveStreamCombiner.RelativeCombinedStream |
Modifier and Type | Field and Description |
---|---|
private java.util.List<java.lang.Integer> |
_numStreamsToCombine |
private java.util.List<ArchiveDataSpecification> |
_originalSpecs |
private ArchiveDataQueryResult |
_rawResult |
Constructor and Description |
---|
ArchiveStreamCombiner() |
Modifier and Type | Method and Description |
---|---|
void |
addQuery(int size,
ArchiveDataSpecification spec)
Wird mehrmals aufgerufen.
|
private ArchiveDataStream[] |
combineStreams(ArchiveDataStream[] streams) |
java.lang.String |
getErrorMessage()
Bestimmt eine Fehlernachricht, falls die entsprechende Archivanfrage nicht erfolgreich war.
|
ArchiveDataStream[] |
getStreams()
Bestimmt die Ergebnisdatenströme der entsprechenden Archivdatenspezifikationen aus der Archivanfrage.
|
boolean |
isRequestSuccessful()
Bestimmt, ob die Archivanfrage erfolgreich war.
|
void |
setRawResult(ArchiveDataQueryResult rawResult) |
private ArchiveDataQueryResult _rawResult
private java.util.List<java.lang.Integer> _numStreamsToCombine
private java.util.List<ArchiveDataSpecification> _originalSpecs
public ArchiveDataStream[] getStreams() throws java.lang.InterruptedException, java.lang.IllegalStateException
ArchiveDataQueryResult
Bestimmt die Ergebnisdatenströme der entsprechenden Archivdatenspezifikationen aus der Archivanfrage. Diese Methode wird von einer Applikation aufgerufen, um auf die Ergebnisdatenströme zuzugreifen. Eine Implementierung dieser Methode muss zu jeder Archivdatenspezifikation aus der Archivanfrage einen entsprechenden Ergebnisdatenstrom bereitstellen.
getStreams
in interface ArchiveDataQueryResult
java.lang.InterruptedException
- Falls der aufrufende Thread unterbrochen wurde, während auf die entsprechende Antwortnachricht aus dem Archivsystem gewartet wurde.java.lang.IllegalStateException
- Falls die Archivanfrage nicht erfolgreich war und keine Ergebnisdatenströme bestimmt werden können.ArchiveRequestManager.request(ArchiveQueryPriority,ArchiveDataSpecification)
,
ArchiveRequestManager.request(ArchiveQueryPriority, java.util.List)
private ArchiveDataStream[] combineStreams(ArchiveDataStream[] streams)
public boolean isRequestSuccessful() throws java.lang.InterruptedException
ArchiveQueryResult
Bestimmt, ob die Archivanfrage erfolgreich war. Die Methode wird von einer Applikation aufgerufen um festzustellen, ob die Anfrage erfolgreich war und weitere anfragespezifische Ergebnisse aus den verschiedenen abgeleiteten Interfaces abgerufen werden können oder ob die Anfrage nicht erfolgreich war und eine entsprechende Fehlermeldung über die Methode ArchiveQueryResult.getErrorMessage()
abgerufen werden kann.
isRequestSuccessful
in interface ArchiveQueryResult
true
, falls die Anfrage erfolgreich war, sonst false
.java.lang.InterruptedException
- Falls der aufrufende Thread unterbrochen wurde, während auf die entsprechende Antwortnachricht aus dem Archivsystem gewartet wurde.public java.lang.String getErrorMessage() throws java.lang.InterruptedException
ArchiveQueryResult
Bestimmt eine Fehlernachricht, falls die entsprechende Archivanfrage nicht erfolgreich war.
getErrorMessage
in interface ArchiveQueryResult
java.lang.InterruptedException
- Falls der aufrufende Thread unterbrochen wurde, während auf die entsprechende Antwortnachricht aus dem Archivsystem gewartet wurde.public void setRawResult(ArchiveDataQueryResult rawResult)
public void addQuery(int size, ArchiveDataSpecification spec)
Wird mehrmals aufgerufen. Vermerkt jeweils, wie zusammengehörige Streams zu bündeln sind.
size
- Anzahl zu bündelnder Streams, bei Anfragen ohne Pid 1spec
- Originale Anfrage