de.bsvrz.puk.config.configFile.fileaccess
Interface ConfigurationFileManager

All Known Implementing Classes:
ConfigFileManager

public interface ConfigurationFileManager

Dieses Interface stellt eine Verwaltung für alle Konfigurationsdateien dar und ermöglicht den Zugriff auf diese. Die beschriebenen get-Methoden beziehen sich immer auf alle Konfigurationsdateien, die sich im Zugriff der Verwaltung befinden. Aus diesem Grund speichert die Verwaltung die aktiven Objekte zentral in einer Datenstruktur und deligiert nötige Zugriffe auf die Datei an das jeweilige ConfigurationAreaFile-Objekt.

Author:
Kappich+Kniß Systemberatung Aachen (K2S), Achim Wullenkord (AW), Stephan Homeyer (sth)

Method Summary
 ConfigurationAreaFile addAreaFile(String configurationAreaPid, File configurationAreaDir, short activeVersion, List<VersionInfo> localVersionTimes)
          Der aktuellen Konfiguration wird der angegebene Konfigurationsbereich hinzugefügt.
 void close()
          Diese Methode wird aufgerufen, wenn ein System heruntegefahren werden soll.
 ConfigurationAreaFile createAreaFile(String configurationAreaPid, File configurationAreaDir)
          Diese Methode erstellt zu einem neuen Konfigurationsbereich eine Konfigurationsdatei und fügt den Bereich mit addAreaFile(java.lang.String, java.io.File, short, java.util.List) den bestehenden Bereichen hinzu.
 SystemObjectInformationInterface getActiveObject(String pid)
          Diese Methode gibt ein Objekt zurück, das derzeit in einem Konfigurationsbereich aktiv ist.
 ConfigurationAreaFile getAreaFile(String configurationAreaPid)
          Diese Methode gibt ein Objekt zurück, das den Konfigurationsbereich darstellt.
 ConfigurationAreaFile[] getConfigurationAreas()
          Diese Methode gibt alle Konfigurationsbereiche zurück, die mit addAreaFile(java.lang.String, java.io.File, short, java.util.List) eingefügt wurden.
 SystemObjectInformationInterface[] getNewObjects(String pid)
          Diese Methode gibt alle Objekte zurück, die derzeit in einem Konfigurationsbereich weder aktiv noch als ungültig markiert sind.
 SystemObjectInformationInterface getObject(long id)
          Gibt ein Objekt zurück, das über die Id identifiziert wird.
 List<DynamicObjectInfo> getObjects(short simulationVariant)
          Diese Methode gibt alle dynamischen Objekte zurück, die zu einer Simulationsvariante gehören.
 SystemObjectInformationInterface[] getOldObjects(String pid, long startTime, long endTime)
          Diese Methode gibt alle Objekte zurück, die in einem Konfigurationsbereich als ungültig markiert sind und die im angegebnen Zeitbereich ungültig geworden sind.
 void saveConfigurationAreaFiles()
          Diese Methode sichert alle Konfigurationsbereiche, die mit addAreaFile(java.lang.String, java.io.File, short, java.util.List) übergeben wurden.
 

Method Detail

createAreaFile

ConfigurationAreaFile createAreaFile(String configurationAreaPid,
                                     File configurationAreaDir)
                                     throws IllegalArgumentException,
                                            IOException,
                                            NoSuchVersionException
Diese Methode erstellt zu einem neuen Konfigurationsbereich eine Konfigurationsdatei und fügt den Bereich mit addAreaFile(java.lang.String, java.io.File, short, java.util.List) den bestehenden Bereichen hinzu. Der neue Konfigurationsbereich erhält den Zustand inaktiv. Soll er von der Konfiguration genutzt werden können, so muss er aktiviert werden.

Parameters:
configurationAreaPid - die Pid des neuen Konfigurationsbereichs
configurationAreaDir - das Verzeichnis, in dem die Konfigurationsdatei angelegt werden soll
Returns:
der neue Konfigurationsbereich
Throws:
IllegalArgumentException - Falls die Argumente ungültig sind.
IOException - Falls Fehler im Zusammenhang mit der Datei des Konfigurationsbereichs auftreten.
NoSuchVersionException - TBD

addAreaFile

ConfigurationAreaFile addAreaFile(String configurationAreaPid,
                                  File configurationAreaDir,
                                  short activeVersion,
                                  List<VersionInfo> localVersionTimes)
                                  throws IllegalArgumentException,
                                         IOException,
                                         NoSuchVersionException
Der aktuellen Konfiguration wird der angegebene Konfigurationsbereich hinzugefügt. Gibt es bereits einen Konfigurationsbereich mit der angegebenen Pid, wird eine Fehlermeldung erzeugt.

Parameters:
configurationAreaPid - die Pid des Konfigurationsbereichs
configurationAreaDir - Verzeichnis, in dem die Konfigurationsdatei gespeichert wurde
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 die Zeit, an dem sie auf der Konfiguration, die diese Methode aufruft, aktiviert wurden.
Returns:
der hinzugefügte Konfigurationsbereich
Throws:
IllegalArgumentException - Falls der Konfigurationsbereich mit der Pid bereits zur Konfiguration hinzugefügt wurde.
IllegalStateException - Die Datei, die den Konfigurationsbereich enthält, existiert nicht.
IOException - TBD
NoSuchVersionException - TBD

getAreaFile

ConfigurationAreaFile getAreaFile(String configurationAreaPid)
Diese Methode gibt ein Objekt zurück, das den Konfigurationsbereich darstellt.

Parameters:
configurationAreaPid - Pid des Konfigurationsbereichs
Returns:
Objekt, mit dem auf den Konfigurationsbereich zugegriffen werden kann. Ist kein Objekt vorhanden, wird null zurückgegeben.

getObject

SystemObjectInformationInterface getObject(long id)
Gibt ein Objekt zurück, das über die Id identifiziert wird. Es werden alle Konfigurationsbereiche betrachtet, die mit addAreaFile(java.lang.String, java.io.File, short, java.util.List) hinzugefügt wurden.

Parameters:
id - Id des Objekts
Returns:
Objekt, das angefordert wurde oder null falls kein Objekt gefunden werden konnte

getActiveObject

SystemObjectInformationInterface getActiveObject(String pid)
Diese Methode gibt ein Objekt zurück, das derzeit in einem Konfigurationsbereich aktiv ist. Es werden alle Konfigurationsbreiche geprüft, die mit addAreaFile(java.lang.String, java.io.File, short, java.util.List) hinzugefügt wurden.

Parameters:
pid - Pid des Objekts, das gesucht werden soll
Returns:
Objekt, dessen Pid übergeben wurde oder null falls kein Objekt existiert

getNewObjects

SystemObjectInformationInterface[] getNewObjects(String pid)
                                                 throws IllegalArgumentException
Diese Methode gibt alle Objekte zurück, die derzeit in einem Konfigurationsbereich weder aktiv noch als ungültig markiert sind. Es werden alle Konfigurationsbereiche geprüft, die mit addAreaFile(java.lang.String, java.io.File, short, java.util.List) hinzugefügt wurden.

Parameters:
pid - pid der gesuchten Objekte
Returns:
Alle Objekte, deren Pid mit der übergebenen Pid übereinstimmt. Konnte kein Objekt gefunden werden, wird eine leeres Array zurückgegeben
Throws:
IllegalArgumentException

getOldObjects

SystemObjectInformationInterface[] getOldObjects(String pid,
                                                 long startTime,
                                                 long endTime)
                                                 throws IllegalArgumentException
Diese Methode gibt alle Objekte zurück, die in einem Konfigurationsbereich als ungültig markiert sind und die im angegebnen Zeitbereich ungültig geworden sind. Es werden alle Konfigurationsbreiche geprüft, die mit addAreaFile(java.lang.String, java.io.File, short, java.util.List) hinzugefügt wurden.

Parameters:
pid - pid des gesuchten Objekts
startTime - Startzeitpunkt des Bereichs
endTime - Endzeitpunkt des Bereichs
Returns:
die gesuchten Objekte
Throws:
IllegalArgumentException - Zur angegebenen Pid konnte kein Objekt gefunden werden

getConfigurationAreas

ConfigurationAreaFile[] getConfigurationAreas()
Diese Methode gibt alle Konfigurationsbereiche zurück, die mit addAreaFile(java.lang.String, java.io.File, short, java.util.List) eingefügt wurden.

Returns:
s.o.

getObjects

List<DynamicObjectInfo> getObjects(short simulationVariant)
                                   throws IllegalArgumentException
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.

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:
IllegalStateException - Der Wert der Simulationsvariante ist nicht 1...999
IllegalArgumentException

saveConfigurationAreaFiles

void saveConfigurationAreaFiles()
                                throws IOException
Diese Methode sichert alle Konfigurationsbereiche, die mit addAreaFile(java.lang.String, java.io.File, short, java.util.List) übergeben wurden. In den einzelnen Konfigurationsbereichen werden alle Änderungen, die an Objekten eines Konfigurationsbereichs vorgenommen wurden, persistent in die dafür vorgesehene Datei gespeichert.

Throws:
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.

close

void close()
Diese Methode wird aufgerufen, wenn ein System heruntegefahren werden soll. Sie speichert alle Konfigurationsbereiche (siehe saveConfigurationAreaFiles() und stellt einen Zustand her in dem das System wieder gestartet werden kann.