Interface ConfigurationAreaFile
-
- All Known Implementing Classes:
ConfigAreaFile
public interface ConfigurationAreaFile
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static class
ConfigurationAreaFile.RestructureMode
Definiert die Art einer Restrukturierung
-
Method Summary
All Methods Instance Methods Abstract Methods Deprecated Methods Modifier and Type Method Description void
close()
Diese Methode wird aufgerufen, wenn das System heruntergefahren soll.ConfigurationObjectInfo
createConfigurationObject(long objectID, long typeID, java.lang.String pid, java.lang.String name)
Diese Methode erzeugt ein Konfigurationsobjekt.DynamicObjectInfo
createDynamicObject(long objectID, long typeID, java.lang.String pid, short simulationVariant, java.lang.String name, de.bsvrz.dav.daf.main.config.DynamicObjectType.PersistenceMode persistenceMode)
Diese Methode erzeugt ein dynamisches Objekt, das sofort gültig ist.void
flush()
Diese Methode wird aufgerufen, wenn alle modifizierten Objekte des Konfigurationsbereichs persistent gespeichert werden sollen.void
forEach(java.util.function.Consumer<? super SystemObjectInformationInterface> consumer)
Iteriert über alle Objekte in diesem Bereich.void
forEachMixedObject(java.util.function.Consumer<? super SystemObjectInformationInterface> consumer)
Iteriert über alle Objekte in der Mischmenge in diesem Bereich.void
forEachOldConfigurationObject(java.util.function.Consumer<? super ConfigurationObjectInfo> consumer)
Iteriert über alle Konfigurationsobjekte in den NGA-Blöcken in diesem Bereich.void
forEachOldDynamicObject(java.util.function.Consumer<? super DynamicObjectInfo> consumer)
Iteriert über alle dynamischen Objekte im NGDyn-Block in diesem Bereich.SystemObjectInformationInterface[]
getActualObjects(long typeId)
Gibt alle aktuellen Objekte zurück, die als TypeId die übergebene TypeId besitzen.SystemObjectInformationInterface[]
getActualObjects(java.util.Collection<java.lang.Long> typeIds)
Gibt alle aktuellen Objekte zurück, die als TypeId einen der übergebenen TypeIds besitzen.ConfigurationObjectInfo
getConfigurationAreaInfo()
Diese Methode gibt Informationen über das Konfigurationsobjekt zurück, das den Konfigurationsbereich darstellt.SystemObjectInformationInterface[]
getCurrentObjects()
Diese Methode gibt alle dynamischen Objekte und Konfigurationsobjekte zurück, die in der aktuellen Version aktuell sind.long
getGreatestId()
Diese Methode gibt die größte vergebene laufende Nummer einer Id des Konfigurationsbereichs zurück.SystemObjectInformationInterface[]
getNewObjects()
Diese Methode gibt alle Konfigurationsobjekte zurück, die in einer zukünftigen Version aktuell werden.short
getNextActiveVersion()
Liefert die Version, ab der neu erstellte Konfigurationsobjekte gültig werden.SystemObjectInformationInterface[]
getObjects(long startTime, long endTime, ConfigurationAreaTime kindOfTime, de.bsvrz.dav.daf.main.config.TimeSpecificationType timeSpecificationType, java.util.Collection<java.lang.Long> typeIds)
Diese Methode gibt alle dynamischen Objekte und Konfigurationsobjekte zurück, die innerhalb des angegebenen Zeitbereichs gültig waren und deren TypeId gleich einer der übergebenen TypeIdŽs ist.java.util.List<SystemObjectInformationInterface>
getObjects(java.lang.String pid, long startTime, long endTime, ConfigurationAreaTime kindOfTime, short simulationVariant)
Diese Methode gibt Objekte zurück, die in dem angegebenen Zeibereich gültig waren.SystemObjectInformationInterface
getOldObject(long id)
Diese Methode gibt ein Objekt zurück, das als ungültig markiert wurde.SystemObjectInformationInterface[]
getOldObjects(java.util.SortedSet<java.lang.Long> ids)
Diese Methode tut das gleiche wiegetOldObject(long)
, aber für mehrere IDs gleichzeitig.int
getSerializerVersion()
Alle Daten, die als Byte-Array gespeichert werden müssen, werden mit einem SerializerSerializer
erstellt.boolean
initialVersionRestructure()
Diese Methode wird aufgerufen, wenn der Konfigurationsverantwortliche eine neue Version aktiviert.void
markObjectsForDeletion(java.util.List<java.lang.Long> objectsToDelete)
Markiert eine Menge von dynamischen Objekten als ausreichend als und nicht mehr Referenziert, sodass diese ggf. beim nächsten Neustart endgültig gelöscht werden können.boolean
referenceAllowed(SystemObjectInformationInterface systemObjectInfo)
Prüft, ob ein angegebenenes Objekt von anderen Objekten referenzert werden darfboolean
restructure()
Deprecated.Bitte Restrukturierungsart angebenvoid
restructure(ConfigurationAreaFile.RestructureMode mode)
Diese Methode reorganisiert eine Konfigurationsbereichsdatei.void
setNextActiveVersion(short nextActiveVersion)
Legt die Version fest mit der Konfigurationsobjekte, die mitcreateConfigurationObject(long, long, java.lang.String, java.lang.String)
erzeugt werden, gültig werden.
-
-
-
Method Detail
-
getConfigurationAreaInfo
ConfigurationObjectInfo getConfigurationAreaInfo()
Diese Methode gibt Informationen über das Konfigurationsobjekt zurück, das den Konfigurationsbereich darstellt.- Returns:
- Informationen über das Objekt, das den Konfigurationsbereich darstellt
-
flush
void flush() throws java.io.IOException
Diese Methode wird aufgerufen, wenn alle modifizierten Objekte des Konfigurationsbereichs persistent gespeichert werden sollen.- Throws:
java.io.IOException
- Fehler beim Zugriff auf die Datei in der der Konfigurationsbereich gespeichert ist
-
close
void close() throws java.io.IOException
Diese Methode wird aufgerufen, wenn das System heruntergefahren soll. Es müssen alle Daten gespeichert werden (sieheflush()
und ein Zustand hergestellt werden, mit dem das System zu einem späteren Zeitpunkt wieder hochgefahren werden kann.- Throws:
java.io.IOException
- Fehler beim Zugriff auf die Datei in der der Konfigurationsbereich gespeichert ist
-
createDynamicObject
DynamicObjectInfo createDynamicObject(long objectID, long typeID, java.lang.String pid, short simulationVariant, java.lang.String name, de.bsvrz.dav.daf.main.config.DynamicObjectType.PersistenceMode persistenceMode) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException
Diese Methode erzeugt ein dynamisches Objekt, das sofort gültig ist.- Parameters:
objectID
- ID des ObjektstypeID
- Typ des Objekts, der Typ wird über die ID festgelegtpid
- Pid des ObjektssimulationVariant
- Simulationsvariante unter der das dynamische Objekt gültig istname
- Name des Objekts,null
wird als "" interpretiertpersistenceMode
- Soll das dynamische Objekte persistent gespeichert werden- Returns:
- Objekt, über das auf das dynamische Objekt zugegriffen werden kann
- Throws:
java.lang.IllegalArgumentException
- Die übergebene Id des Objekts muss größer als die größte Id des Konfigurationsbereichs seinjava.lang.IllegalStateException
- See Also:
getGreatestId()
-
createConfigurationObject
ConfigurationObjectInfo createConfigurationObject(long objectID, long typeID, java.lang.String pid, java.lang.String name) throws java.lang.IllegalStateException, java.lang.IllegalArgumentException
Diese Methode erzeugt ein Konfigurationsobjekt.- Parameters:
objectID
- ID des ObjektstypeID
- Typ des Objekts, der Typ wird über die ID festgelegtpid
- Pid des Objektsname
- Name des Objekts,null
wird als "" interpretiert- Returns:
- Objekt, über das auf das Konfigurationsobjekt zugegriffen werden kann
- Throws:
java.lang.IllegalStateException
- Die Version, mit der das Objekt gültig werden soll, wurde noch nicht mitsetNextActiveVersion(short)
festgelegtjava.lang.IllegalArgumentException
- Die übergebene Id des Objekts muss größer als die größte Id des Konfigurationsbereichs sein- See Also:
getGreatestId()
-
getCurrentObjects
SystemObjectInformationInterface[] getCurrentObjects()
Diese Methode gibt alle dynamischen Objekte und Konfigurationsobjekte zurück, die in der aktuellen Version aktuell sind.- Returns:
- s.o.
-
getActualObjects
SystemObjectInformationInterface[] getActualObjects(long typeId)
Gibt alle aktuellen Objekte zurück, die als TypeId die übergebene TypeId besitzen.- Parameters:
typeId
- TypeId, die ein Objekt besitzen muss, damit es zurückgegeben wird- Returns:
- Objekte, deren TypeId gleich der übergebenen TypeId sind. Ist kein Objekt vorhanden, so wird ein leeres Array zurückgegeben.
-
getActualObjects
SystemObjectInformationInterface[] getActualObjects(java.util.Collection<java.lang.Long> typeIds)
Gibt alle aktuellen Objekte zurück, die als TypeId einen der übergebenen TypeIds besitzen.- Parameters:
typeIds
- TypeIds, die ein Objekt besitzen muss, damit es zurückgegeben wird- Returns:
- Objekte, deren TypeId gleich einem der übergebenen TypeIds sind. Ist kein Objekt vorhanden, so wird ein leeres Array zurückgegeben.
-
getObjects
SystemObjectInformationInterface[] getObjects(long startTime, long endTime, ConfigurationAreaTime kindOfTime, de.bsvrz.dav.daf.main.config.TimeSpecificationType timeSpecificationType, java.util.Collection<java.lang.Long> typeIds)
Diese Methode gibt alle dynamischen Objekte und Konfigurationsobjekte zurück, die innerhalb des angegebenen Zeitbereichs gültig waren und deren TypeId gleich einer der übergebenen TypeIdŽs ist. Der ParametertimeSpecificationType
bestimmt, wann/wie lange ein Objekt gültig gewesen sein muss um in die Lösung aufgenommen zu werden.- Parameters:
startTime
- Zeitpunkt, ab der ein Objekt gültig sein muss, um zurückgegeben zu werdenendTime
- Zeitpunkt, bis zu der Objekte zurückgegeben werdenkindOfTime
- Ein Konfigurationsobjekt wird mit der Aktivierung einer Version gültig. Da der Konfigurationsverantwortliche die Version zu einem früheren Zeitpunkt aktiviert haben kann, als die lokale Konfiguration, legt dieser Parameter fest, welcher Zeitpunkt für ein Konfigurationsobjekt benutzt werden soll an dem es als "gültig" markiert wurde.timeSpecificationType
- Gibt die Art und Weise an, wie der Zeitraum zu betrachten ist.typeIds
- Liste von TypeIdŽs. Damit ein Objekt zurückgegeben wird, muss die TypeId des Objekts mit einer TypeId in der Liste übereinstimmen- Returns:
- Objekte, die in dem angegebene Zeitbereich zu einem Zeitpunkt gültig waren und deren TypeId mit einer geforderten TypeId übereinstimmt
-
getNewObjects
SystemObjectInformationInterface[] getNewObjects()
Diese Methode gibt alle Konfigurationsobjekte zurück, die in einer zukünftigen Version aktuell werden.- Returns:
- Konfigurationsobjekte, die zukünftig aktuell werden aber es in der aktuellen Version noch nicht sind.
-
forEach
void forEach(java.util.function.Consumer<? super SystemObjectInformationInterface> consumer)
Iteriert über alle Objekte in diesem Bereich.- Parameters:
consumer
- Java-8-Style Consumer, an den jedes gefundene Objekt übergeben wird
-
forEachOldConfigurationObject
void forEachOldConfigurationObject(java.util.function.Consumer<? super ConfigurationObjectInfo> consumer)
Iteriert über alle Konfigurationsobjekte in den NGA-Blöcken in diesem Bereich.- Parameters:
consumer
- Java-8-Style Consumer, an den jedes gefundene Objekt übergeben wird
-
forEachOldDynamicObject
void forEachOldDynamicObject(java.util.function.Consumer<? super DynamicObjectInfo> consumer)
Iteriert über alle dynamischen Objekte im NGDyn-Block in diesem Bereich.- Parameters:
consumer
- Java-8-Style Consumer, an den jedes gefundene Objekt übergeben wird
-
forEachMixedObject
void forEachMixedObject(java.util.function.Consumer<? super SystemObjectInformationInterface> consumer)
Iteriert über alle Objekte in der Mischmenge in diesem Bereich.- Parameters:
consumer
- Java-8-Style Consumer, an den jedes gefundene Objekt übergeben wird
-
getOldObject
SystemObjectInformationInterface getOldObject(long id)
Diese Methode gibt ein Objekt zurück, das als ungültig markiert wurde. Ist in diesem Konfigurationsbereich kein Objekt mit der Id vorhanden, wirdnull
zurückgegeben.- Parameters:
id
- Id des geforderten Objekts- Returns:
- Objekt, das als ungültig markiert wurde oder
null
-
getOldObjects
SystemObjectInformationInterface[] getOldObjects(java.util.SortedSet<java.lang.Long> ids)
Diese Methode tut das gleiche wiegetOldObject(long)
, aber für mehrere IDs gleichzeitig. Dadurch kann die Performance wesentlich gesteigert werden.Die optimierte Implementierung setzt voraus, dass die IDs bereits natürlich sortiert übergeben werden. Das wird von der Implementierung nicht überprüft!
- Parameters:
ids
- Objekt-IDs aufsteigend sortiert- Returns:
- Objekte in Anfragereihenfolge (kann null-Elemente enthalten)
-
getObjects
java.util.List<SystemObjectInformationInterface> getObjects(java.lang.String pid, long startTime, long endTime, ConfigurationAreaTime kindOfTime, short simulationVariant)
Diese Methode gibt Objekte zurück, die in dem angegebenen Zeibereich gültig waren.- Parameters:
pid
- Pid, über die die Objekte identifiziert werdenstartTime
- Zeitpunkt, ab dem ein Objekt mit der angegebenen Pid gültig gewesen sein muss um zurückgegeben zu werden. War das Objekt vor dem angegebenen Zeitraum bereits gültig, so wird es ebenfalls zurückgegeben.endTime
- Zeitpunkt, bis zu dem ein Objekt mit der angegebenen Pid gültig gewesen sein muss um zurückgegeben zu werden. Ist das Objekt über diesen Zeitraum hinweg gültig, so wird es ebenfalls zurückgegeben. Der Zeitpunkt darf nicht in der Zukunft liegen, der größt mögliche Zeitpunkt ist die aktuelle Zeit.kindOfTime
- Legt fest, welcher Zeitpunkt bei einer aktivierten Version benutzt wird. Der Zeitpunkt der lokalen Aktivierung einer Version oder aber der Zeitpunkt der Aktivierung durch den Konfigurationsverantwortlichen.simulationVariant
- Zusätzlich zu berücksichtigende Simulationsvariante (außer 0). Es wird nicht nach dieser Simulationsvariante gefilert, d. h. wenn der Aufrufer nur Objekte benötigt, die innerhalb einer speziellen Simulation gültig sind, dann muss er selbst die zurückgegebenen Objekte noch einmal selbst filtern und dabei auch die in der Simulationsstrecke definierten Typen beachten.- Returns:
- Alle Objekte, die über die Pid identifiziert werden und im gewünschten Zeitbereich gültig waren. Sind keine Objekte vorhanden, wird ein leeres Array zurückgegeben (Größe 0). Wenn eine Simulationsvariante außer 0 angegeben wurde, werden sowohl Objekte dieser Variante als auch nicht simulierte Objekte (SimVar = 0) zurückgegeben.
-
getSerializerVersion
int getSerializerVersion()
Alle Daten, die als Byte-Array gespeichert werden müssen, werden mit einem SerializerSerializer
erstellt. Die benutzte Version ist in der gesamten Datei identisch. Ein Versionswechsel innerhalb der Datei ohne die Konvertierung aller Daten auf die neue Version ist nicht gestattet.- Returns:
- Versionsnummer des Serialisierers mit dem alle Byte-Arrays erstellt wurden
-
getNextActiveVersion
short getNextActiveVersion()
Liefert die Version, ab der neu erstellte Konfigurationsobjekte gültig werden.- Returns:
- Liefert eine Version, ab der neu erstellte Konfigurationsobjekte gültig werden.
-
setNextActiveVersion
void setNextActiveVersion(short nextActiveVersion)
Legt die Version fest mit der Konfigurationsobjekte, die mitcreateConfigurationObject(long, long, java.lang.String, java.lang.String)
erzeugt werden, gültig werden.- Parameters:
nextActiveVersion
- Version, mit der Konfigurationsobjekte gültig werden. Die erste Version, mit der ein Objekt gültig sein kann, ist die 1. Die Versionen sind positive Ganzzahlen, die fortlaufend nummeriert sind.
-
restructure
@Deprecated boolean restructure()
Deprecated.Bitte Restrukturierungsart angebenDiese Methode reorganisiert eine Konfigurationsbereichsdatei. Die Mischmenge wird dabei, falls möglich, verkleinert und die als ungültig markierten Objekte werden in die entsprechenden Blöcke kopiert. Kommt es bei der Reorganisation zu einem Fehler, so wird der Zustand vor der Reorganisation wiederhergestellt. Alle Methoden, die einen Dateizugriff benötigen (flush, Objekt auf Invalid setzen, usw.) und während der Reorganisation aufgerufen werden, sind blockierend.Diese Methode darf nur durch den Konfigrationsverantwortlichen aufgerufen werden.
- Returns:
- true = Die Restrukturierung der Daten war erfolgreich; false = Die Restrukturierung der Daten hat nicht geklappt, es wird auf der alten Datei weitergearbeitet, es sind keine Daten verloren gegangen
-
restructure
void restructure(ConfigurationAreaFile.RestructureMode mode) throws java.io.IOException
Diese Methode reorganisiert eine Konfigurationsbereichsdatei. Die Mischmenge wird dabei, falls möglich, verkleinert und die als ungültig markierten Objekte werden in die entsprechenden Blöcke kopiert. Kommt es bei der Reorganisation zu einem Fehler, so wird der Zustand vor der Reorganisation wiederhergestellt. Alle Methoden, die einen Dateizugriff benötigen (flush, Objekt auf Invalid setzen, usw.) und während der Reorganisation aufgerufen werden, sind blockierend.Diese Methode darf nur durch den Konfigurationsverantwortlichen aufgerufen werden.
- Parameters:
mode
- Restrukturierungsart (sieheRestructureMode
- Throws:
java.io.IOException
- Falls ein Fehler bei der Restrukturierung auftrat. In diesem Fall bleibt der vorherige Zustand erhalten.
-
initialVersionRestructure
boolean initialVersionRestructure()
Diese Methode wird aufgerufen, wenn der Konfigurationsverantwortliche eine neue Version aktiviert. Der Aufruf bewirkt, dass die Datei restrukturiert wird. Diese Methode muss druch den Konfigurationsverantwortlichen aufgerufen werden, wenn dieser die aktive Version wechselt.- Returns:
- true = Die Reorganisation war erfolgreich; false = Die Reorganisation war nicht erfolgreich
- See Also:
restructure()
-
getGreatestId
long getGreatestId()
Diese Methode gibt die größte vergebene laufende Nummer einer Id des Konfigurationsbereichs zurück. Die laufende Nummer ist in den ersten 40 Bits der Id kodiert.- Returns:
- Die größte vergebene laufende Nummer einer Id des Konfigurationsbereich oder 0 falls die Id noch unbekannt ist. Der Wert 0 wird zum Beispiel dann zurückgegeben, wenn der Konfigurationsbereich neu angelegt wurde und noch keine größte Id bekannt ist
-
markObjectsForDeletion
void markObjectsForDeletion(java.util.List<java.lang.Long> objectsToDelete)
Markiert eine Menge von dynamischen Objekten als ausreichend als und nicht mehr Referenziert, sodass diese ggf. beim nächsten Neustart endgültig gelöscht werden können. Jedes dynamische Objekt muss mindestens zweimal durch diese Methode markiert werden (auch über einen Neustart hinweg) bevor es gelöscht wird, da das Objekt mit dem ersten Aufruf zuerst als nicht mehr referenzierbar markiert wird und dann beim zweiten Aufruf sichergestellt ist, dass das Objekt in Zukunft nicht mehr referenziert werden kann.- Parameters:
objectsToDelete
- Menge mit zu löschenden dynamischen Objekten dieses Bereichs (Objekt-IDs)
-
referenceAllowed
boolean referenceAllowed(SystemObjectInformationInterface systemObjectInfo)
Prüft, ob ein angegebenenes Objekt von anderen Objekten referenzert werden darf- Parameters:
systemObjectInfo
- Objekt-Info (Objekt sollte zum aktuellen Bereich gehören)- Returns:
- true, falls es referenziert werden darf (es bisher nicht als
zu Löschen markiert
wurde, sonst false
-
-