Class RemoteRequesterV0

  • All Implemented Interfaces:
    ConfigurationRequester

    public class RemoteRequesterV0
    extends java.lang.Object
    Implementierung von Version 1 des Protokolls zur Kommunikation mit dem Datenverteiler. Die aktuelle Implementierung befindet sich in RemoteRequester
    • Field Detail

      • _localConfiguration

        protected final DataModel _localConfiguration
      • _connection

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

      • close

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

        public java.util.List<SystemObject> getObjects​(long... ids)
        Lädt ein Systemobjekt durch entsprechende Konfigurationsanfragen aus der Konfiguration.
        Specified by:
        getObjects in interface ConfigurationRequester
        Parameters:
        ids - ID des gewünschten Objekts bzw. IDs der gewünschten Objekte.
        Returns:
        Gewünschtes Systemobjekt
      • getObjects

        public java.util.List<SystemObject> getObjects​(java.lang.String... pids)
        Description copied from interface: ConfigurationRequester
        Liefert die System-Objekte mit den angegebenen PIDs zurück.
        Specified by:
        getObjects in interface ConfigurationRequester
        Parameters:
        pids - Die permanente ID des System-Objekts (oder mehrere Pids)
        Returns:
        Liste mit den gewüschten Systemobjekten in der Reihenfolge der übergebenen PIDs. Objekte, die nicht gefunden wurden, werden als null-Werte zurückgegeben.
      • getObjectsOfType

        public final java.util.List<SystemObject> getObjectsOfType​(SystemObjectType type)
        Liefert eine Liste mit allen Systemobjekten eines Typs zurück. Zu beachten ist, das auch Objekte eines Typs, der diesen Typ erweitert, zurückgegeben werden.
        Specified by:
        getObjectsOfType in interface ConfigurationRequester
        Parameters:
        type - Typ der gewünschten Systemobjekte
        Returns:
        Liste von System-Objekten
      • invalidate

        public final void invalidate​(SystemObject object)
                              throws ConfigurationChangeException
        Löscht das Objekt, indem es ungültig gemacht wird. Dynamische System-Objekte werden sofort ungültig. Bereits gültige konfigurierende System-Objekte werden mit Aktivierung der nächsten Konfigurationsversion ungültig. Für historische Anfragen bleiben ungültige Objekte nach wie vor existent. Konfigurierende System-Objekte, die noch nie gültig waren werden durch diese Methode gelöscht und sind nicht mehr zugreifbar.
        Specified by:
        invalidate in interface ConfigurationRequester
        Parameters:
        object - Objekt, dass gelöscht bzw. ungültig gesetzt werden soll.
        Throws:
        ConfigurationChangeException - Die Konfiguration kann das Objekt nicht löschen
      • revalidate

        public final void revalidate​(SystemObject object)
                              throws ConfigurationChangeException
        Macht ein bereits als ungültig markiertes Objekt wieder gültig. Wenn ein Konfigurationsobjekt mit der Methode DafSystemObject.invalidate() für eine zukünftige Konfigurationsversion als ungültig markiert wurde und diese Konfigurationsversion noch nicht aktiviert wurde, dann kann das Objekt durch Aufruf dieser Methode wieder gültig gemacht werden.
        Specified by:
        revalidate in interface ConfigurationRequester
        Parameters:
        object - Objekt, dass wieder gültig gemacht werden soll.
        Throws:
        ConfigurationChangeException - Die Konfiguration kann das Objekt nicht wiederherstellen
      • createSingleServingPassword

        public void createSingleServingPassword​(java.lang.String orderer,
                                                java.lang.String ordererPassword,
                                                java.lang.String username,
                                                java.lang.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.
      • getSingleServingPasswordCount

        public int getSingleServingPasswordCount​(java.lang.String orderer,
                                                 java.lang.String ordererPassword,
                                                 java.lang.String username)
                                          throws ConfigurationTaskException
        Description copied from interface: ConfigurationRequester
        Ermittelt die Anzahl der noch vorhandenen, gültigen Einmal-Passwörter. Jeder Benutzer kann diese Anzahl für seinen eigenen Account ermitteln, ansonsten sind Admin-Rechte notwendig.
        Specified by:
        getSingleServingPasswordCount 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, dessen Einmalpasswörter geprüft werden sollen.
        Returns:
        Anzahl der noch vorhandenen, gültigen Einmal-Passwörter
        Throws:
        ConfigurationTaskException - Die Konfiguration kann den Auftrag nicht ausführen.
      • clearSingleServingPasswords

        public void clearSingleServingPasswords​(java.lang.String orderer,
                                                java.lang.String ordererPassword,
                                                java.lang.String username)
                                         throws ConfigurationTaskException
        Description copied from interface: ConfigurationRequester
        Löscht alle Einmalpasswörter für einen angegebenen Benutzer. Es ist jedem Benutzer gestattet die Passwörter seines eigenen Accounts zu löschen. Soll ein fremdes Benutzerkonto geändert werden, sind Admin-Rechte nötig.
        Specified by:
        clearSingleServingPasswords 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, dessen Einmalpasswörter gelöscht werden sollen.
        Throws:
        ConfigurationTaskException - Die Konfiguration kann den Auftrag nicht ausführen.
      • createNewUser

        public void createNewUser​(java.lang.String orderer,
                                  java.lang.String ordererPassword,
                                  java.lang.String newUsername,
                                  java.lang.String newUserPid,
                                  java.lang.String newPassword,
                                  boolean adminRights,
                                  java.lang.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.
      • deleteUser

        public void deleteUser​(java.lang.String orderer,
                               java.lang.String ordererPassword,
                               java.lang.String userToDelete)
                        throws ConfigurationTaskException
        Description copied from interface: ConfigurationRequester
        Beauftragt die Konfiguration ein Benutzerkonto zu löschen. Alle Informationen, die zu einem Benutzerkonto gehören, sind mit dem Passwort des Auftraggebers zu verschlüsseln und verschlüsselt zu übertragen.

        Ein Benutzerkonto kann nur durch einen Benutzer gelöscht werden, der die Rechte eines Administrators besitzt.

        Specified by:
        deleteUser in interface ConfigurationRequester
        Parameters:
        orderer - Benutzername des Auftraggebers.
        ordererPassword - Passwort des Auftraggebers.
        userToDelete - Benutzername des zu löschenden Benutzers.
        Throws:
        ConfigurationTaskException - Die Konfiguration kann den Auftrag nicht ausführen.
      • isUserAdmin

        public boolean isUserAdmin​(java.lang.String orderer,
                                   java.lang.String ordererPassword,
                                   java.lang.String username)
                            throws ConfigurationTaskException
        Description copied from interface: ConfigurationRequester
        Prüft, ob ein angegebener Benutzer Admin-Rechte besitzt. Jeder Benutzer kann diese Aktion ausführen. Zur verschlüsselten Übertragung des Vorgangs ist dennoch die Angabe eines gültigen Benutzernamens und Passworts notwendig.
        Specified by:
        isUserAdmin in interface ConfigurationRequester
        Parameters:
        orderer - Benutzername des Auftraggebers.
        ordererPassword - Passwort des Auftraggebers.
        username - Name des zu prüfenden Benutzers
        Returns:
        true falls der Benutzer Admin-Rechte hat
        Throws:
        ConfigurationTaskException - Die Konfiguration kann den Auftrag nicht ausführen.
      • isUserValid

        public boolean isUserValid​(java.lang.String orderer,
                                   java.lang.String ordererPassword,
                                   java.lang.String username)
                            throws ConfigurationTaskException
        Description copied from interface: ConfigurationRequester
        Prüft, ob ein angegebener Benutzername gültig ist, d.h. ob er ein zugeordnetes Systemobjekt und einen Eintrag in der benutzerverwaltung.xml hat. Jeder Benutzer kann diese Aktion ausführen. Zur (verschlüsselten) Übertragung des Vorgangs ist dennoch die Angabe eines gültigen Benutzernamens und Passworts notwendig. Mit dieser Funktion kann geprüft werden, ob die Benutzernamen, die ConfigurationRequester.subscribeUserChangeListener(de.bsvrz.dav.daf.main.config.MutableCollectionChangeListener) liefert, tatsächlichen zu einem gültigen Benutzer gehören, da subscribeUserChangeListener nur die Systemobjekte berücksichtigt.
        Specified by:
        isUserValid in interface ConfigurationRequester
        Parameters:
        orderer - Benutzername des Auftraggebers.
        ordererPassword - Passwort des Auftraggebers.
        username - Name des zu prüfenden Benutzers
        Returns:
        true falls der Benutzer in der Konfiguration gespeichert ist
        Throws:
        ConfigurationTaskException - Die Konfiguration kann den Auftrag nicht ausführen.
      • createNewUser

        public void createNewUser​(java.lang.String orderer,
                                  java.lang.String ordererPassword,
                                  java.lang.String newUsername,
                                  java.lang.String newUserPid,
                                  java.lang.String newPassword,
                                  boolean adminRights,
                                  java.lang.String pidConfigurationArea,
                                  java.util.Collection<DataAndATGUsageInformation> data)
                           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.

        Ein neuer Benutzer kann nur durch einen Benutzer angelegt werden, der die Rechte eines Administrators 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.
        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, wenn der neue Benutzer die Rechte eines Administrators besitzen soll; false, wenn der Benutzer keine speziellen Rechte besitzen soll.
        pidConfigurationArea - Pid des Konfigurationsbereichs, in dem der neue Benutzer angelegt werden soll.
        data - Konfigurierende Datensätze mit den dazugehörigen Attributgruppenverwendungen, die für das neue Benutzer-Objekt gespeichert werden sollen. Wird null übergeben, werden keine Konfigurationsdaten angelegt.
        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.
        See Also:
        ConfigurationArea.createDynamicObject(de.bsvrz.dav.daf.main.config.DynamicObjectType, String, String, java.util.Collection)
      • subscribeUserChangeListener

        public java.util.List<SystemObject> subscribeUserChangeListener​(MutableCollectionChangeListener listener)
        Description copied from interface: ConfigurationRequester
        Erstellt einen Listener der Änderungen an den Benutzern überwacht und eine aktuelle Liste aller Benutzer zurückgibt
        Specified by:
        subscribeUserChangeListener in interface ConfigurationRequester
        Parameters:
        listener - Objekt, an das Rückmeldungen gesendet werden sollen. null, wenn nur die Liste der aktuellen Benutzer geholt werden soll.
        Returns:
        Liste der aktuell vorhandenen Benutzer. Es ist eventuell ratsam, mit isUserValid zu prüfen, ob die Benutzer tatsächlich in der benutzerverwaltung.xml abgelegt sind, da hier nur die Systemobjekte berücksichtigt werden.
      • changeUserRights

        public void changeUserRights​(java.lang.String orderer,
                                     java.lang.String ordererPassword,
                                     java.lang.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​(java.lang.String orderer,
                                       java.lang.String ordererPassword,
                                       java.lang.String user,
                                       java.lang.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.
      • 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.
      • 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.
      • subscribeMutableCollectionChanges

        public java.util.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.
      • 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.
      • getAllConfigurationAreas

        public java.util.Map<java.lang.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.
      • createConfigurationArea

        public ConfigurationArea createConfigurationArea​(java.lang.String name,
                                                         java.lang.String pid,
                                                         java.lang.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.
      • activateConfigurationAreas

        public ConsistencyCheckResultInterface activateConfigurationAreas​(java.util.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​(java.util.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.
      • importConfigurationAreas

        public void importConfigurationAreas​(java.io.File importPath,
                                             java.util.Collection<java.lang.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​(java.io.File exportPath,
                                             java.util.Collection<java.lang.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.).
      • backupConfigurationFiles

        public BackupResult backupConfigurationFiles​(java.lang.String targetDirectory,
                                                     ConfigurationAuthority configurationAuthority,
                                                     BackupProgressCallback callback)
                                              throws ConfigurationTaskException,
                                                     RequestException
        Description copied from interface: ConfigurationRequester
        Veranlasst die Konfiguration, die Konfigurationsdateien zu sichern. Diese Funktion wartet auf das Beenden des Vorgangs, erlaubt der Konfiguration aber, andere Aufgaben asynchron durchzuführen.
        Specified by:
        backupConfigurationFiles in interface ConfigurationRequester
        Parameters:
        targetDirectory - Relatives Zielverzeichnis innerhalb des in der Konfiguration (mit dem Parameter -sicherungsVerzeichnis) festgelegten Sicherungsordners. Wird null oder ein Leerstring angegeben, generiert die Konfiguration aus aktuellem Datum und Uhrzeit einen neuen Pfadnamen.
        configurationAuthority - Verantwortlicher, dessen Konfigurationsdateien gesichert werden sollen
        callback - Objekt, an das Statusmeldungen gesendet werden
        Returns:
        Objekt, das Informationen über das Ergebnis des Sicherungsvorgangs enthält
        Throws:
        ConfigurationTaskException - Der Backup-Vorgang konnte nicht durchgeführt werden, beispielsweise weil das Zielverzeichnis falsch war. Falls das Sichern einzelner Dateien fehlschlägt wird keine solche Exception geworfen, stattdessen findet man innerhalb vom callback eventuelle Fehlschläge und BackupResult.getFailed ist größer 0.
        RequestException - Fehler bei der Übertragung der Anfrage oder beim Empfang von Statusmeldungen der Konfiguration. Achtung: Man kann nicht zwingend darauf schließen, dass der Backupvorgang nicht erfolgreich war, wenn eine Exception geworfen wurde. Wenn während des Vorgangs beispielsweise die Verbindung zwischen Datenverteiler und Konfiguration abbricht, wird eine Exception geworfen, aber die Konfiguration wird den Vorgang vermutlich dennoch korrekt beenden.
      • 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 java.util.Collection<SystemObject> getObjects​(java.lang.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 java.util.Collection<SystemObject> getObjects​(java.util.Collection<ConfigurationArea> configurationAreas,
                                                             java.util.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 java.util.Collection<SystemObject> getDirectObjects​(ConfigurationArea area,
                                                                   java.util.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
      • duplicate

        public SystemObject duplicate​(SystemObject systemObject,
                                      java.util.Map<java.lang.String,​java.lang.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 java.util.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 java.util.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
      • getSetElementsInVersion

        public java.util.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 java.util.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 java.util.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.
      • getSystemModelVersion

        public int getSystemModelVersion()