Interface DataModel

    • Method Detail

      • getConfigurationData

        Data[] getConfigurationData​(java.util.Collection<SystemObject> objects,
                                    AttributeGroup atg)
        Liefert die konfigurierenden Datensätze einer Attributgruppe für mehrere Objekte zurück. Als Aspekt wird dabei asp.eigenschaften angenommen. Die zurückgelieferten Datensätze werden auch lokal zwischengespeichert und können mit der Methode SystemObject.getConfigurationData(de.bsvrz.dav.daf.main.config.AttributeGroup) ohne weitere Konfigurationsanfrage abgefragt werden. Die Methode kann somit zur Minimierung der Anzahl von Konfigurationsanfragen und den damit verbundenen Verzögerungszeiten eingesetzt werden.
        Parameters:
        objects - Systemobjekte der gewünschten konfigurierenden Datensätze.
        atg - Attributgruppe der gewünschten Datensätze.
        Returns:
        Array mit den gewünschten konfigurierenden Datensätzen. Das Array enthält für jedes Element des Parameters objects einen korrespondierender konfigurierender Datensatz oder null, wenn das Objekt keinen Datensatz der angegebenen Attributgruppe-Aspekt Kombination hat.
      • getConfigurationData

        Data[] getConfigurationData​(java.util.Collection<SystemObject> objects,
                                    AttributeGroup atg,
                                    Aspect asp)
        Liefert die konfigurierenden Datensätze einer Attributgruppe und eines Aspekts für mehrere Objekte zurück. Die zurückgelieferten Datensätze werden auch lokal zwischengespeichert und können mit der Methode SystemObject.getConfigurationData(de.bsvrz.dav.daf.main.config.AttributeGroup) ohne weitere Konfigurationsanfrage abgefragt werden. Die Methode kann somit zur Minimierung der Anzahl von Konfigurationsanfragen und den damit verbundenen Verzögerungszeiten eingesetzt werden.
        Parameters:
        objects - Liste der Systemobjekte der gewünschten konfigurierenden Datensätze.
        atg - Attributgruppe der gewünschten Datensätze.
        asp - Aspekt der gewünschten Datensätze.
        Returns:
        Array mit den gewünschten konfigurierenden Datensätzen. Das Array enthält für jedes Element des Parameters objects einen korrespondierender konfigurierender Datensatz oder null, wenn das Objekt keinen Datensatz der angegebenen Attributgruppe-Aspekt Kombination hat.
      • getConfigurationData

        Data[] getConfigurationData​(SystemObject[] objects,
                                    AttributeGroup atg)
        Liefert die konfigurierenden Datensätze einer Attributgruppe für mehrere Objekte zurück. Als Aspekt wird dabei asp.eigenschaften angenommen. Die zurückgelieferten Datensätze werden auch lokal zwischengespeichert und können mit der Methode SystemObject.getConfigurationData(de.bsvrz.dav.daf.main.config.AttributeGroup) ohne weitere Konfigurationsanfrage abgefragt werden. Die Methode kann somit zur Minimierung der Anzahl von Konfigurationsanfragen und den damit verbundenen Verzögerungszeiten eingesetzt werden.
        Parameters:
        objects - Array mit den Systemobjekten der gewünschten konfigurierenden Datensätze.
        atg - Attributgruppe der gewünschten Datensätze.
        Returns:
        Array mit den gewünschten konfigurierenden Datensätzen. Das Array enthält für jedes Element des Parameters objects einen korrespondierender konfigurierender Datensatz oder null, wenn das Objekt keinen Datensatz der angegebenen Attributgruppe-Aspekt Kombination hat.
      • getConfigurationData

        Data[] getConfigurationData​(SystemObject[] objects,
                                    AttributeGroup atg,
                                    Aspect asp)
        Liefert die konfigurierenden Datensätze einer Attributgruppe und eines Aspekts für mehrere Objekte zurück. Die zurückgelieferten Datensätze werden auch lokal zwischengespeichert und können mit der Methode SystemObject.getConfigurationData(de.bsvrz.dav.daf.main.config.AttributeGroup) ohne weitere Konfigurationsanfrage abgefragt werden. Die Methode kann somit zur Minimierung der Anzahl von Konfigurationsanfragen und den damit verbundenen Verzögerungszeiten eingesetzt werden.
        Parameters:
        objects - Array mit den Systemobjekten der gewünschten konfigurierenden Datensätze.
        atg - Attributgruppe der gewünschten Datensätze.
        asp - Aspekt der gewünschten Datensätze.
        Returns:
        Array mit den gewünschten konfigurierenden Datensätzen. Das Array enthält für jedes Element des Parameters objects einen korrespondierender konfigurierender Datensatz oder null, wenn das Objekt keinen Datensatz der angegebenen Attributgruppe-Aspekt Kombination hat.
      • getActiveVersion

        short getActiveVersion​(ConfigurationArea configurationArea)
        Gibt die aktive Version des angegebenen Konfigurationsbereichs zurück.
        Parameters:
        configurationArea - der Konfigurationsbereich
        Returns:
        Versionsnummer des Konfigurationsbereichs
      • getObject

        SystemObject getObject​(java.lang.String pid)
        Liefert das System-Objekt mit der angegebenen PID zurück.
        Specified by:
        getObject in interface ObjectLookup
        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:
        java.lang.IllegalArgumentException - wenn der Parameter null ist
        See Also:
        DataModel
      • getObject

        SystemObject getObject​(long id)
        Liefert das System-Objekt mit der angegebenen Objekt-ID zurück.
        Specified by:
        getObject in interface ObjectLookup
        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.
        See Also:
        DataModel
      • getObjects

        java.util.List<SystemObject> getObjects​(long... ids)
        Liefert eine Liste zurück, die zu den angegebenen IDs die zugehörigen System-Objekte enthält. Die Reihenfolge der Objekte der Liste entspricht der Reihenfolge der übergebenen IDs. Wurde ein Objekt nicht gefunden, enthält die Liste an der entsprechenden Position null.

        Diese Methode kann bei der Anfrage nach mehreren IDs schneller sein, als mehrmals getObject(long) aufzurufen.

        Parameters:
        ids - Array mit IDs
        Returns:
        zugehörige System-Objekte
        See Also:
        getObject(long)
      • getObjects

        java.util.List<SystemObject> getObjects​(java.lang.String... pids)
        Liefert eine Liste zurück, die zu den angegebenen PIDs die zugehörigen System-Objekte enthält. Die Reihenfolge der Objekte der Liste entspricht der Reihenfolge der übergebenen PIDs. Wurde ein Objekt nicht gefunden, enthält die Liste an der entsprechenden Position null.

        Diese Methode kann bei der Anfrage nach mehreren PIDs schneller sein, als mehrmals getObject(java.lang.String) aufzurufen.

        Parameters:
        pids - Array mit PIDs
        Returns:
        zugehörige System-Objekte
        Throws:
        java.lang.IllegalArgumentException - wenn ein Element des Parameters null ist
        See Also:
        getObject(java.lang.String)
      • getObjectsById

        java.util.List<SystemObject> getObjectsById​(java.util.Collection<java.lang.Long> ids)
        Liefert eine Liste zurück, die zu den angegebenen IDs die zugehörigen System-Objekte enthält. Die Reihenfolge der Objekte der Liste entspricht der Reihenfolge der übergebenen IDs. Wurde ein Objekt nicht gefunden, enthält die Liste an der entsprechenden Position null.

        Diese Methode kann bei der Anfrage nach mehreren IDs schneller sein, als mehrmals getObject(long) aufzurufen.

        Parameters:
        ids - Liste mit IDs
        Returns:
        zugehörige System-Objekte
        Throws:
        java.lang.IllegalArgumentException - wenn ein Element des Parameters null ist
        See Also:
        getObject(long)
      • getObjectsByPid

        java.util.List<SystemObject> getObjectsByPid​(java.util.Collection<java.lang.String> pids)
        Liefert eine Liste zurück, die zu den angegebenen PIDs die zugehörigen System-Objekte enthält. Die Reihenfolge der Objekte der Liste entspricht der Reihenfolge der übergebenen PIDs. Wurde ein Objekt nicht gefunden, enthält die Liste an der entsprechenden Position null.

        Diese Methode kann bei der Anfrage nach mehreren PIDs schneller sein, als mehrmals getObject(java.lang.String) aufzurufen.

        Parameters:
        pids - Liste mit PIDs
        Returns:
        zugehörige System-Objekte
        Throws:
        java.lang.IllegalArgumentException - wenn ein Element des Parameters null ist
        See Also:
        getObject(java.lang.String)
      • getTypeTypeObject

        SystemObjectType getTypeTypeObject()
        Liefert das Systemobjekt, das den Typ von Typobjekten darstellt.
        Returns:
        Das Typ-Typ-Objekt.
      • getBaseTypes

        java.util.List<SystemObjectType> getBaseTypes()
        Liefert die Basistypen, also die Typ-Objekte, die keinen anderen Typ erweitern, zurück. Basistypen sind z.B. die Objekte mit den Permanenten IDs "typ.konfigurationsObjekt" und "typ.dynamischesObjekt".
        Returns:
        Liste mit Typ-Objekten.
      • getType

        default SystemObjectType getType​(java.lang.String pid)
        Liefert das Typ-Objekt mit der angegebenen PID zurück.
        Parameters:
        pid - Die permanente ID des Typ-Objekts
        Returns:
        Das gewünschte Typ-Objekt oder null, wenn es kein Objekt mit der angegebenen PID gibt.
        Throws:
        java.lang.IllegalArgumentException - Wenn das Objekt mit der angegebenen Pid kein Typ-Objekt ist.
      • getDynamicType

        default DynamicObjectType getDynamicType​(java.lang.String pid)
        Liefert das Dynamische-Typ-Objekt mit der angegebenen PID zurück.
        Parameters:
        pid - Die permanente ID des Typ-Objekts
        Returns:
        Das gewünschte Typ-Objekt oder null, wenn es kein Objekt mit der angegebenen PID gibt.
        Throws:
        java.lang.IllegalArgumentException - Wenn das Objekt mit der angegebenen Pid kein Dynamischer-Typ-Objekt ist.
        Since:
        3.14
      • getConfigType

        default ConfigurationObjectType getConfigType​(java.lang.String pid)
        Liefert das Konfigurations-Typ-Objekt mit der angegebenen PID zurück.
        Parameters:
        pid - Die permanente ID des Typ-Objekts
        Returns:
        Das gewünschte Typ-Objekt oder null, wenn es kein Objekt mit der angegebenen PID gibt.
        Throws:
        java.lang.IllegalArgumentException - Wenn das Objekt mit der angegebenen Pid kein Konfigurations-Typ-Objekt ist.
        Since:
        3.14
      • getConfigObject

        default ConfigurationObject getConfigObject​(java.lang.String pid)
        Liefert das Konfigurations-Objekt mit der angegebenen PID zurück.
        Parameters:
        pid - Die permanente ID des Objekts
        Returns:
        Das gewünschte Typ-Objekt oder null, wenn es kein Objekt mit der angegebenen PID gibt.
        Throws:
        java.lang.IllegalArgumentException - Wenn das Objekt mit der angegebenen Pid kein konfigurierendes Objekt ist.
        Since:
        3.14
      • getDynamicObject

        default DynamicObject getDynamicObject​(java.lang.String pid)
        Liefert das dynamische Objekt mit der angegebenen PID zurück.
        Parameters:
        pid - Die permanente ID des Objekts
        Returns:
        Das gewünschte Typ-Objekt oder null, wenn es kein Objekt mit der angegebenen PID gibt.
        Throws:
        java.lang.IllegalArgumentException - Wenn das Objekt mit der angegebenen Pid kein Dynamisches Objekt ist.
        Since:
        3.14
      • getObjectSetType

        default ObjectSetType getObjectSetType​(java.lang.String pid)
        Liefert das Mengen-Typ-Objekt mit der angegebenen PID zurück.
        Parameters:
        pid - Die permanente ID des Mengen-Typ-Objekts
        Returns:
        Das gewünschte Typ-Objekt oder null, wenn es kein Objekt mit der angegebenen PID gibt.
        Throws:
        java.lang.IllegalArgumentException - Wenn das Objekt mit der angegebenen Pid kein Mengen-Typ-Objekt ist.
      • getAttributeGroup

        default AttributeGroup getAttributeGroup​(java.lang.String pid)
        Liefert die Attributgruppe mit der angegebenen PID zurück.
        Parameters:
        pid - Die permanente ID der Attributgruppe
        Returns:
        Die gewünschte Attributgruppe oder null, wenn es kein Objekt mit der gewünschten PID gibt.
        Throws:
        java.lang.IllegalArgumentException - Wenn das Objekt mit der angegebenen Pid keine Attributgruppe ist.
      • getAttributeType

        default AttributeType getAttributeType​(java.lang.String pid)
        Liefert den Attribut-Typ mit der angegebenen PID zurück.
        Parameters:
        pid - Die permanente ID des Attribut-Typs
        Returns:
        Der gewünschte Attribut-Typ oder null, wenn es kein Objekt mit der angegebenen PID gibt.
        Throws:
        java.lang.IllegalArgumentException - Wenn das Objekt mit der angegebenen Pid kein Attributtyp ist.
      • getAspect

        default Aspect getAspect​(java.lang.String pid)
        Liefert den Aspekt mit der angegebenen PID zurück.
        Parameters:
        pid - Die permanente ID des Aspekts.
        Returns:
        Der gewünschte Aspekt oder null, wenn es kein Objekt mit der gewünschten PID gibt.
        Throws:
        java.lang.IllegalArgumentException - Wenn das Objekt mit der angegebenen Pid kein Aspekt ist.
      • getAttributeGroupUsage

        AttributeGroupUsage getAttributeGroupUsage​(long usageIdentification)
        Bestimmt die Attributgruppenverwendung mit der angegebenen Datenverteiler-Identifizierung.
        Parameters:
        usageIdentification - Identifizierung dieser Attributgruppenverwendung bei der Kommunikation über den Datenverteiler.
        Returns:
        Zur Identifizierung gehörende Attributgruppenverwendung oder null, wenn es keine Attributgruppenverwendung mit der angegebenen Identifizierung gibt.
      • getAttributeGroupUsage

        @NotNull
        default AttributeGroupUsage getAttributeGroupUsage​(java.lang.String attributeGroupPid,
                                                           java.lang.String aspectPid)
        Bestimmt die Attributgruppenverwendung mit der angegebenen Attributgruppe-Aspekt-Kombination. Diese Methode entspricht
         
         this.getAttributeGroup(attributeGroupPid).getAttributeGroupUsage(aspectPid) 
         
        mit zusätzlicher Fehlerbehandlung. Diese Methode gibt nicht null zurück, sondern wirft bei nicht vorhandenen Objekten eine IllegalArgumentException mit aussagekräftiger Beschreibung.

        Diese Methode ist eine kompakte Alternative zum oben genannten Code und sollte nur benutzt werden, wenn Kompatibilität mit einer alten Kernsoftware nicht erforderlich ist.

        Parameters:
        attributeGroupPid - Pid der Attributgruppe
        aspectPid - Pid des Aspekts.
        Returns:
        Angefragte Attributgruppenverwendung
        Throws:
        java.lang.IllegalArgumentException - Wenn Attributgruppe oder Aspekt fehlen oder es bei der Attributgruppe keine Verwendung des angegebenen Aspektes gibt.
        Since:
        3.14
      • getDataDescription

        @NotNull
        default DataDescription getDataDescription​(java.lang.String attributeGroupPid,
                                                   java.lang.String aspectPid)
        Erzeugt eine DataDescription mit der angegebenen Attributgruppe-Aspekt-Kombination. Diese Methode entspricht vom Verhalten her
         new DataDescription(this.getAttributeGroup(attributeGroupPid), this.getAspect(aspectPid)); 
         
        mit zusätzlicher Fehlerbehandlung. Diese Methode gibt nicht null zurück, sondern wirft bei nicht vorhandenen Objekten eine IllegalArgumentException mit aussagekräftiger Beschreibung.

        Im Gegensatz zum DataDescription-Konstruktor prüft diese Methode, ob Attributgruppe und Aspekt eine gültige Attributgruppenverwendung für den Online-Versand bzw. -Empfang von Daten ergeben.

        Diese Methode ist eine kompakte Alternative zum oben genannten Code und sollte nur benutzt werden, wenn Kompatibilität mit einer alten Kernsoftware nicht erforderlich ist.

        Parameters:
        attributeGroupPid - Pid der Attributgruppe
        aspectPid - Pid des Aspekts.
        Returns:
        Angefragte DataDescription
        Throws:
        java.lang.IllegalArgumentException - Wenn Attributgruppe oder Aspekt fehlen oder es bei der Attributgruppe keine Verwendung des angegebenen Aspektes für den Versand von Onlinedaten gibt.
        Since:
        3.14
        See Also:
        ResultData(SystemObject, DataDescription, long, Data)
      • getConfigurationArea

        ConfigurationArea getConfigurationArea​(java.lang.String pid)
        Liefert zu der angegebenen Pid den passenden Konfigurationsbereich.
        Parameters:
        pid - die Pid des Konfigurationsbereichs
        Returns:
        der Konfigurationsbereich zur angegebenen Pid
      • getConfigurationAuthority

        ConfigurationAuthority getConfigurationAuthority()
        Liefert den lokalen Verantwortlichen der gesamten Konfiguration.
        Returns:
        der Konfigurationsverantwortliche der Konfiguration
      • getConfigurationAuthorityPid

        java.lang.String getConfigurationAuthorityPid()
        Liefert die Pid des lokalen Verantwortlichen der gesamten Konfiguration.
        Returns:
        die Pid des Konfigurationsverantwortlichen
      • getObjects

        java.util.Collection<SystemObject> getObjects​(java.lang.String pid,
                                                      long startTime,
                                                      long endTime)
        Gibt die Objekte zurück, die zu der angegebenen Pid in dem angegebenen Zeitraum gültig waren.
        Parameters:
        pid - die Pid der gewünschten Objekte
        startTime - der zu betachtende Startzeitpunkt des Anfragezeitraums
        endTime - der zu betrachtende Endzeitpunkt des Anfragezeitraums
        Returns:
        Die Objekte, die zu der angegebenen Pid in dem angegebenen Zeitraum gültig waren.
      • getObjects

        java.util.Collection<SystemObject> getObjects​(java.util.Collection<ConfigurationArea> configurationAreas,
                                                      java.util.Collection<SystemObjectType> systemObjectTypes,
                                                      ObjectTimeSpecification objectTimeSpecification)
        Gibt die Objekte zurück, die in einem der angegebenen Konfigurationsbereiche sind und deren Objekttyp in der angegebenen Objekttyp-Menge ist.
        Parameters:
        configurationAreas - Konfigurationsbereiche, die zu berücksichtigen sind. Wird null übergeben, so gilt dies als Wildcard und alle Konfigurationsbereiche werden betrachtet.
        systemObjectTypes - Objekttypen, die zu berücksichtigen sind. Wird null übergeben, so gilt dies als Wildcard und alle Objekttypen werden betrachtet.
        objectTimeSpecification - Gibt den Gültigkeitsbereich der geforderten Objekte an.
        Returns:
        Die gewünschten System-Objekte oder eine leere Collection, falls es keine passenden Objekte gibt.
      • getUserAdministration

        UserAdministration getUserAdministration()
        Gibt ein Objekt zurück, mit dem die Benutzer der Konfiguration verwaltet werden können.
        Returns:
        Objekt zur Benutzerverwaltung.
      • backupConfigurationFiles

        BackupResult backupConfigurationFiles​(java.lang.String targetDirectory,
                                              BackupProgressCallback callback)
                                       throws ConfigurationTaskException,
                                              RequestException
        Veranlasst die Konfiguration, alle Konfigurationsdateien zu sichern. Diese Funktion wartet auf das Beenden des Vorgangs. Wird der Auftrag über den Datenverteiler ausgeführt (DafDataModel) kann die Konfiguration andere Anfragen parallel ausführen. Wird die Funktion lokal ausgeführt (ConfigDataModel), kann es möglicherweise sinnvoll sein, die Funktion in einem eigenen Thread auszuführen.
        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. Falls das de.bsvrz.puk.config.configFile.datamodel.ConfigDataModel direkt benutzt wird und mit de.bsvrz.puk.config.configFile.datamodel.ConfigDataModel#setBackupBaseDirectory(java.io.File) noch keine Zielverzeichnis angelegt wurde, kann auch ein absoluter Pfadname angegeben werden. Ein relativer Pfadname würde dann relativ zum Arbeitsverzeichnis interpretiert.
        callback - Objekt, an das Statusmeldungen gesendet werden oder null, falls keine Rückmeldungen gewünscht sind
        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.
      • backupConfigurationFiles

        BackupResult backupConfigurationFiles​(java.lang.String targetDirectory,
                                              ConfigurationAuthority configurationAuthority,
                                              BackupProgressCallback callback)
                                       throws ConfigurationTaskException,
                                              RequestException
        Veranlasst die Konfiguration, ausgewählte Konfigurationsdateien zu sichern. Diese Funktion wartet auf das Beenden des Vorgangs. Wird der Auftrag über den Datenverteiler ausgeführt (DafDataModel) kann die Konfiguration andere Anfragen parallel ausführen. Wird die Funktion lokal ausgeführt (ConfigDataModel), kann es möglicherweise sinnvoll sein, die Funktion in einem eigenen Thread auszuführen.
        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. Falls das de.bsvrz.puk.config.configFile.datamodel.ConfigDataModel direkt benutzt wird und mit de.bsvrz.puk.config.configFile.datamodel.ConfigDataModel#setBackupBaseDirectory(java.io.File) noch keine Zielverzeichnis angelegt wurde, kann auch ein absoluter Pfadname angegeben werden. Ein relativer Pfadname würde dann relativ zum Arbeitsverzeichnis interpretiert.
        configurationAuthority - Konfigurationsverantwortlicher, dessen Konfigurations-Dateien gesichert werden sollen. Falls null werden alle Dateien gesichert.
        callback - Objekt, an das Statusmeldungen gesendet werden oder null, falls keine Rückmeldungen gewünscht sind
        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.