Class ConfigFileManager

  • All Implemented Interfaces:
    ConfigurationFileManager

    public class ConfigFileManager
    extends java.lang.Object
    implements ConfigurationFileManager
    Diese Methode stellt Konfigurationsbereiche zur Verfügung und verwaltet den Zugriff auf diese. Der Zugriff bezieht sich dabei auf die Dateien selber (Anlegen, Daten speichern, usw.), aber auch auf die dynamischen Objekte/Konfigurationsobjekte der einzelnen Bereiche.
    • Constructor Detail

      • ConfigFileManager

        public ConfigFileManager()
    • Method Detail

      • createAreaFile

        public ConfigurationAreaFile createAreaFile​(java.lang.String configurationAreaPid,
                                                    java.io.File configurationAreaDir)
                                             throws java.lang.IllegalArgumentException,
                                                    java.io.IOException,
                                                    de.bsvrz.sys.funclib.dataSerializer.NoSuchVersionException
        Diese Methode erstellt zu einem neuen Konfigurationsbereich eine Konfigurationsdatei. Der neue Konfigurationsbereich erhält den Zustand inaktiv. Soll er von der Konfiguration genutzt werden können, so muss er aktiviert werden.
        Specified by:
        createAreaFile in interface ConfigurationFileManager
        Parameters:
        configurationAreaPid - die Pid des neuen Konfigurationsbereichs
        configurationAreaDir - das Verzeichnis, in dem die Konfigurationsdatei angelegt werden soll
        Returns:
        der neue Konfigurationsbereich
        Throws:
        java.lang.IllegalArgumentException - Falls die Argumente ungültig sind.
        java.io.IOException - Falls Fehler im Zusammenhang mit der Datei des Konfigurationsbereichs auftreten.
        de.bsvrz.sys.funclib.dataSerializer.NoSuchVersionException
      • addAreaFile

        public ConfigurationAreaFile addAreaFile​(java.lang.String configurationAreaPid,
                                                 java.io.File configurationAreaDir,
                                                 short activeVersion,
                                                 java.util.List<VersionInfo> localVersionTimes)
                                          throws java.lang.IllegalArgumentException,
                                                 java.io.IOException,
                                                 de.bsvrz.sys.funclib.dataSerializer.NoSuchVersionException
        Der aktuellen Konfiguration wird der angegebene Konfigurationsbereich hinzugefügt. Gibt es bereits einen Konfigurationsbereich mit der angegebenen Pid, wird eine Fehlermeldung erzeugt.
        Specified by:
        addAreaFile in interface ConfigurationFileManager
        Parameters:
        configurationAreaPid - die Pid des Konfigurationsbereichs
        configurationAreaDir - das Verzeichnis, in dem die Konfigurationsdatei gespeichert wurde. Diese Verzeichnis wird benutzt um den Bereich zu laden.
        activeVersion - die aktuelle Version des Konfigurationsbereichs
        localVersionTimes - Diese Liste speichert zu jeder Version, die jemals aktiviert wurde, den Zeitpunkt an dem die Version aktiviert wurde. Die Zeitpunkte beziehen sich auf den Zeit, an dem sie auf der Konfiguration, die diese Methode aufruft, aktiviert wurden.
        Returns:
        der hinzugefügte Konfigurationsbereich
        Throws:
        java.lang.IllegalArgumentException - Falls der Konfigurationsbereich mit der Pid bereits zur Konfiguration hinzugefügt wurde.
        java.lang.IllegalStateException - Datei existiert nicht
        java.io.IOException
        de.bsvrz.sys.funclib.dataSerializer.NoSuchVersionException
      • getAreaFile

        public ConfigurationAreaFile getAreaFile​(java.lang.String configurationAreaPid)
        Description copied from interface: ConfigurationFileManager
        Diese Methode gibt ein Objekt zurück, das den Konfigurationsbereich darstellt.
        Specified by:
        getAreaFile in interface ConfigurationFileManager
        Parameters:
        configurationAreaPid - Pid des Konfigurationsbereichs
        Returns:
        Objekt, mit dem auf den Konfigurationsbereich zugegriffen werden kann. Ist kein Objekt vorhanden, wird null zurückgegeben.
      • getObjects

        public SystemObjectInformationInterface[] getObjects​(long... ids)
        Diese Methode funktioniert, indem anhand den Werten der _idMap die 4 möglichen Fälle unterschieden werden:

        (Aktuelle) Objekte, die direkt in der ID-Map stehen, werden einfach übernommen

        Transiente Objekte werden ebenfalls direkt übernommen

        Objekte der Mischmenge mit bekannter Dateiposition werden gesammelt und (aus Performancegründen) zusammen aus der Datei geladen.

        Von allen anderen Objekten ist nur die ID bekannt, diese IDs werden aufsteigend sortiert und ebenfalls gemeinsam aus den möglichen Konfigurationsdateien geladen.

        Bei jeder Umsortierung muss beachtet werden, dass die Methode die Objekte in der Anfragereihenfolge zurückgeben muss!

        Specified by:
        getObjects in interface ConfigurationFileManager
        Parameters:
        ids - Ids der Objekte
        Returns:
        Array mit Objekten in der gleichen Reihenfolge wie übergeben. Falls ein Objekt nicht bestimmt werden konnte, enthält das Array an dem entsprechenden Index null.
      • getSimulationObject

        public SystemObjectInformationInterface getSimulationObject​(java.lang.String pid,
                                                                    short simulationVariant)
        Description copied from interface: ConfigurationFileManager
        Gibt ein simulationsspezifisches Objekt anhand der Pid zurück. Es werden nur Objekte zurückgegeben, die in einer Simulation erzeugt wurden und damit auch nur in dieser Simulation gültig sind.
        Specified by:
        getSimulationObject in interface ConfigurationFileManager
        Parameters:
        pid - Pid
        simulationVariant - Simulationsvariante
        Returns:
        Objekt, dessen Pid übergeben wurde oder null falls kein Objekt existiert
      • getOldObjects

        public java.util.Collection<SystemObjectInformationInterface> getOldObjects​(java.util.List<java.lang.Long> ids)
        Ermittelt gelöschte Objekte anhand der ID. Diese müssen mit binärer Suche innerhalb von allen Konfigurationsdateien gesucht werden.

        Wenn mehrere IDs gesucht werden, ist es wesentlich schneller, diese Methode einmal mit alles IDs aufzurufen, als alle Objekte einzeln zu ermitteln!

        Parameters:
        ids - IDs
        Returns:
        Objekte in Anfragereihenfolge (enthält ggf. null-Elemente falls nicht ermittelbar)
      • loadOldObjects

        public SystemObjectInformationInterface[] loadOldObjects​(java.util.List<de.bsvrz.puk.config.configFile.fileaccess.ConfigFileManager.ConfigAreaFileLoadInformation> fileLoadInformations)
        Lädt Objekte aus der Datei, wenn deren Position bekannt ist.
        Parameters:
        fileLoadInformations - Objekte, die geladen werden sollen.
        Returns:
        Array mit entsprechenden Objekten (identische Position wie in Anfrage)
      • getObjects

        public java.util.List<DynamicObjectInfo> getObjects​(short simulationVariant)
                                                     throws java.lang.IllegalArgumentException
        Description copied from interface: ConfigurationFileManager
        Diese Methode gibt alle dynamischen Objekte zurück, die zu einer Simulationsvariante gehören. Der Zustand der dynamischen Objekte (gültig/ungültig) wird dabei nicht berücksichtigt. Die Simulationsvariante muss dabei größer 0 sein.
        Specified by:
        getObjects in interface ConfigurationFileManager
        Parameters:
        simulationVariant - Simulationsvariante, für die alle dynamischen Objekte zurückgegeben werden sollen. (Wertebereich 1...999)
        Returns:
        Liste mit dynamischen Objekten. Sind keine Objekte vorhande, wird eine leere Liste zurückgegeben.
        Throws:
        java.lang.IllegalArgumentException
      • saveConfigurationAreaFiles

        public void saveConfigurationAreaFiles()
                                        throws java.io.IOException
        Methode, die alle Konfigurationsbreiche speichert. Der Aufruf der Methode ist blockierend und kehrt erst dann zurück, wenn alle Konfigurationsbereiche gespeichert sind.
        Specified by:
        saveConfigurationAreaFiles in interface ConfigurationFileManager
        Throws:
        java.io.IOException - Es ist beim speichern der Versorgungsdateien zu einem Fehler gekommen. Es wurde trotz des Fehlers bei jeder Datei ConfigurationAreaFile.flush() aufgerufen. Die zuletzt aufgetretene IOException wird zurückgegeben.