public class SettingsManager
extends java.lang.Object
Diese Klasse dient zur Verwaltung von Parametersätzen mit Einstellungen die sich auf Datenidentifikationen beziehen. Derartige Parameterdatensätze werden z.B. zur Steuerung des Archivverhaltens (atg.archiv) und der Parametrierung (atg.parametrierung) eingesetzt. Über die Parameterdatensätze können in einzelnen Einträgen mit Hilfe von Aufzählungen und Wildcards Einstellungen für viele Datenidentifikation auf einmal eingeben werden.
Modifier and Type | Class and Description |
---|---|
(package private) class |
SettingsManager.ChangeNotifier |
(package private) static class |
SettingsManager.NotificationObject |
(package private) static class |
SettingsManager.NotificationType |
private class |
SettingsManager.ParameterSender |
private class |
SettingsManager.Receiver
Klasse, die zur Entgegennahme der Parameterdatensätze vom Datenverteiler die entsprechende Update-Methode implementiert.
|
private class |
SettingsManager.RegisterDynamicListener
Klasse, die sich auf Änderungen von dynamischen Objekten (erstellen und ungültig setzen), ObjektTypen und änderbaren Mengen anmeldet.
|
Modifier and Type | Field and Description |
---|---|
private boolean |
_aspectUsed |
(package private) SettingsManager.ChangeNotifier |
_changeNotifier
Runnable-Objekt des Threads, der asynchron die Änderungen der Einstellungen und dynamischen Objekten/Mengen verarbeitet und die angemeldeten Listener informiert.
|
private ClientDavInterface |
_connection |
private static Debug |
_debug |
private java.util.Set<DynamicObject> |
_dynamicObjects
Die dynamischen Objekte werden hier gespeichert, da zur Laufzeit diese Objekte ungültig werden können und dann müssen die Einstellungen neu publiziert werden.
|
private java.util.Set<DynamicObjectType> |
_dynamicObjectTypes
Die dynamischen Objekt-Typen werden hier gespeichert, da zur Laufzeit Objekte dieser Typen erstellt und auf ungültig gesetzt werden können.
|
private java.util.List<EndOfSettingsListener> |
_endOfSettingsListener |
private java.util.Set<AttributeGroup> |
_excludedAttributeGroups
Dieses Set speichert alle Attributgruppen, die über den SettingsManager nicht angemeldet werden dürfen.
|
private Data |
_lastSettingsData
Speichert den zuletzt empfangenen Datensatz mit den Einstellungen.
|
private java.util.Set<MutableSet> |
_mutableSets
Die änderbaren Mengen werden hier gespeichert, da sich zur Laufzeit der Inhalt der Elemente ändern kann.
|
private DataIdentification |
_parameterIdentification |
private ClientReceiverInterface |
_receiver |
private SettingsManager.RegisterDynamicListener |
_registerDynamicListener
Wurden dynamische Typen angegeben, so registriert sich dieses Objekt bei diesen, um Änderungen mitzubekommen.
|
private SettingsManager.ParameterSender |
_sender |
private java.util.Map<DataIdentification,Data> |
_settingsTable |
private short |
_simulationVariantForTypeAndSetWildcardExpansion |
private boolean |
_simulationVariantUsed |
private java.util.List<UpdateListener> |
_updateListeners |
Constructor and Description |
---|
SettingsManager(ClientDavInterface connection,
DataIdentification parameterIdentification)
Erzeugt ein neues Verwaltungsobjekt.
|
SettingsManager(ClientDavInterface connection,
DataIdentification parameterIdentification,
short simulationVariantForTypeAndSetWildcardExpansion)
Erzeugt ein neues Verwaltungsobjekt.
|
Modifier and Type | Method and Description |
---|---|
private void |
activateSettings(java.util.Map<DataIdentification,Data> newSettingsTable)
Iteriert über die Tabelle mit den Einstellungen je Datenidentifikation und informiert die angemeldeten Beobachter über Änderungen an den Einstellungen je Datenidentifikation.
|
void |
addEndOfSettingsListener(EndOfSettingsListener listener)
Ergänzt die Liste der Beobachter, die informiert werden wollen, sobald alle Einstellungen abgearbeitet wurden.
|
void |
addUpdateListener(UpdateListener listener)
Ergänzt die Liste der Beobachter, die bei Änderung des Parameters zu informieren sind, um einen weiteren Eintrag.
|
private void |
extractSettings(Data settingsData,
java.util.Map<DataIdentification,Data> newSettings)
Aktualisiert die Tabelle mit den Einstellungen je Datenidentifikation mit den jeweiligen Einstellungen aus dem übergebenen Datensatz.
|
private boolean |
fixOldReferences(Data.ReferenceArray referenceArray,
SystemObject[] objects)
Sucht aus einem Objekt-Array veraltete Einträge, aktualisiert diese, und korrigiert das übergebene Daten-Array gleich mit
|
private SystemObject |
getCurrentObject(java.lang.String pid) |
private boolean |
hasMatchingAttributGroupUsage(DynamicObjectType toBeRegisteredType,
java.util.Set<AttributeGroup> specifiedAtgs,
java.util.Set<Aspect> specifiedAspects)
Prüft, ob an dem angegebenen dynamischen Typ passende Attributgruppen und Aspekte Online verwendet werden können.
|
private void |
notifyEndOfSettings()
Iteriert über alle Beobachter, die informiert werden wollen, sobald alle Einstellungen an den
UpdateListener geschickt wurden. |
private void |
notifySettings(DataIdentification dataIdentification,
Data oldSettings,
Data newSettings)
Iteriert über alle Beobachter und gibt die Datenidentifikation mit alten und neuen Einstellungen an die
update(...) |
private void |
registerDynamicObjects(java.util.Set<DynamicObject> dynamicObjects)
Anmeldungen bei den relevanten dynamischen Objekten.
|
private void |
registerDynamicObjectType(java.util.Set<DynamicObjectType> registeredDynamicObjectTypes,
DynamicObjectType toBeRegisteredType)
Registriert den angegebenen dynamischen Typ zur Anmeldung auf neue und gelöschte Objekte.
|
private void |
registerDynamicObjectTypeOrSubTypes(java.util.Set<DynamicObjectType> registeredDynamicObjectTypes,
DynamicObjectType toBeRegisteredType,
java.util.Set<AttributeGroup> specifiedAtgs,
java.util.Set<Aspect> specifiedAspects)
Registriert den angegebenen dynamischen Typ oder Sub-Typen davon zur Anmeldung auf neue und gelöschte Objekte, falls am Typ bzw.
|
private void |
registerDynamicObjectTypes(java.util.Set<DynamicObjectType> dynamicObjectTypes)
Anmeldungen bei den relevanten dynamischen Objekt-Typen.
|
private void |
registerMutableSets(java.util.Set<MutableSet> mutableSets)
Anmeldungen bei den relevanten änderbaren Mengen auf Änderung.
|
void |
removeEndOfSettingsListener(EndOfSettingsListener listener)
Löscht einen Beobachter aus der Liste der Beobachter, die informiert werden wollen, sobald alle Einstellungen abgearbeitet wurden.
|
private SystemObject[] |
removeNullReferences(SystemObject[] objects) |
void |
removeUpdateListener(UpdateListener listener)
Löscht einen Beobachter aus der Liste der Beobachter, die bei Änderung des Parameters zu informieren sind.
|
private void |
sendNewParams(Data data)
Sendet, falls die geladenen Parameterdaten veraltete Objektreferenzen enthielten, einen neuen Vorgabedatensatz mit aktuellen Objekten.
|
void |
start()
Meldet die im Konstruktor übergebene Datenidentifikation an und startet damit auch die Verarbeitung und Weitergabe der alten und neuen Einstellungen pro Datenidentifikation aus erhaltenen Parameterdatensätzen an die angemeldeten Beobachter.
|
void |
stop()
Meldet die im Konstruktor übergebene Datenidentifikation wieder ab und beendet damit auch die Verarbeitung und Weitergabe der alten und neuen Einstellungen pro Datenidentifikation aus erhaltenen Parameterdatensätzen an die angemeldeten Beobachter.
|
private static final Debug _debug
private final ClientDavInterface _connection
private final DataIdentification _parameterIdentification
private short _simulationVariantForTypeAndSetWildcardExpansion
private final java.util.List<UpdateListener> _updateListeners
private final java.util.List<EndOfSettingsListener> _endOfSettingsListener
private ClientReceiverInterface _receiver
private java.util.Map<DataIdentification,Data> _settingsTable
private final boolean _aspectUsed
private final boolean _simulationVariantUsed
private final java.util.Set<AttributeGroup> _excludedAttributeGroups
Dieses Set speichert alle Attributgruppen, die über den SettingsManager nicht angemeldet werden dürfen. Sonst gibt es ein Senke - Empfänger - Konflikt.
private final java.util.Set<DynamicObjectType> _dynamicObjectTypes
Die dynamischen Objekt-Typen werden hier gespeichert, da zur Laufzeit Objekte dieser Typen erstellt und auf ungültig gesetzt werden können.
private final java.util.Set<DynamicObject> _dynamicObjects
Die dynamischen Objekte werden hier gespeichert, da zur Laufzeit diese Objekte ungültig werden können und dann müssen die Einstellungen neu publiziert werden.
private final java.util.Set<MutableSet> _mutableSets
Die änderbaren Mengen werden hier gespeichert, da sich zur Laufzeit der Inhalt der Elemente ändern kann. Dann müssen die neuen Einstellungen publiziert werden.
private final SettingsManager.RegisterDynamicListener _registerDynamicListener
Wurden dynamische Typen angegeben, so registriert sich dieses Objekt bei diesen, um Änderungen mitzubekommen.
private Data _lastSettingsData
Speichert den zuletzt empfangenen Datensatz mit den Einstellungen.
SettingsManager.ChangeNotifier _changeNotifier
Runnable-Objekt des Threads, der asynchron die Änderungen der Einstellungen und dynamischen Objekten/Mengen verarbeitet und die angemeldeten Listener informiert.
private SettingsManager.ParameterSender _sender
public SettingsManager(ClientDavInterface connection, DataIdentification parameterIdentification)
Erzeugt ein neues Verwaltungsobjekt. Beim Zugriff auf dynamische Mengen und dynamischen Typen wird zur Auflösung von Wildcards für Elemente von dynamischen Mengen und dynamischen Typen die Simulationsvariante der angegebenen Datenidentifikation des Parameterdatensatzes oder die Simulationsvariante 0 verwendet, falls in der Datenidentifikation des Parameterdatensatzes keine explizite Angabe der Simulationsvariante gemacht wurde.
connection
- Verbindung zum DatenverteilerparameterIdentification
- der Parameterdatensatzpublic SettingsManager(ClientDavInterface connection, DataIdentification parameterIdentification, short simulationVariantForTypeAndSetWildcardExpansion)
Erzeugt ein neues Verwaltungsobjekt.
connection
- Verbindung zum DatenverteilerparameterIdentification
- der ParameterdatensatzsimulationVariantForTypeAndSetWildcardExpansion
- Simulationsvariante, die beim Zugriff auf dynamische Mengen und dynamischen Typen zur Auflösung von Wildcards verwendet werden soll.public void addUpdateListener(UpdateListener listener)
Ergänzt die Liste der Beobachter, die bei Änderung des Parameters zu informieren sind, um einen weiteren Eintrag.
listener
- Neuer Beobachter.public void removeUpdateListener(UpdateListener listener)
Löscht einen Beobachter aus der Liste der Beobachter, die bei Änderung des Parameters zu informieren sind.
listener
- Zu löschender Beobachter.public void addEndOfSettingsListener(EndOfSettingsListener listener)
Ergänzt die Liste der Beobachter, die informiert werden wollen, sobald alle Einstellungen abgearbeitet wurden.
listener
- neuer Beobachterpublic void removeEndOfSettingsListener(EndOfSettingsListener listener)
Löscht einen Beobachter aus der Liste der Beobachter, die informiert werden wollen, sobald alle Einstellungen abgearbeitet wurden.
listener
- zu löschender Beobachterpublic void start()
Meldet die im Konstruktor übergebene Datenidentifikation an und startet damit auch die Verarbeitung und Weitergabe der alten und neuen Einstellungen pro Datenidentifikation aus erhaltenen Parameterdatensätzen an die angemeldeten Beobachter.
java.lang.IllegalStateException
- Wenn der Manager bereits gestartet wurde.public void stop()
Meldet die im Konstruktor übergebene Datenidentifikation wieder ab und beendet damit auch die Verarbeitung und Weitergabe der alten und neuen Einstellungen pro Datenidentifikation aus erhaltenen Parameterdatensätzen an die angemeldeten Beobachter.
private void extractSettings(Data settingsData, java.util.Map<DataIdentification,Data> newSettings)
Aktualisiert die Tabelle mit den Einstellungen je Datenidentifikation mit den jeweiligen Einstellungen aus dem übergebenen Datensatz.
settingsData
- newSettings
- die neuen Einstellungenprivate boolean fixOldReferences(Data.ReferenceArray referenceArray, SystemObject[] objects)
Sucht aus einem Objekt-Array veraltete Einträge, aktualisiert diese, und korrigiert das übergebene Daten-Array gleich mit
referenceArray
- Datenobjektobjects
- Systemobjekt-Arrayprivate SystemObject getCurrentObject(java.lang.String pid)
private void sendNewParams(Data data)
Sendet, falls die geladenen Parameterdaten veraltete Objektreferenzen enthielten, einen neuen Vorgabedatensatz mit aktuellen Objekten.
data
- Neuer, modifizierter/korrigierter Datensatzprivate void registerMutableSets(java.util.Set<MutableSet> mutableSets)
Anmeldungen bei den relevanten änderbaren Mengen auf Änderung.
mutableSets
- die relevanten änderbaren Mengenprivate void registerDynamicObjects(java.util.Set<DynamicObject> dynamicObjects)
Anmeldungen bei den relevanten dynamischen Objekten.
dynamicObjects
- die relevanten dynamischen Objekteprivate void registerDynamicObjectTypeOrSubTypes(java.util.Set<DynamicObjectType> registeredDynamicObjectTypes, DynamicObjectType toBeRegisteredType, java.util.Set<AttributeGroup> specifiedAtgs, java.util.Set<Aspect> specifiedAspects)
Registriert den angegebenen dynamischen Typ oder Sub-Typen davon zur Anmeldung auf neue und gelöschte Objekte, falls am Typ bzw. Sub-Typ passende Attributgruppen und Aspekte Online verwendet werden können.
registeredDynamicObjectTypes
- Bereits registrierte Typen. Die neu registrierten Typen werden in dieses Set hinzugefügt.toBeRegisteredType
- Zu betrachtender dynamischer Typ.specifiedAtgs
- Relevante Attributgruppen. Ein leeres Set wird als Wildcard für alle Attributgruppen berücksichtigt.specifiedAspects
- Relevante Aspekte. Ein leeres Set wird als Wildcard für alle Aspekte berücksichtigt.private boolean hasMatchingAttributGroupUsage(DynamicObjectType toBeRegisteredType, java.util.Set<AttributeGroup> specifiedAtgs, java.util.Set<Aspect> specifiedAspects)
Prüft, ob an dem angegebenen dynamischen Typ passende Attributgruppen und Aspekte Online verwendet werden können.
toBeRegisteredType
- Zu betrachtender dynamischer Typ.specifiedAtgs
- Relevante Attributgruppen. Ein leeres Set wird als Wildcard für alle Attributgruppen berücksichtigt.specifiedAspects
- Relevante Aspekte. Ein leeres Set wird als Wildcard für alle Aspekte berücksichtigt.true
falls es mindestens eine passende Attributgruppen-Aspekt-Kombination am zu betrachtenden Typ gibt, sonst false
.private void registerDynamicObjectType(java.util.Set<DynamicObjectType> registeredDynamicObjectTypes, DynamicObjectType toBeRegisteredType)
Registriert den angegebenen dynamischen Typ zur Anmeldung auf neue und gelöschte Objekte.
registeredDynamicObjectTypes
- Bereits registrierte Typen. Der neu registrierte Typ wird in dieses Set hinzugefügt.toBeRegisteredType
- Zu registrierender dynamischer Typ.private void registerDynamicObjectTypes(java.util.Set<DynamicObjectType> dynamicObjectTypes)
Anmeldungen bei den relevanten dynamischen Objekt-Typen.
dynamicObjectTypes
- die relevante Objekt-Typenprivate SystemObject[] removeNullReferences(SystemObject[] objects)
private void activateSettings(java.util.Map<DataIdentification,Data> newSettingsTable)
Iteriert über die Tabelle mit den Einstellungen je Datenidentifikation und informiert die angemeldeten Beobachter über Änderungen an den Einstellungen je Datenidentifikation. Die übergebenen Einstellungen werden als aktuelle Einstellungen übernommen.
newSettingsTable
- Map mit Einstellungen je Datenidentifikationprivate void notifySettings(DataIdentification dataIdentification, Data oldSettings, Data newSettings)
Iteriert über alle Beobachter und gibt die Datenidentifikation mit alten und neuen Einstellungen an die update(...)
Methode weiter.
dataIdentification
- Betroffene Datenidentifikation.oldSettings
- Zur Datenidentifikation gehörende Einstellung vor der Änderung oder null
wenn es vor der Änderung keinen spezifischen Eintrag gab.newSettings
- Zur Datenidentifikation gehörende Einstellung nach der Änderung oder null
private void notifyEndOfSettings()
Iteriert über alle Beobachter, die informiert werden wollen, sobald alle Einstellungen an den UpdateListener
geschickt wurden.