Class ConfigFileManager
java.lang.Object
de.bsvrz.puk.config.configFile.fileaccess.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 Summary
Constructors Constructor Description ConfigFileManager()
-
Method Summary
Modifier and Type Method Description ConfigurationAreaFile
addAreaFile(java.lang.String configurationAreaPid, java.io.File configurationAreaDir, short activeVersion, java.util.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(java.lang.String configurationAreaPid, java.io.File configurationAreaDir)
Diese Methode erstellt zu einem neuen Konfigurationsbereich eine Konfigurationsdatei.SystemObjectInformationInterface
getActiveObject(long id)
SystemObjectInformationInterface
getActiveObject(java.lang.String pid)
Diese Methode gibt ein Objekt zurück, das derzeit in einem Konfigurationsbereich aktiv ist.ConfigurationAreaFile
getAreaFile(java.lang.String configurationAreaPid)
Diese Methode gibt ein Objekt zurück, das den Konfigurationsbereich darstellt.ConfigurationAreaFile[]
getConfigurationAreas()
Diese Methode gibt alle Konfigurationsbereiche zurück, die mitConfigurationFileManager.addAreaFile(java.lang.String, java.io.File, short, java.util.List<de.bsvrz.puk.config.main.managementfile.VersionInfo>)
eingefügt wurden.SystemObjectInformationInterface[]
getNewObjects(java.lang.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.SystemObjectInformationInterface[]
getObjects(long... ids)
Diese Methode funktioniert, indem anhand den Werten der_idMap
die 4 möglichen Fälle unterschieden werden:java.util.List<DynamicObjectInfo>
getObjects(short simulationVariant)
Diese Methode gibt alle dynamischen Objekte zurück, die zu einer Simulationsvariante gehören.SystemObjectInformationInterface
getOldObject(long id)
java.util.Collection<SystemObjectInformationInterface>
getOldObjects(java.util.List<java.lang.Long> ids)
Ermittelt gelöschte Objekte anhand der ID.SystemObjectInformationInterface
getSimulationObject(java.lang.String pid, short simulationVariant)
Gibt ein simulationsspezifisches Objekt anhand der Pid zurück.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.void
saveConfigurationAreaFiles()
Methode, die alle Konfigurationsbreiche speichert.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Constructor Details
-
ConfigFileManager
public ConfigFileManager()
-
-
Method Details
-
createAreaFile
public ConfigurationAreaFile createAreaFile(java.lang.String configurationAreaPid, java.io.File configurationAreaDir) throws java.lang.IllegalArgumentException, java.io.IOException, de.bsvrz.sys.funclib.dataSerializer.NoSuchVersionExceptionDiese 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 interfaceConfigurationFileManager
- Parameters:
configurationAreaPid
- die Pid des neuen KonfigurationsbereichsconfigurationAreaDir
- 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.NoSuchVersionExceptionDer 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 interfaceConfigurationFileManager
- Parameters:
configurationAreaPid
- die Pid des KonfigurationsbereichsconfigurationAreaDir
- das Verzeichnis, in dem die Konfigurationsdatei gespeichert wurde. Diese Verzeichnis wird benutzt um den Bereich zu laden.activeVersion
- die aktuelle Version des KonfigurationsbereichslocalVersionTimes
- 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 nichtjava.io.IOException
de.bsvrz.sys.funclib.dataSerializer.NoSuchVersionException
-
getAreaFile
Description copied from interface:ConfigurationFileManager
Diese Methode gibt ein Objekt zurück, das den Konfigurationsbereich darstellt.- Specified by:
getAreaFile
in interfaceConfigurationFileManager
- Parameters:
configurationAreaPid
- Pid des Konfigurationsbereichs- Returns:
- Objekt, mit dem auf den Konfigurationsbereich zugegriffen werden kann. Ist kein Objekt vorhanden, wird
null
zurückgegeben.
-
getObject
Description copied from interface:ConfigurationFileManager
Gibt ein Objekt zurück, das über die Id identifiziert wird. Es werden alle Konfigurationsbereiche betrachtet, die mitConfigurationFileManager.addAreaFile(java.lang.String, java.io.File, short, java.util.List<de.bsvrz.puk.config.main.managementfile.VersionInfo>)
hinzugefügt wurden.- Specified by:
getObject
in interfaceConfigurationFileManager
- Parameters:
id
- Id des Objekts- Returns:
- Objekt, das angefordert wurde oder
null
falls kein Objekt gefunden werden konnte
-
getObjects
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 übernommenObjekte 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 interfaceConfigurationFileManager
- 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
.
-
getActiveObject
-
getActiveObject
Description copied from interface:ConfigurationFileManager
Diese Methode gibt ein Objekt zurück, das derzeit in einem Konfigurationsbereich aktiv ist. Es werden alle Konfigurationsbreiche geprüft, die mitConfigurationFileManager.addAreaFile(java.lang.String, java.io.File, short, java.util.List<de.bsvrz.puk.config.main.managementfile.VersionInfo>)
hinzugefügt wurden. Objekte, die nur in Simulationen gültig sind werden hier nicht zurückgegeben, stattdessen istConfigurationFileManager.getSimulationObject(String, short)
zu benutzen.- Specified by:
getActiveObject
in interfaceConfigurationFileManager
- Parameters:
pid
- Pid des Objekts, das gesucht werden soll- Returns:
- Objekt, dessen Pid übergeben wurde oder
null
falls kein Objekt existiert
-
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 interfaceConfigurationFileManager
- Parameters:
pid
- PidsimulationVariant
- Simulationsvariante- Returns:
- Objekt, dessen Pid übergeben wurde oder
null
falls kein Objekt existiert
-
getNewObjects
Description copied from interface:ConfigurationFileManager
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 mitConfigurationFileManager.addAreaFile(java.lang.String, java.io.File, short, java.util.List<de.bsvrz.puk.config.main.managementfile.VersionInfo>)
hinzugefügt wurden.- Specified by:
getNewObjects
in interfaceConfigurationFileManager
- 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
-
getOldObject
-
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)
-
getConfigurationAreas
Description copied from interface:ConfigurationFileManager
Diese Methode gibt alle Konfigurationsbereiche zurück, die mitConfigurationFileManager.addAreaFile(java.lang.String, java.io.File, short, java.util.List<de.bsvrz.puk.config.main.managementfile.VersionInfo>)
eingefügt wurden.- Specified by:
getConfigurationAreas
in interfaceConfigurationFileManager
- Returns:
- s.o.
-
getObjects
public java.util.List<DynamicObjectInfo> getObjects(short simulationVariant) throws java.lang.IllegalArgumentExceptionDescription 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 interfaceConfigurationFileManager
- 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.IOExceptionMethode, 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 interfaceConfigurationFileManager
- Throws:
java.io.IOException
- Es ist beim speichern der Versorgungsdateien zu einem Fehler gekommen. Es wurde trotz des Fehlers bei jeder DateiConfigurationAreaFile.flush()
aufgerufen. Die zuletzt aufgetretene IOException wird zurückgegeben.
-
close
public void close()Description copied from interface:ConfigurationFileManager
Diese Methode wird aufgerufen, wenn ein System heruntegefahren werden soll. Sie speichert alle Konfigurationsbereiche (sieheConfigurationFileManager.saveConfigurationAreaFiles()
und stellt einen Zustand her in dem das System wieder gestartet werden kann.- Specified by:
close
in interfaceConfigurationFileManager
-