public class SettingsManager extends Object
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 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 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 List<EndOfSettingsListener> |
_endOfSettingsListener |
private 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 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 Map<DataIdentification,Data> |
_settingsTable |
private short |
_simulationVariantForTypeAndSetWildcardExpansion |
private boolean |
_simulationVariantUsed |
private 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(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,
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(String pid) |
private boolean |
hasMatchingAttributGroupUsage(DynamicObjectType toBeRegisteredType,
Set<AttributeGroup> specifiedAtgs,
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(...) Methode
weiter. |
private void |
registerDynamicObjects(Set<DynamicObject> dynamicObjects)
Anmeldungen bei den relevanten dynamischen Objekten.
|
private void |
registerDynamicObjectType(Set<DynamicObjectType> registeredDynamicObjectTypes,
DynamicObjectType toBeRegisteredType)
Registriert den angegebenen dynamischen Typ zur Anmeldung auf neue und gelöschte Objekte.
|
private void |
registerDynamicObjectTypeOrSubTypes(Set<DynamicObjectType> registeredDynamicObjectTypes,
DynamicObjectType toBeRegisteredType,
Set<AttributeGroup> specifiedAtgs,
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(Set<DynamicObjectType> dynamicObjectTypes)
Anmeldungen bei den relevanten dynamischen Objekt-Typen.
|
private void |
registerMutableSets(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 List<UpdateListener> _updateListeners
private final List<EndOfSettingsListener> _endOfSettingsListener
private ClientReceiverInterface _receiver
private Map<DataIdentification,Data> _settingsTable
private final boolean _aspectUsed
private final boolean _simulationVariantUsed
private final Set<AttributeGroup> _excludedAttributeGroups
private final Set<DynamicObjectType> _dynamicObjectTypes
private final Set<DynamicObject> _dynamicObjects
private final Set<MutableSet> _mutableSets
private final SettingsManager.RegisterDynamicListener _registerDynamicListener
private Data _lastSettingsData
SettingsManager.ChangeNotifier _changeNotifier
private SettingsManager.ParameterSender _sender
public SettingsManager(ClientDavInterface connection, DataIdentification parameterIdentification)
connection
- Verbindung zum DatenverteilerparameterIdentification
- der Parameterdatensatzpublic SettingsManager(ClientDavInterface connection, DataIdentification parameterIdentification, short simulationVariantForTypeAndSetWildcardExpansion)
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)
listener
- Neuer Beobachter.public void removeUpdateListener(UpdateListener listener)
listener
- Zu löschender Beobachter.public void addEndOfSettingsListener(EndOfSettingsListener listener)
listener
- neuer Beobachterpublic void removeEndOfSettingsListener(EndOfSettingsListener listener)
listener
- zu löschender Beobachterpublic void start()
IllegalStateException
- Wenn der Manager bereits gestartet wurde.public void stop()
private void extractSettings(Data settingsData, Map<DataIdentification,Data> newSettings)
settingsData
- newSettings
- die neuen Einstellungenprivate boolean fixOldReferences(Data.ReferenceArray referenceArray, SystemObject[] objects)
referenceArray
- Datenobjektobjects
- Systemobjekt-Arrayprivate SystemObject getCurrentObject(String pid)
private void sendNewParams(Data data)
data
- Neuer, modifizierter/korrigierter Datensatzprivate void registerMutableSets(Set<MutableSet> mutableSets)
mutableSets
- die relevanten änderbaren Mengenprivate void registerDynamicObjects(Set<DynamicObject> dynamicObjects)
dynamicObjects
- die relevanten dynamischen Objekteprivate void registerDynamicObjectTypeOrSubTypes(Set<DynamicObjectType> registeredDynamicObjectTypes, DynamicObjectType toBeRegisteredType, Set<AttributeGroup> specifiedAtgs, Set<Aspect> specifiedAspects)
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, Set<AttributeGroup> specifiedAtgs, Set<Aspect> specifiedAspects)
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(Set<DynamicObjectType> registeredDynamicObjectTypes, DynamicObjectType toBeRegisteredType)
registeredDynamicObjectTypes
- Bereits registrierte Typen. Der neu registrierte Typ wird in dieses Set hinzugefügt.toBeRegisteredType
- Zu registrierender dynamischer Typ.private void registerDynamicObjectTypes(Set<DynamicObjectType> dynamicObjectTypes)
dynamicObjectTypes
- die relevante Objekt-Typenprivate SystemObject[] removeNullReferences(SystemObject[] objects)
private void activateSettings(Map<DataIdentification,Data> newSettingsTable)
newSettingsTable
- Map mit Einstellungen je Datenidentifikationprivate void notifySettings(DataIdentification dataIdentification, Data oldSettings, Data newSettings)
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()
UpdateListener
geschickt wurden.