de.bsvrz.dav.daf.main.impl.config.request
Class RemoteRequestManager.RemoteRequester

java.lang.Object
  extended by de.bsvrz.dav.daf.main.impl.config.request.RemoteRequestManager.RemoteRequester
All Implemented Interfaces:
ConfigurationRequester
Enclosing class:
RemoteRequestManager

private static class RemoteRequestManager.RemoteRequester
extends Object
implements ConfigurationRequester

Klasse, die Anfragen an eine entfernte Konfiguration implementiert.


Field Summary
private  ClientDavInterface _connection
          Verbidung zum Datenverteiler.
private  EncryptDecryptProcedure _encryptDecryptProcedure
           
private  DataModel _localConfiguration
           
(package private)  SenderReceiverCommunication _senderConfigAreaTask
          Beauftragt die Konfiguration bestimmte Bereiche zu modifizieren/prüfen
(package private)  SenderReceiverCommunication _senderReadConfigObjects
          Objekt, das Konfigurationsanfragen stellt und die Antwort der Konfigurations verarbeitet und zur Verfügung stellt.
(package private)  SenderReceiverCommunication _senderUserAdministration
          Objekt, das es ermöglicht die Benutzer einer Konfigurations zu verwalten (Benutzer erstellen, Passwörter ändern, usw.).
(package private)  SenderReceiverCommunication _senderWriteConfigObjects
          Objekt, das Konfigurationsanfragen erstellt und die Antwort der Konfiguration zur Verfügung stellt.
private  int _systemModelVersion
           
 
Constructor Summary
RemoteRequestManager.RemoteRequester(ClientDavInterface connection, DataModel localConfiguration, ConfigurationAuthority configurationAuthority, SystemObject localApplication)
           
 
Method Summary
 ConsistencyCheckResultInterface activateConfigurationAreas(Collection<ConfigAreaAndVersion> configurationAreas)
          Die Implementierung dieser Methode beauftragt die Konfiguration die angebenen Konfigurationsbereiche zu aktivieren (siehe TPuK1-142).
 void changeElements(ObjectSet set, SystemObject[] addElements, SystemObject[] removeElements)
          Mittels dieser Methode lassen sich Mengen verändern.
 void changeUserPassword(String orderer, String ordererPassword, String user, String newPassword)
          Beauftragt die Konfiguration das Passwort eines Benutzers zu ändern.
 void changeUserRights(String orderer, String ordererPassword, String user, boolean adminRights)
          Beauftragt die Konfiguration die Rechte eines Benutzers zu ändern.
 ConsistencyCheckResultInterface checkConsistency(Collection<ConfigAreaAndVersion> configurationAreas)
          Die Implementierung dieser Methode beauftragt die Konfiguration alle Konfigurationsbereiche einer Konsistenzprüfung zu unterziehen (siehe TPuK1-138).
private  boolean checkSystemModellVersion(int requiredVersion, String errorMessage)
           
 void close()
          Teilt einem Request mit, dass er sich beenden soll
private  void closeConnectionAndThrowException(Exception e)
          Nimmt eine beliebige Exception entgegen und meldet dann die Verbindung zum Datenverteiler ab.
 ConfigurationArea createConfigurationArea(String name, String pid, String authorityPid)
          Die Implementierung dieser Methode legt einen neuen Konfigurationsbereich in der lokalen Konfiguration an.
 ConfigurationObject createConfigurationObject(ConfigurationArea configurationArea, ConfigurationObjectType type, String pid, String name, List<ObjectSet> sets)
          Verschickt an eine entfernte Konfiguration einen Auftrag ein Konfigurationsobjekt anzulegen.
 DynamicObject createDynamicObject(ConfigurationArea configurationArea, DynamicObjectType type, String pid, String name)
          Verschickt an eine entfernte Konfiguration einen Auftrag ein dynamisches Objekt anzulegen.
 DynamicObject createDynamicObject(ConfigurationArea configurationArea, DynamicObjectType type, String pid, String name, List<DataAndATGUsageInformation> data)
          * Verschickt an eine entfernte Konfiguration einen Auftrag ein dynamisches Objekt anzulegen.
 void createNewUser(String orderer, String ordererPassword, String newUsername, String newUserPid, String newPassword, boolean adminRights, String pidConfigurationArea)
          Beauftragt die Konfiguration ein neues Benutzerkonto anzulegen.
 void createSingleServingPassword(String orderer, String ordererPassword, String username, String singleServingPassword)
          Beauftragt die Konfiguration ein Einmal-Passwort zu erzeugen.
private  byte[] createTelegramByteArray(int messageType, int serializerVersion, byte[] messageCleartext, String encryptionText)
          Erzeugt ein kodiertes Byte-Array, das folgenden Aufbau besitzt:
- benutzte Serialisiererversion(Wert ist nicht serialisiert) (ersten 4 Bytes)
- Typ des Pakets (int)
- Länge des Zufallstexts (int) - Zufallstext (byte[]) - übergebenes Byte-Array messageCleartext
 SystemObject duplicate(SystemObject systemObject, Map<String,String> substitutePids)
          Verschickt an eine entfernte Konfiguration einen Auftrag die Kopie eines Objekts zu erstellen.
 void editConfigurationSet(ConfigurationObject configurationObject, ObjectSet set, boolean addSet)
           
private  void ensureSystemModellVersion(int requiredVersion, String errorMessage)
           
 void exportConfigurationAreas(File exportPath, Collection<String> configurationAreaPids)
          Die Implementierung dieser Methode exportiert aus der bestehenden Konfiguration die Versorgungsdateien zu den angegebenen Pids in das angegebene Verzeichnis.
 short getActiveVersion(ConfigurationArea configurationArea)
          Fordert für den angegebenen Bereich die Version an, in der der Bereich aktiv ist.
 Map<String,ConfigurationArea> getAllConfigurationAreas()
          Alle Konfigurationsbereichseinträge in der Verwaltungsdatei werden zurückgegeben.
private  Map<String,ConfigurationArea> getAllConfigurationAreasResult(Deserializer deserializer)
          Ließt aus einem Deserialier die Antwort auf eine Konfigurationsbereichsanfrage aus.
 byte[][] getConfigurationData(SystemObject[] systemObject, AttributeGroupUsage attributeGroupUsage)
          Liefert für die angegebenen Systemobjekte jeweils einen konfigurierenden Datensatz der angegebenen Attributgruppenverwendung zurück.
private  ConsistencyCheckResultInterface getConsistencyCheckResult(Deserializer deserializer)
          Ließt aus einem Deserialier die Antwort auf eine Konfigurationsbereichsanfrage aus.
private  ConsistencyCheckResultEntry getConsistencyCheckResultEntry(Deserializer deserializer, ConsistencyCheckResultEntryType type)
          Ließt ein serialisiertes ConsistencyCheckResultEntry aus einem Deserializer aus
private  ConfigurationArea getCreateConfigurationAreaResult(Deserializer deserializer)
          Ließt aus einem Deserialisierer eine Id und erzeugt das dazugehörige Objekt
 Collection<SystemObject> getDirectObjects(ConfigurationArea area, Collection<SystemObjectType> systemObjectTypes, ObjectTimeSpecification timeSpecification)
          Stellt eine Anfrage an eine entferne Konfiguration und fordert die Objekte an, die direkt von den übergebenen Typen abstammen.
 SystemObject[] getElements(MutableSet set, long startTime, long endTime, boolean validDuringEntirePeriod)
          Liefert alle Elemente einer Dynamischen Menge.
(package private)  Deserializer getMessageDeserializer(Data reply, String expectedMessageType)
          Prüft ein Data ob es den richtigen Nachrichtentyp enthält.
(package private)  Deserializer getMessageDeserializer2(Data reply, String expectedMessageType)
          Prüft ein Data ob es den richtigen Nachrichtentyp enthält.
 short getModifiableVersion(ConfigurationArea configurationArea)
          Neue Version eines Bereichs, die weder zur Übernahme freigegeben noch lokal aktiviert ist.
 List<SystemObject> getNewObjects(ConfigurationArea configurationArea)
          Beauftragt die Konfiguration alle neuen Objekte eine Konfigurationsbereichs zurückzugeben.
 SystemObject getObject(long id)
          Liefert das System-Objekt mit der angegebenen Objekt-ID zurück.
 SystemObject getObject(String pid)
          Liefert das System-Objekt mit der angegebenen PID zurück.
 Collection<SystemObject> getObjects(Collection<ConfigurationArea> configurationAreas, Collection<SystemObjectType> systemObjectTypes, ObjectTimeSpecification objectTimeSpecification)
          Stellt eine Anfrage an eine entfernte Konfiguration und gibt die Objekte zurück, die in einem der angegebenen Konfigurationsbereiche sind und deren Objekttyp in der angegebenen Objekttyp-Menge ist.
 Collection<SystemObject> getObjects(String pid, long startTime, long endTime)
          Verschickt an eine entfernte Konfiguration einen Anfrage, in der alle Objekte, die zu einer Pid gehören, zurückgegeben werden, die im angegebenen Zeitbereich gültig waren.
private  byte[] getRandomText()
          Fordert von der Konfiguration ein Zufallstext an, dieser wird dann mit einem Auftrag versendet
private  SystemObject getReplyObject(Data reply)
           
 Collection<SystemObject> getSetElements(ObjectSet set, ObjectTimeSpecification objectTimeSpecification)
          Verschickt eine Anfrage an die Konfigration alle Elemente einer Menge zurückzugeben, die zu einem Zeitpunkt/Zeitbereich aktiv waren.
 Collection<SystemObject> getSetElementsInAllVersions(ObjectSet set, short fromVersion, short toVersion)
          Verschickt einen Auftrag an die Konfiguration alle Elemente einer Menge zurückzugeben, die im angegebenen Versionsbereich durchgängig gültig gewesen sind.
 Collection<SystemObject> getSetElementsInAnyVersions(ObjectSet set, short fromVersion, short toVersion)
          Verschickt einen Auftrag an die Konfiguration alle Elemente einer Menge zurückzugeben, die im angegebnen Versionsbereich gültig waren.
 Collection<SystemObject> getSetElementsInNextVersion(ObjectSet set)
          Verschickt einen Auftrag an die Konfiguration alle Elemente zurückzugeben, die in der nächsten Version gültig werden.
 Collection<SystemObject> getSetElementsInVersion(ObjectSet set, short version)
          Verschickt einen Auftrag an die Konfiguration alle Elemente einer Menge, die in der angegebenen Version gültig gewesen sind, zurückzugeben.
 int getSystemModelVersion()
           
 void importConfigurationAreas(File importPath, Collection<String> configurationAreaPids)
          Die Implementierung dieser Methode importiert die Versorgungsdateien der angegebenen Pids vom angegebenen Verzeichnis in die bestehende Konfiguration.
private  List<SystemObject> readSystemObjectList(Deserializer deserializer)
           
 void releaseConfigurationAreasForActivation(Collection<ConfigAreaAndVersion> configurationAreas)
          Die Implementierung dieser Methode beauftragt die Konfiguration die angegebenen Konfigurationsbereiche in den Status "Freigabe zur Aktivierung" zu überführen.
 ConsistencyCheckResultInterface releaseConfigurationAreasForActivationWithoutCAActivation(Collection<ConfigAreaAndVersion> configurationAreas)
          Beauftragt die Konfiguration die angegebenen Bereiche in den vorgegebenen Version für andere Konfiguraiton zur Aktivierung freizugeben obwohl die Bereiche durch den Konfigurationsverantwortlichen der Bereiche noch nicht lokal aktiviert wurden.
 ConsistencyCheckResultInterface releaseConfigurationAreasForTransfer(Collection<ConfigAreaAndVersion> configurationAreas)
          Die Implementierung dieser Methode beauftragt die Konfiguration die angebenen Konfigurationsbereiche in den Status "Freigabe zur Übernahme" zu überführen (siehe TPuK1-143).
private  Data sendConfigAreaTask(String messageType, byte[] message)
          Diese Methode verschickt ein Telegramm.
private  List<SystemObject> sendSetElementVersionRequest(ObjectSet systemObjectType, KindOfVersion kindOfVersion, short fromVersion, short toVersion)
          Verschickt ein Telegramm an die Konfiguration und ermittelt alle Elemente einer Menge unter Berücksichtigung der übergebenen Versionen.
private  void sendUserAdministrationTask(byte[] message)
          Diese Methode verschickt ein Telegramm vom Typ "AuftragBenutzerverwaltung" und wartet anschließend auf die Antwort.
private  byte[] serializeConfigAndVersion(Collection<ConfigAreaAndVersion> configurationAreas)
          Erstellt mit einem Serialisierer ein Byte-Array, das Konfigurationsbereiche und dazugehörige Versionen enthält.
private  byte[] serializeImportExportTask(File path, Collection<String> configurationAreaPids)
          Serialisiert einen String und eine Collection von Pids
private  void serializeKindOfVersion(Serializer serializer, KindOfVersion kindOfVersion, short fromVersion, short toVersion)
          Serialisert die übergebenen Parameter.
private  void serializeObjectTimeSpezifikation(Serializer serializer, ObjectTimeSpecification timeSpecification)
          Serialisiert eine ObjectTimeSpecification.
private  byte[] serializeStrings(String stringOne, String stringTwo, String stringThree)
          Erzeugt mit einem Serializer ein byte-Array, das drei Strings enthält
 void setConfigurationData(AttributeGroupUsage attributeGroupUsage, SystemObject systemObject, byte[] data)
          Legt an einem Objekt einen konfigurierenden Datensatz fest.
 void setMutableCollectionChangeListener(MutableCollectionChangeListener notifyingMutableCollectionChangeListener)
          Setzt den Listener zur Verarbeitung und Verteilung von Aktualisierungsnachrichten bzgl.
 void subscribe(MutableSet set, long time)
          Meldet die Dynamische Menge bei der Konfiguration an, um sie immer auf dem neuesten Stand zu halten.
 int subscribeConfigurationCommunicationChanges(SystemObject object)
           
 Collection<SystemObject> subscribeMutableCollectionChanges(MutableCollection mutableCollection, short simVariant)
          Sendet ein Anmeldungstelgramm für Aktualisierungsnachrichten bzgl.
 void unsubscribe(MutableSet set)
          Meldet die Dynamische Menge bei der Konfiguration auf Änderungen wieder ab.
 void unsubscribeConfigurationCommunicationChanges(SystemObject object)
           
 void unsubscribeMutableCollectionChanges(MutableCollection mutableCollection, short simVariant)
          Sendet ein Abmeldungstelgramm zu einer vorher getätigten Anmeldung für Aktualisierungsnachrichten bzgl.
private  DynamicObject waitForResponseAndDeserializeDynamicObject(int requestIndex)
          Diese Methode wird aufgerufen, wenn ein dynamiches Objekt angelegt werden soll und die Antwort erwartet wird.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_localConfiguration

private final DataModel _localConfiguration

_encryptDecryptProcedure

private EncryptDecryptProcedure _encryptDecryptProcedure

_senderReadConfigObjects

SenderReceiverCommunication _senderReadConfigObjects
Objekt, das Konfigurationsanfragen stellt und die Antwort der Konfigurations verarbeitet und zur Verfügung stellt. Es werden nur Konfigurationsanfragen gestellt, die lesenden Zugriff auf die Konfigurations erlauben.


_senderWriteConfigObjects

SenderReceiverCommunication _senderWriteConfigObjects
Objekt, das Konfigurationsanfragen erstellt und die Antwort der Konfiguration zur Verfügung stellt. Es werden Konfigurationsanfragen gestellt, die die Konfigurations veranlassen Objekt in der Konfiguration zu ändern.


_senderUserAdministration

SenderReceiverCommunication _senderUserAdministration
Objekt, das es ermöglicht die Benutzer einer Konfigurations zu verwalten (Benutzer erstellen, Passwörter ändern, usw.).


_senderConfigAreaTask

SenderReceiverCommunication _senderConfigAreaTask
Beauftragt die Konfiguration bestimmte Bereiche zu modifizieren/prüfen


_connection

private final ClientDavInterface _connection
Verbidung zum Datenverteiler. Wird benötigt um die Verbindung zum Datenverteiler abzumelden, falls es bei Anfragen zu schweren Fehlern gekommen ist.


_systemModelVersion

private int _systemModelVersion
Constructor Detail

RemoteRequestManager.RemoteRequester

public RemoteRequestManager.RemoteRequester(ClientDavInterface connection,
                                            DataModel localConfiguration,
                                            ConfigurationAuthority configurationAuthority,
                                            SystemObject localApplication)
Method Detail

close

public void close()
Teilt einem Request mit, dass er sich beenden soll


getReplyObject

private SystemObject getReplyObject(Data reply)
                             throws RequestException
Throws:
RequestException

getMessageDeserializer

Deserializer getMessageDeserializer(Data reply,
                                    String expectedMessageType)
                              throws RequestException
Prüft ein Data ob es den richtigen Nachrichtentyp enthält. Ist das Data vom richtigen Typ, wird das Byte-Array des Data´s genommen und einem Deserialisierer übergeben.

Parameters:
reply - Antwort der Konfiguration auf einen Konfigurationsanfrage
expectedMessageType - Typ des Telegramms, den die Konfiguration verschickt, wenn der Auftrag ohne Probleme bearbeitet werden konnte
Returns:
Objekt, über das Daten ausgelesen werden können
Throws:
RequestException - Technischer Fehler auf Seiten der Konfiguration oder auf Seiten des Clients bei der Übertragung des Auftrags. Dieser Fehler ist nicht zu beheben.

getMessageDeserializer2

Deserializer getMessageDeserializer2(Data reply,
                                     String expectedMessageType)
                               throws RequestException,
                                      ConfigurationTaskException,
                                      ConfigurationChangeException
Prüft ein Data ob es den richtigen Nachrichtentyp enthält. Ist das Data vom richtigen Typ, wird das Byte-Array des Data´s genommen und einem Deserialisierer übergeben.

Parameters:
reply - Antwort der Konfiguration auf einen Konfigurationsanfrage
expectedMessageType - Typ des Telegramms, den die Konfiguration verschickt, wenn der Auftrag ohne Probleme bearbeitet werden konnte
Returns:
Objekt, über das Daten ausgelesen werden können
Throws:
RequestException - Technischer Fehler auf Seiten der Konfiguration oder auf Seiten des Clients bei der Übertragung des Auftrags. Dieser Fehler ist nicht zu beheben.
ConfigurationChangeException - Der Auftrag wurde von der Konfiguration empfangen, allerdings weigert sich die Konfiguration die Änderung auszuführen. Dies kann unterschiedliche Gründe haben (mangelnde Rechte, Randbediengungen nicht erfüllt, usw.), aber in allen Fällen können weitere Anfragen gestellt werden.
ConfigurationTaskException - Der Auftrag wurde von der Konfiguration empfangen, allerdings konnte die Konfiguration den Auftrag nicht ausführen, weil bestimmte aufgabenspezifische Randbediengungen nicht erfüllt wurde.

getObject

public SystemObject getObject(String pid)
                       throws RequestException
Description copied from interface: ConfigurationRequester
Liefert das System-Objekt mit der angegebenen PID zurück.

Specified by:
getObject in interface ConfigurationRequester
Parameters:
pid - Die permanente ID des System-Objekts
Returns:
Das gewünschte System-Objekt oder null, wenn es kein Objekt mit der angegebenen PID gibt.
Throws:
RequestException - Wenn bei der Kommunikation mit der Konfiguration Fehler aufgetreten sind.

getObject

public SystemObject getObject(long id)
                       throws RequestException
Description copied from interface: ConfigurationRequester
Liefert das System-Objekt mit der angegebenen Objekt-ID zurück.

Specified by:
getObject in interface ConfigurationRequester
Parameters:
id - Die Objekt-ID des System-Objekts
Returns:
Das gewünschte System-Objekt oder null, wenn es kein Objekt mit der angegebenen ID gibt.
Throws:
RequestException - Wenn bei der Kommunikation mit der Konfiguration Fehler aufgetreten sind.

getElements

public SystemObject[] getElements(MutableSet set,
                                  long startTime,
                                  long endTime,
                                  boolean validDuringEntirePeriod)
                           throws RequestException
Description copied from interface: ConfigurationRequester
Liefert alle Elemente einer Dynamischen Menge. Durch Angabe der Start- und Endzeitpunkte kann eine Periode angegeben werden, in der die Elemente gültig gewesen sein müssen. Sind die beiden Zeitpunkte identisch, dann werden die Elemente zurückgegeben, die zum angegebenen Zeitpunkt gültig waren bzw. sind. Mit dem letzten Parameter kann angegeben werden, ob die Elemente während des gesamten Zeitraumes gültig gewesen sein müssen oder ob sie innerhalb des Zeitraumes wenigstens einmal gültig gewesen sein mussten.

Specified by:
getElements in interface ConfigurationRequester
Parameters:
set - die Dynamische Menge
startTime - Startzeitpunkt des zu betrachtenden Zeitraumes
endTime - Endzeitpunkt des zu betrachtenden Zeitraumes
validDuringEntirePeriod - ob die Elemente während des gesamten Zeitraumes gültig gewesen sein müssen
Returns:
die geforderten Elemente der Dynamischen Menge
Throws:
RequestException - Wenn bei der Kommunikation mit der Konfiguration Fehler aufgetreten sind.

changeElements

public void changeElements(ObjectSet set,
                           SystemObject[] addElements,
                           SystemObject[] removeElements)
                    throws RequestException,
                           ConfigurationException,
                           ConfigurationChangeException
Description copied from interface: ConfigurationRequester
Mittels dieser Methode lassen sich Mengen verändern. Es können Elemente hinzugefügt und/oder entfernt werden.

Specified by:
changeElements in interface ConfigurationRequester
Parameters:
set - Menge, in der Elemente hinzugefügt und/oder gelöscht werden können
addElements - Elemente, die der Menge hinzugefügt werden sollen. Sollen keine Elemente hinzugefügt werden, muss null übergeben werden.
removeElements - Elemente, die aus der Menge entfernt werden sollen. Sollen keine Elemente entfernt werden, muss null übergeben werden.
Throws:
RequestException - Wenn bei der Kommunikation mit der Konfiguration Fehler aufgetreten sind.
ConfigurationChangeException - Wenn eines der übergebenen Objekte nicht in die Menge aufgenommen werden konnte und noch nicht in der Menge enthalten war.
ConfigurationException

subscribe

public void subscribe(MutableSet set,
                      long time)
               throws RequestException
Description copied from interface: ConfigurationRequester
Meldet die Dynamische Menge bei der Konfiguration an, um sie immer auf dem neuesten Stand zu halten.

Specified by:
subscribe in interface ConfigurationRequester
Parameters:
set - die Dynamische Menge
time - Zeitpunkt, ab wann die Dynamische Menge auf Änderungen angemeldet werden soll.
Throws:
RequestException - Wenn Fehler beim Versand des Telegramms oder bei der Verarbeitung der entsprechenden Antwort aufgetreten sind.

unsubscribe

public void unsubscribe(MutableSet set)
                 throws RequestException
Description copied from interface: ConfigurationRequester
Meldet die Dynamische Menge bei der Konfiguration auf Änderungen wieder ab.

Specified by:
unsubscribe in interface ConfigurationRequester
Parameters:
set - die Dynamische Menge
Throws:
RequestException - Wenn Fehler beim Versand des Telegramms oder bei der Verarbeitung der entsprechenden Antwort aufgetreten sind.

subscribeMutableCollectionChanges

public Collection<SystemObject> subscribeMutableCollectionChanges(MutableCollection mutableCollection,
                                                                  short simVariant)
                                                           throws RequestException
Description copied from interface: ConfigurationRequester
Sendet ein Anmeldungstelgramm für Aktualisierungsnachrichten bzgl. Änderungen der Elemente von dynamischen Mengen bzw. dynamischen Typen und nimmt ein Anworttelegramm mit dem aktuellen Stand der dynamischen Zusammenstellung entgegen.

Specified by:
subscribeMutableCollectionChanges in interface ConfigurationRequester
Parameters:
mutableCollection - dynamische Menge oder dynamischer Typ, dessen Änderungen von Interesse sind.
simVariant - Simulationsvariante unter der die dynamische Menge oder der dynamische Typ betrachtet werden soll.
Returns:
Aktuelle Elemente der dynamischen Zusammenstellung zum Zeitpunkt der Anmeldung
Throws:
RequestException - Wenn Fehler beim Versand des Telegramms oder bei der Verarbeitung der entsprechenden Antwort aufgetreten sind.

unsubscribeMutableCollectionChanges

public void unsubscribeMutableCollectionChanges(MutableCollection mutableCollection,
                                                short simVariant)
                                         throws RequestException
Description copied from interface: ConfigurationRequester
Sendet ein Abmeldungstelgramm zu einer vorher getätigten Anmeldung für Aktualisierungsnachrichten bzgl. Änderungen der Elemente von dynamischen Mengen bzw. dynamischen Typen.

Specified by:
unsubscribeMutableCollectionChanges in interface ConfigurationRequester
Parameters:
mutableCollection - dynamische Menge oder dynamischer Typ der zugehörigen Anmeldung.
simVariant - Simulationsvariante der zugehörigen Anmeldung.
Throws:
RequestException - Wenn Fehler beim Versand des Telegramms oder bei der Verarbeitung der entsprechenden Antwort aufgetreten sind.

subscribeConfigurationCommunicationChanges

public int subscribeConfigurationCommunicationChanges(SystemObject object)
                                               throws RequestException
Specified by:
subscribeConfigurationCommunicationChanges in interface ConfigurationRequester
Throws:
RequestException

unsubscribeConfigurationCommunicationChanges

public void unsubscribeConfigurationCommunicationChanges(SystemObject object)
                                                  throws RequestException
Specified by:
unsubscribeConfigurationCommunicationChanges in interface ConfigurationRequester
Throws:
RequestException

getConfigurationData

public byte[][] getConfigurationData(SystemObject[] systemObject,
                                     AttributeGroupUsage attributeGroupUsage)
                              throws RequestException
Liefert für die angegebenen Systemobjekte jeweils einen konfigurierenden Datensatz der angegebenen Attributgruppenverwendung zurück.

Specified by:
getConfigurationData in interface ConfigurationRequester
Parameters:
systemObject - Array mit Systemobjekten für die Datensätze abgefragt werden sollen.
attributeGroupUsage - Attributgruppenverwendung, die Attributgruppe und Aspekt des Datensatzes festlegt.
Returns:
Array das für jedes angefragte Systemobjekt einen entsprechenden konfigurierenden Datensatz enthält. Ein Datensatz ist entweder ein Byte-Array das mit der Serialisiererversion 2 erzeugt wurde, oder null, wenn für das jeweilige Systemobjekt kein Datensatz existiert.
Throws:
RequestException - Wenn bei der Kommunikation mit der Konfiguration Fehler aufgetreten sind.
See Also:
SerializingFactory

setConfigurationData

public void setConfigurationData(AttributeGroupUsage attributeGroupUsage,
                                 SystemObject systemObject,
                                 byte[] data)
                          throws ConfigurationChangeException,
                                 RequestException
Description copied from interface: ConfigurationRequester
Legt an einem Objekt einen konfigurierenden Datensatz fest.

Specified by:
setConfigurationData in interface ConfigurationRequester
Parameters:
attributeGroupUsage - Attributgruppenverwendung
systemObject - Objekt, für das der konfigurierende Datensatz gedacht ist
data - Datensatz, der mit einem Serialisierer(Version2) in ein byte-Array zerlegt wurde. Soll ein Datensatz gelöscht werden, wird ein byte-Array der Größe 0 übergeben.
Throws:
ConfigurationChangeException - Die Konfiguration konnte den Datensatz nicht dem übergebenen Systemobjekt hinzufügen/entfernen. Ein Grund wäre zum Beispiel, dass der Konfigurationsverantwortliche nicht die Rechte besitzt Datensätze an dem Objekt zu ändern.
RequestException - Fehler bei der Übertragung. Entweder konnte der Auftrag nicht verschickt werden oder die Antwort der Konfiguration konnte nicht entschlüsselt werden.

sendUserAdministrationTask

private void sendUserAdministrationTask(byte[] message)
                                 throws RequestException,
                                        ConfigurationTaskException
Diese Methode verschickt ein Telegramm vom Typ "AuftragBenutzerverwaltung" und wartet anschließend auf die Antwort.

Parameters:
message - Nachricht, die verschickt werden soll
Throws:
RequestException - Fehler bei der Bearbeitung des Telegramms (Der Benutzer hatte nicht die nötigen Rechte diesen Auftrag zu erteilen, usw.)
ConfigurationTaskException

closeConnectionAndThrowException

private void closeConnectionAndThrowException(Exception e)
Nimmt eine beliebige Exception entgegen und meldet dann die Verbindung zum Datenverteiler ab. Nach der Abmeldung wird eine IllegalStateException geworfen.

Parameters:
e - Grund, warum die Verbindung abgebrochen werden muss

createSingleServingPassword

public void createSingleServingPassword(String orderer,
                                        String ordererPassword,
                                        String username,
                                        String singleServingPassword)
                                 throws ConfigurationTaskException
Description copied from interface: ConfigurationRequester
Beauftragt die Konfiguration ein Einmal-Passwort zu erzeugen. Der Auftrag muss verschlüsselt übertragen werden, das Passwort des Auftraggebers ordererPassword wird zum verschlüsseln der Nachricht benutzt und darf nicht übertragen werden. In der verschlüsselten Nachricht ist ausserdem ein Zufallstext enthalten, der von der Konfiguration angefordert werden muss.

Damit dieser Auftrag ausgeführt werden kann, muss der Auftraggeber orderer besondere Rechte besitzen. Besitzt der Auftraggeber diese Rechte nicht, wird der Auftrag zwar zur Konfiguration übertragen, dort aber nicht ausgeführt.

Specified by:
createSingleServingPassword in interface ConfigurationRequester
Parameters:
orderer - Benutzername des Auftraggebers
ordererPassword - Passwort des Auftraggebers, dies wird zum verschlüsseln benutzt und darf nicht mit übertragen werden
username - Benutzername, dem ein Einmal-Passwort hinzugefügt werden soll. Der Name ist zu verschlüsseln.
singleServingPassword - Einmal-Passwort das dem Benutzer, der mit username identifiziert wird, hinzugefügt wird. Das Einmal-Passwort darf nur verschlüsselt übertragen werden
Throws:
ConfigurationTaskException - Die Konfiguration kann den Auftrag nicht ausführen, weil die übergebenen Parameter falsch sind. So kann der Auftraggeber zum Beispiel nicht die nötigen Rechte besitzen ein Einmal-Passwort anzulegen oder das Passwort existiert bereits, usw.. Wird der Auftrag mit den richtigen Parametern übertragen, wird die Konfiguration ihn ausführen.

createNewUser

public void createNewUser(String orderer,
                          String ordererPassword,
                          String newUsername,
                          String newUserPid,
                          String newPassword,
                          boolean adminRights,
                          String pidConfigurationArea)
                   throws ConfigurationTaskException
Description copied from interface: ConfigurationRequester
Beauftragt die Konfiguration ein neues Benutzerkonto anzulegen. Zu einem Benutzerkonto gehören ein Benutzername, ein Passwort und die Rechte des Benutzers. Alle Informationen, die zu einem Benutzerkonto gehören, sind mit dem Passwort des Auftraggebers zu verschlüsseln und verschlüsselt zu übertragen. Das Passwort des Auftraggebers wird nicht übertragen.

Ein neuer Benutzer kann nur durch einen Benutzer angelegt werden, der bestimmte Rechte besitzt. Besitzt der Benutzer diese Rechte nicht, wird der Auftrag zur Konfiguration übertragen und dort abgelehnt.

Specified by:
createNewUser in interface ConfigurationRequester
Parameters:
orderer - Benutzername des Auftraggebers
ordererPassword - Passwort des Auftraggebers. Das Passwort wird nicht übertragen.
newUsername - Benutzername des neuen Benutzers
newUserPid - Pid des neuen Benutzers. Wird der Leerstring ("") übergeben, wird dem Benutzer keine explizite Pid zugewiesen
newPassword - Passwort des neuen Benutzers
adminRights - true = Der Benutzer besitzt spezielle Rechte; false = Der Benutzer besitzt keine speziellen Rechte
pidConfigurationArea - Pid des Konfigurationsbereichs, in dem der neue Benutzer angelegt werden soll
Throws:
ConfigurationTaskException - Die Konfiguration kann den Auftrag nicht ausführen, weil die übergebenen Parameter falsch sind. So kann der Auftraggeber zum Beispiel nicht die nötigen Rechte besitzen einen neuen Benutzer anzulegen. Wird der Auftrag mit den richtigen Parametern übertragen, wird die Konfiguration ihn ausführen.

changeUserRights

public void changeUserRights(String orderer,
                             String ordererPassword,
                             String user,
                             boolean adminRights)
                      throws ConfigurationTaskException
Description copied from interface: ConfigurationRequester
Beauftragt die Konfiguration die Rechte eines Benutzers zu ändern. Es wird mit dem Passwort des Benutzers, der den Auftrag erteilt, eine verschlüsselte Nachricht erzeugt, die den Benutzernamen des Benutzers enthält dessen Rechte geändert werden sollen und die neuen Rechte des Benutzers. Das Passwort des Auftraggebers wird nicht übertragen.

Nur ein Benutzer mit speziellen Rechten darf die Rechte anderer Benutzer ändern. Besitzt ein Benutzer diese Rechte nicht wird der Auftrag an die Konfiguration verschickt und dort von der Konfiguration abgelehnt.

Specified by:
changeUserRights in interface ConfigurationRequester
Parameters:
orderer - Auftraggeber, der die Rechte eines Benuters ändern möchte
ordererPassword - Passwort des Auftraggebers. Das Passwort wird nicht übertragen
user - Benutzer, dessen Rechte geändert werden sollen
adminRights - true = Der Benutzer, der mit user identifiziert wird, erhält spezielle Rechte; false = Der Benutzer der mit user identifiziert wird, erhält normale Rechte
Throws:
ConfigurationTaskException - Die Konfiguration kann den Auftrag nicht ausführen, weil die übergebenen Parameter falsch sind. So kann der Auftraggeber zum Beispiel nicht die nötigen Rechte besitzen die Rechte eines anderen Benutzers zu ändern. Wird der Auftrag mit den richtigen Parametern übertragen, wird die Konfiguration ihn ausführen.

changeUserPassword

public void changeUserPassword(String orderer,
                               String ordererPassword,
                               String user,
                               String newPassword)
                        throws ConfigurationTaskException
Description copied from interface: ConfigurationRequester
Beauftragt die Konfiguration das Passwort eines Benutzers zu ändern. Diese Methode kann von jedem Benutzer aufgerufen werden. Es ist jedem Benutzer gestattet das Passwort seines Benutzerkontos zu ändern. Soll das Passwort eines fremden Benutzerkontos geändert werden, sind spezielle Rechte nötig.

Der Benutzername des Benutzerkontos, das geändert werden soll, und das neue Passwort sind verschlüsselt zu übertragen. Als Schlüssel wird das Benutzerpasswort ordererPassword des Auftraggebers orderer benutzt. Das Passwort ordererPassword darf nicht übertragen werden.

Specified by:
changeUserPassword in interface ConfigurationRequester
Parameters:
orderer - Benutzername des Auftraggebers
ordererPassword - derzeit gültiges Passwort, falls der Benutzername orderer und user identisch sind. Sind die Parameter nicht identisch, muss der Benutzer, der mit orderer identifiziert wird, spezielle Rechte besitzen und sein Passwort übergeben
user - Benutzername des Benutzerkontos, dessen Passwort geändert werden soll
newPassword - Neues Passwort des Benutzers, der mit user identifiziert wurde
Throws:
ConfigurationTaskException - Die Konfiguration kann den Auftrag nicht ausführen, weil die übergebenen Parameter falsch sind. So kann der Auftraggeber zum Beispiel nicht die nötigen Rechte besitzen das Passwort eines anderen Benutzers zu ändern oder das Passwort zum ändern ist falsch. Wird der Auftrag mit den richtigen Parametern übertragen, wird die Konfiguration ihn ausführen.

getRandomText

private byte[] getRandomText()
                      throws IOException,
                             RequestException,
                             NoSuchVersionException
Fordert von der Konfiguration ein Zufallstext an, dieser wird dann mit einem Auftrag versendet

Returns:
Zufallstext, der durch die Konfiguration erzeugt wurde
Throws:
IOException
RequestException
NoSuchVersionException

getAllConfigurationAreas

public Map<String,ConfigurationArea> getAllConfigurationAreas()
                                                       throws RequestException
Description copied from interface: ConfigurationRequester
Alle Konfigurationsbereichseinträge in der Verwaltungsdatei werden zurückgegeben. Hierbei ist es unerheblich, ob der Bereich bereits aktiviert wurde oder noch zu aktivieren ist.

Specified by:
getAllConfigurationAreas in interface ConfigurationRequester
Returns:
Eine Map, deren Schlüssel die Pid des Bereichs und der Wert das Objekt des Konfigurationsbereichs ist.
Throws:
RequestException - Es ist zu einem Kommunikationsfehler bei der Anfrage gekommen.

getAllConfigurationAreasResult

private Map<String,ConfigurationArea> getAllConfigurationAreasResult(Deserializer deserializer)
                                                              throws IOException
Ließt aus einem Deserialier die Antwort auf eine Konfigurationsbereichsanfrage aus.

Parameters:
deserializer - Objekt, das die serialisierte Antwort enthält
Returns:
Als Schlüssel dient die Pid, Value ist ein Konfigurationsbereich
Throws:
IOException

createConfigurationArea

public ConfigurationArea createConfigurationArea(String name,
                                                 String pid,
                                                 String authorityPid)
                                          throws RequestException,
                                                 ConfigurationChangeException
Description copied from interface: ConfigurationRequester
Die Implementierung dieser Methode legt einen neuen Konfigurationsbereich in der lokalen Konfiguration an. Hierfür wird eine entsprechende Konfigurationsdatei angelegt, die initial das Objekt des Konfigurationsbereichs enthält.

Zusätzlich müssen die konfigurierenden Datensätze für den Konfigurationsverantwortlichen und für die Versionsnummern (aktivierbare und übernehmbare Version) angelegt werden.

Ein Eintrag in der Verwaltungsdatei wird ebenfalls eingetragen. Er enthält die Pid des Konfigurationsbereichs und die Pfadangabe, wo sich die Konfigurationsdatei nach Erstellung befindet.

Specified by:
createConfigurationArea in interface ConfigurationRequester
Parameters:
name - Name des neuen Konfigurationsbereichs
pid - eindeutige Pid des neuen Konfigurationsbereichs
authorityPid - die Pid des Konfigurationsverantwortlichen des neuen Konfigurationsbereichs
Returns:
Das Objekt des neuen Konfigurationsbereichs.
Throws:
RequestException - Es ist zu einem Kommunikationsfehler bei der Anfrage gekommen.
ConfigurationChangeException - Falls kein neuer Konfigurationsbereich angelegt werden konnte.

getCreateConfigurationAreaResult

private ConfigurationArea getCreateConfigurationAreaResult(Deserializer deserializer)
                                                    throws IOException
Ließt aus einem Deserialisierer eine Id und erzeugt das dazugehörige Objekt

Parameters:
deserializer - Enthält die Id
Returns:
Konfigurationsbereich, dessen Id ausgelesen wurde
Throws:
IOException

serializeStrings

private byte[] serializeStrings(String stringOne,
                                String stringTwo,
                                String stringThree)
                         throws IOException,
                                NoSuchVersionException
Erzeugt mit einem Serializer ein byte-Array, das drei Strings enthält

Parameters:
stringOne - Wird als erstes serialisiert
stringTwo - Wird als zweites serialisiert
stringThree - Wird als drittes serialisiert
Returns:
byte-Array, das Strings enthält
Throws:
IOException
NoSuchVersionException

checkConsistency

public ConsistencyCheckResultInterface checkConsistency(Collection<ConfigAreaAndVersion> configurationAreas)
                                                 throws RequestException
Description copied from interface: ConfigurationRequester
Die Implementierung dieser Methode beauftragt die Konfiguration alle Konfigurationsbereiche einer Konsistenzprüfung zu unterziehen (siehe TPuK1-138). Diese Methode kann unabhängig von der Aktivierung ConfigurationRequester.activateConfigurationAreas(java.util.Collection) oder Freigabe ConfigurationRequester.releaseConfigurationAreasForTransfer(java.util.Collection) stattfinden.

Specified by:
checkConsistency in interface ConfigurationRequester
Parameters:
configurationAreas - Definiert alle Konfigurationsbereiche, die einer Konsistenzprüfung unterzogen werden sollen. Der Bereich wird über seine Pid identifiziert, zusätzlich wird die Version angegeben in der der Konfigurationsbereich geprüft werden soll. Alle Bereiche der Konfiguration, die nicht angegeben werden, werden in die Prüfung einbezogen und zwar mit ihrer aktuellen Version und müssen somit nicht expliziet angegeben werden.
Returns:
Ergebnis der Konsistenzprüfung
Throws:
RequestException - Es ist zu einem Kommunikationsfehler bei der Anfrage gekommen.

activateConfigurationAreas

public ConsistencyCheckResultInterface activateConfigurationAreas(Collection<ConfigAreaAndVersion> configurationAreas)
                                                           throws RequestException,
                                                                  ConfigurationChangeException
Description copied from interface: ConfigurationRequester
Die Implementierung dieser Methode beauftragt die Konfiguration die angebenen Konfigurationsbereiche zu aktivieren (siehe TPuK1-142). Vor der Aktivierung wird automatisch eine Konsistenzprüfung durchgeführt. Die Bereiche dürfen nur aktiviert werden, wenn weder lokale noch Interferenzfehler aufgetreten sind.

Verlief die Konsistenzprüfung positiv(weder lokale noch Interferenzfehler), wird beim nächsten Neustart der Konfiguration jeder angegebene Konfigurationsbereich mit der angegebenen Version gestartet.

Verlief die Konsistenzprüfung negativ, wird keiner der angegebenen Konfigurationsbereiche aktiviert.

Die Implementierung muss dabei berücksichtigen, dass nur Konfigurationsbereiche aktiviert werden dürfen, für die die Konfigurations auch verantwortlich (Konfiguration ist Konfigurationsverantwortlicher des Bereichs) ist oder aber Konfigurationsbereiche die zur Aktivierung durch andere Konfigurationsverantwortliche freigegeben sind.

Die Version, in der ein Konfigurationsbereich aktiviert werden soll, muss größer sein als die derzeit aktuelle Version in der der Konfigurationsbereich läuft.

Specified by:
activateConfigurationAreas in interface ConfigurationRequester
Parameters:
configurationAreas - Konfigurationsbereiche, die in der jeweiligen Version aktiviert werden sollen
Returns:
Ergebnis der Konsistenzprüfung. Die Bereiche werden nur aktiviert, wenn es weder zu einem lokalen noch zu einem Interferenzfehler gekommen ist
Throws:
RequestException - Es ist zu einem Kommunikationsfehler bei der Anfrage gekommen.
ConfigurationChangeException - Falls mindestens ein Konfigurationsbereich nicht aktiviert werden konnte.
Folgende Gründe können die Ursache sein:
Die Konfiguration wollte einen Konfigurationsbereich in einer Version aktivieren, die noch nicht zur Aktivierung freigegeben war und für den sie nicht der Konfigurationsverantwortliche ist.
Ein Konfigurationsbereich läuft in einer höheren Version, als die Version in der er aktiviert werden soll.

releaseConfigurationAreasForTransfer

public ConsistencyCheckResultInterface releaseConfigurationAreasForTransfer(Collection<ConfigAreaAndVersion> configurationAreas)
                                                                     throws RequestException,
                                                                            ConfigurationChangeException
Description copied from interface: ConfigurationRequester
Die Implementierung dieser Methode beauftragt die Konfiguration die angebenen Konfigurationsbereiche in den Status "Freigabe zur Übernahme" zu überführen (siehe TPuK1-143). Bevor die angegebenen Bereiche freigegeben werden, wird automatisch eine Konsistenzprüfung durchgeführt.

Verlief die Konsistenzprüfung positiv(keine lokalen Fehler), werden die angegebenen Konfigurationsbereiche mit der angegebenen Version freigegeben.

Verlief die Konsistenzprüfung negativ, wird keiner der angegebenen Konfigurationsbereiche freigegeben.

Die Implementierung muss prüfen ob die Version, in der der Bereich zur Übernahme freigegeben wird, größer als die "aktuelle" Version, die zur Übernahme freigegeben wurde, ist.

Specified by:
releaseConfigurationAreasForTransfer in interface ConfigurationRequester
Parameters:
configurationAreas - Konfigurationsbereiche, die in der jeweiligen Version freigegeben werden sollen
Returns:
Ergebnis der Konsistenzprüfung. Die Konfigurationsbereiche werden nur freigegeben, wenn kein lokaler Fehler aufgetreten ist.
Throws:
RequestException - Es ist zu einem Kommunikationsfehler bei der Anfrage gekommen.
ConfigurationChangeException - Falls mindestens ein Konfigurationsbereich nicht zur Übernahme freigegeben werden konnte.
Folgende Gründe können die Ursache sein:
Die Konfiguration war nicht der Konfigurationsverantwortliche für alle angegebenen Bereiche.
Die aktuelle Version, in der ein Bereich bereits zur Übernahme freigegeben wurde, ist größer als die Version, in der der Bereich freigegeben werden soll.
Der Datensatz, der die Versionsnummer speichert konnte nicht verändert oder geschrieben werden.

releaseConfigurationAreasForActivation

public void releaseConfigurationAreasForActivation(Collection<ConfigAreaAndVersion> configurationAreas)
                                            throws RequestException,
                                                   ConfigurationChangeException
Description copied from interface: ConfigurationRequester
Die Implementierung dieser Methode beauftragt die Konfiguration die angegebenen Konfigurationsbereiche in den Status "Freigabe zur Aktivierung" zu überführen. Dadurch können andere Konfigurationen die Konfigurationsbereiche übernehmen und diese lokal aktivieren.

Es findet keine Konsistenzprüfung statt, da ein Konfigurationsbereich nur dann für andere zur Aktivierung freigegeben werden darf, wenn er bereits lokal aktiviert ConfigurationRequester.activateConfigurationAreas(java.util.Collection) wurde.

Es werden entweder alle angegebenen Konfigurationsbereiche in der jeweils geforderten Version aktiviert oder keiner.

Specified by:
releaseConfigurationAreasForActivation in interface ConfigurationRequester
Parameters:
configurationAreas - Konfigurationsbereiche, die in der jeweiligen Version für andere Konfigurationen freigegeben werden sollen
Throws:
RequestException - Es ist zu einem Kommunikationsfehler bei der Anfrage gekommen.
ConfigurationChangeException - Falls mindestens ein Konfigurationsbereich nicht zur Aktivierung freigegeben werden konnte.
Folgende Gründe können die Ursache sein:
Die Konfiguration, die die Konfigurationsbereiche freigeben soll, ist nicht der Konfigurationsverantwortliche für den/die Bereich/e.
Ein Bereich soll in einer Version freigegeben werden, der noch nicht durch den Konfigurationsverantwortlichen der Konfiguration lokal aktiviert wurde ConfigurationRequester.activateConfigurationAreas(java.util.Collection).
Ein Bereich soll in einer Version zur Aktivierung freigegeben werden, der bereits in einer höheren Version zur Aktivierung freigegeben wurde.
Der Datensatz, der die Versionsnummer speichert konnte nicht verändert oder geschrieben werden.

releaseConfigurationAreasForActivationWithoutCAActivation

public ConsistencyCheckResultInterface releaseConfigurationAreasForActivationWithoutCAActivation(Collection<ConfigAreaAndVersion> configurationAreas)
                                                                                          throws RequestException,
                                                                                                 ConfigurationChangeException
Description copied from interface: ConfigurationRequester
Beauftragt die Konfiguration die angegebenen Bereiche in den vorgegebenen Version für andere Konfiguraiton zur Aktivierung freizugeben obwohl die Bereiche durch den Konfigurationsverantwortlichen der Bereiche noch nicht lokal aktiviert wurden.

Dieses vorgehen ist nur erlaubt, wenn bei der Konsistenzprüfung kein lokaler Fehler auftritt.

Specified by:
releaseConfigurationAreasForActivationWithoutCAActivation in interface ConfigurationRequester
Parameters:
configurationAreas - Bereiche und die jeweiligen Versionen, die für andere freigegeben werden sollen.
Returns:
Ergebnis der Konsistensprüfung
Throws:
RequestException - Es ist zu einem Kommunikationsfehler bei der Anfrage gekommen.
ConfigurationChangeException - Die Konfiguration konnte den Auftrag nicht ausführen (mangelnde Rechte, usw.)

importConfigurationAreas

public void importConfigurationAreas(File importPath,
                                     Collection<String> configurationAreaPids)
                              throws RequestException,
                                     ConfigurationChangeException
Description copied from interface: ConfigurationRequester
Die Implementierung dieser Methode importiert die Versorgungsdateien der angegebenen Pids vom angegebenen Verzeichnis in die bestehende Konfiguration. Dadurch können neue Konfigurationsbereiche angelegt oder bestehende Bereiche verändert werden.

Versorgungsdateien können auch wieder exportiert werden.

Specified by:
importConfigurationAreas in interface ConfigurationRequester
Parameters:
importPath - Verzeichnis der Versorgungsdateien
configurationAreaPids - Pids der zu importierenden Konfigurationsbereiche
Throws:
RequestException - Es ist zu einem Kommunikationsfehler bei der Anfrage gekommen.
ConfigurationChangeException - Falls während des Imports Fehler auftreten. Nach Korrektur des Fehlers kann der Import wiederholt werden.

exportConfigurationAreas

public void exportConfigurationAreas(File exportPath,
                                     Collection<String> configurationAreaPids)
                              throws RequestException,
                                     ConfigurationTaskException
Description copied from interface: ConfigurationRequester
Die Implementierung dieser Methode exportiert aus der bestehenden Konfiguration die Versorgungsdateien zu den angegebenen Pids in das angegebene Verzeichnis. Änderungen können an den Versorgungsdateien vorgenommen und diese wieder importiert werden.

Specified by:
exportConfigurationAreas in interface ConfigurationRequester
Parameters:
exportPath - Verzeichnis der Versorgungsdateien
configurationAreaPids - Pids der zu exportierenden Konfigurationsbereiche
Throws:
RequestException - Es ist zu einem Kommunikationsfehler bei der Anfrage gekommen.
ConfigurationTaskException - Die angegebenen Bereiche konnte nicht exportiert werden. Dies kann mehrere Gründe haben (zu einer Pid wurde kein Konfigurationsbereich gefunden, eine Versorgungsdatei konnte nicht geschrieben werden, usw.).

getActiveVersion

public short getActiveVersion(ConfigurationArea configurationArea)
                       throws RequestException
Description copied from interface: ConfigurationRequester
Fordert für den angegebenen Bereich die Version an, in der der Bereich aktiv ist.

Specified by:
getActiveVersion in interface ConfigurationRequester
Parameters:
configurationArea - Bereich, dessen aktive Version angefordert werden soll
Returns:
Version, in der der Bereich derzeit aktiv ist
Throws:
RequestException - Fehler bei der Datenübertragung

getModifiableVersion

public short getModifiableVersion(ConfigurationArea configurationArea)
                           throws RequestException
Description copied from interface: ConfigurationRequester
Neue Version eines Bereichs, die weder zur Übernahme freigegeben noch lokal aktiviert ist. Dies ist die in Bearbeitung befindliche Version, auf die sich versionierte Konfigurationsänderungen beziehen.

Specified by:
getModifiableVersion in interface ConfigurationRequester
Parameters:
configurationArea - Bereich für den die Version angefordert werden soll
Returns:
Nummer der Version, die sich in Bearbeitung befindet.
Throws:
RequestException - Fehler bei der Datenübertragung
See Also:
"TPuK1-103"

getObjects

public Collection<SystemObject> getObjects(String pid,
                                           long startTime,
                                           long endTime)
                                    throws RequestException
Description copied from interface: ConfigurationRequester
Verschickt an eine entfernte Konfiguration einen Anfrage, in der alle Objekte, die zu einer Pid gehören, zurückgegeben werden, die im angegebenen Zeitbereich gültig waren.

Specified by:
getObjects in interface ConfigurationRequester
Parameters:
pid - Pid der Objekte, die gültig sein sollen
startTime - Startzeitpunkt
endTime - Endzeitpunkt
Returns:
Alle Objekte, die mit der angegebenen Pid im angegebenen Zeitbereich gültig waren. Sind keine Objekte vorhanden, wird eine leere Collection zurückgegeben.
Throws:
RequestException - Technischer Fehler bei der Übetragung der Anfrage

getObjects

public Collection<SystemObject> getObjects(Collection<ConfigurationArea> configurationAreas,
                                           Collection<SystemObjectType> systemObjectTypes,
                                           ObjectTimeSpecification objectTimeSpecification)
                                    throws RequestException
Description copied from interface: ConfigurationRequester
Stellt eine Anfrage an eine entfernte Konfiguration und gibt die Objekte zurück, die in einem der angegebenen Konfigurationsbereiche sind und deren Objekttyp in der angegebenen Objekttyp-Menge ist.

Specified by:
getObjects in interface ConfigurationRequester
Parameters:
configurationAreas - Bereiche, die geprüft werden sollen
systemObjectTypes - Objekttypen, die zu berücksichtigen sind
objectTimeSpecification - Definiert den zu betrachtenen Zeitbereich
Returns:
Objekte, die unter der festgelegten Bediengungen gültig waren
Throws:
RequestException - Technisches Problem bei der Anfrage

getDirectObjects

public Collection<SystemObject> getDirectObjects(ConfigurationArea area,
                                                 Collection<SystemObjectType> systemObjectTypes,
                                                 ObjectTimeSpecification timeSpecification)
                                          throws RequestException
Description copied from interface: ConfigurationRequester
Stellt eine Anfrage an eine entferne Konfiguration und fordert die Objekte an, die direkt von den übergebenen Typen abstammen. Die Anfrage bezieht sich dabei nicht auf alle Bereiche, sondern nur auf einen bestimmten. Es werden auch nur die übergebenen Typen betrachtet, nicht eventuelle Supertypen, von denen die Typen abgeleitet erben.

Specified by:
getDirectObjects in interface ConfigurationRequester
Parameters:
area - Bereich, in dem Objekte von den übergebenen Typen gesucht werden sollen
systemObjectTypes - Typen, von dem die Objekte sein müssen, ableitungen werden nicht berücksichtigt
timeSpecification - Zeit, in der die Objekte gültig sein müssen
Returns:
Alle Objekte eines Konfigurationsbereichs für die oben genannte Parameter übereinstimmen. Sind keine Objekte vorhanden, wird eine leere Collection zurückgegeben.
Throws:
RequestException - Technisches Problem bei der Anfrage

createConfigurationObject

public ConfigurationObject createConfigurationObject(ConfigurationArea configurationArea,
                                                     ConfigurationObjectType type,
                                                     String pid,
                                                     String name,
                                                     List<ObjectSet> sets)
                                              throws ConfigurationChangeException,
                                                     RequestException
Description copied from interface: ConfigurationRequester
Verschickt an eine entfernte Konfiguration einen Auftrag ein Konfigurationsobjekt anzulegen. Die Parameter sind unter ConfigurationArea.createConfigurationObject(de.bsvrz.dav.daf.main.config.ConfigurationObjectType, java.lang.String, java.lang.String, java.util.List) beschrieben.

Specified by:
createConfigurationObject in interface ConfigurationRequester
Parameters:
configurationArea - Bereich, in dem das Objekt angelegt werden soll
type - Typ des neuen Objekts.
pid - Pid des neuen Objekts.
name - Name des neuen Objekts.
sets - Mengen des neuen Objekts.
Returns:
Objekt, das durch die Konfiguration neu erzeugt wurden
Throws:
ConfigurationChangeException - Die Konfiguration kann das Objekt nicht anlegen
RequestException - Technisches Problem bei der Übertragung Anfrage

createDynamicObject

public DynamicObject createDynamicObject(ConfigurationArea configurationArea,
                                         DynamicObjectType type,
                                         String pid,
                                         String name)
                                  throws ConfigurationChangeException,
                                         RequestException
Description copied from interface: ConfigurationRequester
Verschickt an eine entfernte Konfiguration einen Auftrag ein dynamisches Objekt anzulegen. Die Parameter sind unter ConfigurationArea.createDynamicObject(de.bsvrz.dav.daf.main.config.DynamicObjectType, String, String) beschrieben.

Specified by:
createDynamicObject in interface ConfigurationRequester
Parameters:
configurationArea - Bereich, in dem das Objekt angelegt werden soll
type - Typ des neuen Objekts.
pid - Pid des neuen Objekts.
name - Name des neuen Objekts.
Returns:
Objekt, das durch die Konfiguration neu erzeugt wurde
Throws:
ConfigurationChangeException - Die Konfiguration kann das Objekt nicht anlegen
RequestException - Technisches Problem bei der Übertragung Anfrage

waitForResponseAndDeserializeDynamicObject

private DynamicObject waitForResponseAndDeserializeDynamicObject(int requestIndex)
                                                          throws RequestException,
                                                                 ConfigurationChangeException
Diese Methode wird aufgerufen, wenn ein dynamiches Objekt angelegt werden soll und die Antwort erwartet wird. Die Methode blockiert solange, bis die Antwort empfangen wird. Dann wird das dynamische Objekt aus der Antwort ausgelesen und zurückgegeben.

Parameters:
requestIndex - Index der Anfrage, die Antwort wird den selben Index haben.
Returns:
Objekt, das angelegt wurde.
Throws:
RequestException - Technisches Problem beim empfang/Deserialisierung der Antwort
ConfigurationChangeException - Die Konfiguration kann den Auftrag nicht durchführen (fehlenden Rechte)

createDynamicObject

public DynamicObject createDynamicObject(ConfigurationArea configurationArea,
                                         DynamicObjectType type,
                                         String pid,
                                         String name,
                                         List<DataAndATGUsageInformation> data)
                                  throws ConfigurationChangeException,
                                         RequestException
Description copied from interface: ConfigurationRequester
* Verschickt an eine entfernte Konfiguration einen Auftrag ein dynamisches Objekt anzulegen. Die Parameter sind unter ConfigurationArea.createDynamicObject(de.bsvrz.dav.daf.main.config.DynamicObjectType,String,String,java.util.Collection) beschrieben.

Specified by:
createDynamicObject in interface ConfigurationRequester
Parameters:
configurationArea - Konfigurationsbereich in dem das neue Objekt erzeugt werden soll.
type - Typ des neuen Objekts.
pid - Pid des neuen Objekts.
name - Name des neuen Objekts.
data - Datensätze, die am neuen Objekt gespeichert werden sollen.
Returns:
Objekt, das durch die Konfiguration neu erzeugt wurde
Throws:
ConfigurationChangeException - Die Konfiguration kann das Objekt nicht anlegen
RequestException - Technisches Problem bei der Übertragung Anfrage

duplicate

public SystemObject duplicate(SystemObject systemObject,
                              Map<String,String> substitutePids)
                       throws ConfigurationChangeException,
                              RequestException
Description copied from interface: ConfigurationRequester
Verschickt an eine entfernte Konfiguration einen Auftrag die Kopie eines Objekts zu erstellen.

Specified by:
duplicate in interface ConfigurationRequester
Parameters:
systemObject - Objekt, von dem eine Kopie erstellt werden soll.
substitutePids - Enthält Pids, die durch andere Pids ersetzt werden (Key = zu ersetzende Pid; Value = Pid, die den Key ersetzt)
Returns:
Kopie
Throws:
ConfigurationChangeException - Falls das Objekt kein freies Objekt ist und das Duplizieren nicht erlaubt ist oder das Duplikat nicht erstellt werden konnte.
RequestException - Technisches Problem bei der Übertragung Anfrage

getNewObjects

public List<SystemObject> getNewObjects(ConfigurationArea configurationArea)
                                 throws RequestException
Description copied from interface: ConfigurationRequester
Beauftragt die Konfiguration alle neuen Objekte eine Konfigurationsbereichs zurückzugeben.

Ein neues Objekte ist weder ungültig noch gültig.

Specified by:
getNewObjects in interface ConfigurationRequester
Parameters:
configurationArea - Bereich, aus dem alle neuen Objekte angefordert werden sollen
Returns:
Liste, die alle neuen Objekte des angegebenen Bereichs enthält. Ist kein Objekt vorhanden, so wird eine leere Liste zurückgegeben.
Throws:
RequestException - Technisches Problem bei der Übertragung Anfrage

getSetElements

public Collection<SystemObject> getSetElements(ObjectSet set,
                                               ObjectTimeSpecification objectTimeSpecification)
                                        throws RequestException
Description copied from interface: ConfigurationRequester
Verschickt eine Anfrage an die Konfigration alle Elemente einer Menge zurückzugeben, die zu einem Zeitpunkt/Zeitbereich aktiv waren.

Specified by:
getSetElements in interface ConfigurationRequester
Parameters:
set - Menge, dessen Elemente angefordert werden sollen
objectTimeSpecification - Legt fest ob ein Zeitpunkt, eine Zeitdauer/Bereich angefragt werden soll.
Returns:
Alle Elemente, die in dem definierten Zeitbereicht objectTimeSpecification, gültig waren.
Throws:
RequestException - Technisches Problem bei der Übertragung Anfrage

getSetElementsInNextVersion

public Collection<SystemObject> getSetElementsInNextVersion(ObjectSet set)
                                                     throws RequestException
Description copied from interface: ConfigurationRequester
Verschickt einen Auftrag an die Konfiguration alle Elemente zurückzugeben, die in der nächsten Version gültig werden.

Specified by:
getSetElementsInNextVersion in interface ConfigurationRequester
Parameters:
set - Menge, aus der die Elemente angefordert werden sollen.
Returns:
Elemente
Throws:
RequestException - Technisches Problem bei der Übertragung Anfrage

getSetElementsInVersion

public Collection<SystemObject> getSetElementsInVersion(ObjectSet set,
                                                        short version)
                                                 throws RequestException
Description copied from interface: ConfigurationRequester
Verschickt einen Auftrag an die Konfiguration alle Elemente einer Menge, die in der angegebenen Version gültig gewesen sind, zurückzugeben.

Specified by:
getSetElementsInVersion in interface ConfigurationRequester
Parameters:
set - Menge, aus der die Elemente angefordert werden sollen.
version - Version, in der die Elemente gültig gewesen sein müssen.
Returns:
Elemente
Throws:
RequestException - Technisches Problem bei der Übertragung Anfrage

getSetElementsInAllVersions

public Collection<SystemObject> getSetElementsInAllVersions(ObjectSet set,
                                                            short fromVersion,
                                                            short toVersion)
                                                     throws RequestException
Description copied from interface: ConfigurationRequester
Verschickt einen Auftrag an die Konfiguration alle Elemente einer Menge zurückzugeben, die im angegebenen Versionsbereich durchgängig gültig gewesen sind.

Specified by:
getSetElementsInAllVersions in interface ConfigurationRequester
Parameters:
set - Menge, aus der die Elemente angefordert werden sollen.
fromVersion - ab Version
toVersion - bis zur Version
Returns:
Elemente
Throws:
RequestException - Technisches Problem bei der Übertragung Anfrage

getSetElementsInAnyVersions

public Collection<SystemObject> getSetElementsInAnyVersions(ObjectSet set,
                                                            short fromVersion,
                                                            short toVersion)
                                                     throws RequestException
Description copied from interface: ConfigurationRequester
Verschickt einen Auftrag an die Konfiguration alle Elemente einer Menge zurückzugeben, die im angegebnen Versionsbereich gültig waren. Dabei können die Elemente auch im angegebnen Bereich ungültig geworden sein.

Specified by:
getSetElementsInAnyVersions in interface ConfigurationRequester
Parameters:
set - Menge, aus der die Elemente angefordert werden sollen.
fromVersion - ab Version
toVersion - bis Version
Returns:
Elemente
Throws:
RequestException - Technisches Problem bei der Übertragung Anfrage

editConfigurationSet

public void editConfigurationSet(ConfigurationObject configurationObject,
                                 ObjectSet set,
                                 boolean addSet)
                          throws RequestException,
                                 ConfigurationChangeException
Specified by:
editConfigurationSet in interface ConfigurationRequester
Parameters:
configurationObject - Konfigurationsobjekt, an dem eine Menge gelöscht oder eine neue Menge hinzugefügt werden soll.
set - Menge, die an dem Objekt gelöscht oder hinzugefügt werden soll.
addSet - true = Die übergebene Menge soll am Objekt hinzugefügt werden; false = Die übergebene Menge soll am Objekt entfernt werden.
Throws:
RequestException - Technisches Problem bei der Übertragung Anfrage
ConfigurationChangeException - Die Konfiguration führt den Auftrag nicht aus, weil sie zum Beispiel nicht der Konfigurationsverantwortliche für das zu ändernde Objekt ist.

setMutableCollectionChangeListener

public void setMutableCollectionChangeListener(MutableCollectionChangeListener notifyingMutableCollectionChangeListener)
Description copied from interface: ConfigurationRequester
Setzt den Listener zur Verarbeitung und Verteilung von Aktualisierungsnachrichten bzgl. Änderungen der Elemente von dynamischen Mengen bzw. dynamischen Typen.

Specified by:
setMutableCollectionChangeListener in interface ConfigurationRequester
Parameters:
notifyingMutableCollectionChangeListener - Listener zur Verarbeitung und Verteilung von Aktualisierungsnachrichten.

readSystemObjectList

private List<SystemObject> readSystemObjectList(Deserializer deserializer)
                                         throws IOException
Throws:
IOException

sendSetElementVersionRequest

private List<SystemObject> sendSetElementVersionRequest(ObjectSet systemObjectType,
                                                        KindOfVersion kindOfVersion,
                                                        short fromVersion,
                                                        short toVersion)
                                                 throws RequestException
Verschickt ein Telegramm an die Konfiguration und ermittelt alle Elemente einer Menge unter Berücksichtigung der übergebenen Versionen.

Parameters:
systemObjectType -
kindOfVersion -
fromVersion -
toVersion -
Returns:
Alle Elemente, die zu einer Menge gehören und in den angegebenen Versionen gültig waren (in Abhängigkeit von kindOfVersion).
Throws:
RequestException

serializeKindOfVersion

private void serializeKindOfVersion(Serializer serializer,
                                    KindOfVersion kindOfVersion,
                                    short fromVersion,
                                    short toVersion)
                             throws IOException
Serialisert die übergebenen Parameter.

Parameters:
serializer -
kindOfVersion -
fromVersion -
toVersion -
Throws:
IOException

serializeObjectTimeSpezifikation

private void serializeObjectTimeSpezifikation(Serializer serializer,
                                              ObjectTimeSpecification timeSpecification)
                                       throws IOException
Serialisiert eine ObjectTimeSpecification. Der Aufbau ist vom Typ abhängig.

Parameters:
serializer -
timeSpecification -
Throws:
IOException

serializeImportExportTask

private byte[] serializeImportExportTask(File path,
                                         Collection<String> configurationAreaPids)
                                  throws NoSuchVersionException,
                                         IOException
Serialisiert einen String und eine Collection von Pids

Parameters:
path - Verzeichnis der Versorgungsdateien
configurationAreaPids - Pids
Returns:
byte-Array, das die übergebenen Parameter serialisiert enthält
Throws:
NoSuchVersionException
IOException

serializeConfigAndVersion

private byte[] serializeConfigAndVersion(Collection<ConfigAreaAndVersion> configurationAreas)
                                  throws NoSuchVersionException,
                                         IOException
Erstellt mit einem Serialisierer ein Byte-Array, das Konfigurationsbereiche und dazugehörige Versionen enthält.

Parameters:
configurationAreas - s.o
Returns:
s.o.
Throws:
NoSuchVersionException
IOException

getConsistencyCheckResult

private ConsistencyCheckResultInterface getConsistencyCheckResult(Deserializer deserializer)
                                                           throws IOException
Ließt aus einem Deserialier die Antwort auf eine Konfigurationsbereichsanfrage aus.

Parameters:
deserializer - Objekt, das die serialisierte Antwort enthält
Returns:
Objekt, das aus den serialisierten Daten erzeugt wurde
Throws:
IOException

getConsistencyCheckResultEntry

private ConsistencyCheckResultEntry getConsistencyCheckResultEntry(Deserializer deserializer,
                                                                   ConsistencyCheckResultEntryType type)
                                                            throws IOException
Ließt ein serialisiertes ConsistencyCheckResultEntry aus einem Deserializer aus

Parameters:
deserializer - s.o.
type - Art des Fehlers/Warnung (lokal, interferenz oder Warnung)
Returns:
Objekt
Throws:
IOException

sendConfigAreaTask

private Data sendConfigAreaTask(String messageType,
                                byte[] message)
                         throws RequestException
Diese Methode verschickt ein Telegramm. Der Typ wird über einen Parameter festgelegt.

Parameters:
message - Nachricht, die verschickt werden soll
Returns:
Antwort auf die Anfrage
Throws:
RequestException - Fehler bei der Bearbeitung des Telegramms (Der Benutzer hatte nicht die nötigen Rechte diesen Auftrag zu erteilen, usw.)

createTelegramByteArray

private byte[] createTelegramByteArray(int messageType,
                                       int serializerVersion,
                                       byte[] messageCleartext,
                                       String encryptionText)
                                throws RequestException
Erzeugt ein kodiertes Byte-Array, das folgenden Aufbau besitzt:
- benutzte Serialisiererversion(Wert ist nicht serialisiert) (ersten 4 Bytes)
- Typ des Pakets (int)
- Länge des Zufallstexts (int) - Zufallstext (byte[]) - übergebenes Byte-Array messageCleartext

Parameters:
messageType - Nachrichtentyp
serializerVersion - Version, mit der die Daten serialisiert werden sollen
messageCleartext - Bisher erzeugte Daten, die verschickt werden sollen
Returns:
verschlüsseltes Byte-Array, das alle oben genannten Daten enthält
Throws:
RequestException - Alle Fehler die auftauchen werden als RequestException interpretiert. Dies wird gemacht, da eine weitere Übertragung keinen Sinn macht.

getSystemModelVersion

public int getSystemModelVersion()

checkSystemModellVersion

private boolean checkSystemModellVersion(int requiredVersion,
                                         String errorMessage)

ensureSystemModellVersion

private void ensureSystemModellVersion(int requiredVersion,
                                       String errorMessage)
                                throws RequestException
Throws:
RequestException