de.bsvrz.sys.funclib.dynobj
Class DynamischeObjekte

java.lang.Object
  extended by de.bsvrz.sys.funclib.dynobj.DynamischeObjekte
All Implemented Interfaces:
de.bsvrz.dav.daf.main.DavConnectionListener

public final class DynamischeObjekte
extends Object
implements de.bsvrz.dav.daf.main.DavConnectionListener

Die Klasse beschreibt ein Objekt, mit dem die Verwaltung von dynamischen Objekten innerhalb eines Datenverteilersystems vereinheitlicht wird. Insbesondere wird hiermit die Verteilung von dynamischen Objekten auf verschiedene Konfigurationsbereiche organisiert. Die benutzerabhängige Zuordnung der dynamischen Objekte zu Konfigurationsbereichen über ein Verwaltungsobjekt dieser Klasse, erfolgt über einen Parameterdatensatz, der Bestandteil der AOE des Systems ist. Die Attributgruppe "atg.verwaltungDynamischerObjekte" enthält ein variables Feld von Attributlisten, die jeweils aus den Attributen "Objekttyp" (einer Referenz auf den Typ eines dynamsichen Objekts) und "Konfigurationsbereich" (einer Referenz auf einen Kobfigurationsbereich bestehen. Beim Anlegen eines dynamischen Objekts über die hier bereitgestellten Funktionen wird dieser Parametersatz ausgewertet und ermittelt, in welchem Konfigurationsbereich das jeweils zu erzeugende Objekt abgelegt werden soll. Wird innerhalb des Parameters keine entsprechende Zuordnung gefunden, wird das Objekt entweder innerhalb des Default-Bereiches der AOE abgelegt oder das Anlegen des Objekts schlägt fehl. Das Verhalten kann für das Verwaltungsobjekt per Funktionsaufruf definiert werden.

Version:
$Id: DynamischeObjekte.java 21810 2010-03-01 13:41:54Z peuker $
Author:
BitCtrl Systems GmbH, Uwe Peuker

Method Summary
 void bereinigeMenge(de.bsvrz.dav.daf.main.config.MutableSet menge)
          die Funktion entfernt alle Elemente aus der übergebenen Menge, die nicht mehr gültig sind.
 void connectionClosed(de.bsvrz.dav.daf.main.ClientDavInterface connection)
           Implemetiert das Interface DavConnectionListener.
 void entferneAlleObjekteAusMenge(de.bsvrz.dav.daf.main.config.MutableSet menge, boolean loescheObjekte)
          die Funktion entfernt alle Elemente aus der übergebenen Menge.
 boolean entferneObjektAusMenge(de.bsvrz.dav.daf.main.config.DynamicObject objekt, de.bsvrz.dav.daf.main.config.MutableSet menge, boolean loescheObjekt)
          die Funktion entfernt das übergebene Objekt aus der übergebenen Menge.
 de.bsvrz.dav.daf.main.config.DynamicObject erzeugeObjekt(de.bsvrz.dav.daf.main.config.DynamicObjectType typ, String name, String pid)
          die Funktion erzeugt ein dynamisches Objekt auf Basis der übergebenen Daten.
 de.bsvrz.dav.daf.main.config.DynamicObject erzeugeObjekt(de.bsvrz.dav.daf.main.config.DynamicObjectType typ, String name, String pid, Collection<de.bsvrz.dav.daf.main.DataAndATGUsageInformation> konfigurationsDaten)
          die Funktion erzeugt ein dynamisches Objekt auf Basis der übergebenen Daten.
 de.bsvrz.dav.daf.main.config.DynamicObject erzeugeObjektInMenge(de.bsvrz.dav.daf.main.config.DynamicObjectType typ, String name, String pid, Collection<de.bsvrz.dav.daf.main.DataAndATGUsageInformation> konfigurationsDaten, de.bsvrz.dav.daf.main.config.MutableSet menge)
          die Funktion erzeugt ein dynamisches Objekt auf Basis der übergebenen Daten und trägt dieses in die übergebene Menge ein.
 de.bsvrz.dav.daf.main.config.DynamicObject erzeugeObjektInMenge(de.bsvrz.dav.daf.main.config.DynamicObjectType typ, String name, String pid, de.bsvrz.dav.daf.main.config.MutableSet menge)
          die Funktion erzeugt ein dynamisches Objekt auf Basis der übergebenen Daten und trägt dieses in die übergebene Menge ein.
 boolean fuegeObjektInMengeEin(de.bsvrz.dav.daf.main.config.DynamicObject objekt, de.bsvrz.dav.daf.main.config.MutableSet menge)
          die Funktion fügt das übergebene Objekt in die angegebene Menge ein.
static DynamischeObjekte getInstanz(de.bsvrz.dav.daf.main.ClientDavInterface dav)
          Funktion zum Erzeugen eines Verwaltungsobjekts für dynamische Objekte.
 de.bsvrz.dav.daf.main.config.ConfigurationArea getKonfigurationsBereich(de.bsvrz.dav.daf.main.config.DynamicObjectType typ)
          die Funktion liefert den Konfigurationsbereich, der dem übergebenen Objekttyp zugeordnet ist.
 void loescheAlleNichtZugeordnetenObjekte(de.bsvrz.dav.daf.main.config.DynamicObjectType typ, de.bsvrz.dav.daf.main.config.MutableSet... mengen)
          die Funktion löscht alle Objekte mit dem übergebenen Typ, die sich nicht in einer der übergebenen Mengen befinden.
 void loescheAlleObjekte(de.bsvrz.dav.daf.main.config.DynamicObjectType typ)
          die Funktion löscht alle Objekte mit dem übergebenen Typ.
 void loescheObjekt(de.bsvrz.dav.daf.main.config.DynamicObject objekt)
          die Funktion löscht das übergebene dynamische Objekt.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getInstanz

public static DynamischeObjekte getInstanz(de.bsvrz.dav.daf.main.ClientDavInterface dav)
Funktion zum Erzeugen eines Verwaltungsobjekts für dynamische Objekte. Die Instanzen der Objekte sind Singletons pro Datenverteilerverbindung und werden intern innerhalb der Klasse verwaltet. Eine Instanz eines Verwaltungsobjektes wird aus der internen Verwaltung freigegeben, wenn die übergebene Datenverteilerverbindung geschlossen wird. Die Datenverteilerverbindung, mit dem eine solche Instanz abgerufen wird sollte daher immer eine aktive Verbindung haben, ansonsten besteht hier die Gefahr eines Memory-Leaks. Die Datenverteilerverbindung muss unbedingt übergeben werden, der Wert null ist nicht zulässig.

Parameters:
dav - die Datenverteilerverbindung über die dynamische Objekte verwaltet werden sollen
Returns:
eine Instanz zur Verwaltung dynamischer Objekte

bereinigeMenge

public void bereinigeMenge(de.bsvrz.dav.daf.main.config.MutableSet menge)
                    throws DynObjektException
die Funktion entfernt alle Elemente aus der übergebenen Menge, die nicht mehr gültig sind.

Parameters:
menge - die Menge, die geleert werden soll
Throws:
DynObjektException - die Menge konnte nicht bereinigt werden.

connectionClosed

public void connectionClosed(de.bsvrz.dav.daf.main.ClientDavInterface connection)
Implemetiert das Interface DavConnectionListener. Das der Datenverteilerverbindung zugeordnete Verwaltungsobjekt wird aus der internen Verwaltung entfernt, damit die Ressourcen vom GC freigegeben werden können.

Specified by:
connectionClosed in interface de.bsvrz.dav.daf.main.DavConnectionListener

entferneAlleObjekteAusMenge

public void entferneAlleObjekteAusMenge(de.bsvrz.dav.daf.main.config.MutableSet menge,
                                        boolean loescheObjekte)
                                 throws DynObjektException
die Funktion entfernt alle Elemente aus der übergebenen Menge. Optional können die aus der Menge entfernten Objekte auch selbst entfernt werden. Wenn das Entfernen der Elemente aus der Menge bereits fehlschlägt, werden die Objekte auch nicht gelöscht.

Parameters:
menge - die Menge, die geleert werden soll
loescheObjekte - true, wenn die aus der Menge entferneten Objekte auch selbst entfernt werden sollen
Throws:
DynObjektException - die Menge konnte nicht geleert werden oder das Löschen der Objekte ist fehlgeschlagen.

entferneObjektAusMenge

public boolean entferneObjektAusMenge(de.bsvrz.dav.daf.main.config.DynamicObject objekt,
                                      de.bsvrz.dav.daf.main.config.MutableSet menge,
                                      boolean loescheObjekt)
                               throws DynObjektException
die Funktion entfernt das übergebene Objekt aus der übergebenen Menge. Optional kann über den Parameter loescheObjekt definiert werden, ob das Objekt selbst auch entfernt wird. Als Ergebnis wird der Wert true geliefert, wenn das Element aus der Menge entfernt werden konnte, false, wenn es nicht in der Menge enthalten war. Die Funktion bildet keine Transaktion, d.h. wenn beispielsweise das Entfernen des Objekts aus der Menge erfolgreich war, aber das Objekt selbst nicth gelöscht werden konnte, wird eine ConfigurationChangeException geworfen. Das Objekt ist jedoch trotzdem nicht mehr Bestandteil der Menge. Wenn das Entfernen des Objekts aus der Menge fehlschlägt (außer es ist nicht Bestandteil der Menge), wird das Objekt auch nicht entfernt. Die Funktion ist nicht synchronisiert mit den Benachrichtigungen über Mengenänderungen, d.h. es werden lediglich die direkten Rückmeldungen aus den Aufrufen der Datenverteilerapplikationsfunktionen ausgewertet!

Parameters:
objekt - das Objekt, das aus der Menge entfernt werden soll
menge - die Menge aus der ein Objekt entfernt werden soll
loescheObjekt - definiert, ob das Objekt selbst ebenfalls gelöscht werden soll
Returns:
true, wenn das Objekt entfernt wurde
Throws:
DynObjektException - das Objekt konnte nicht aus der Menge entfernt werden oder das Objekt konnte nicht gelöscht werden

erzeugeObjekt

public de.bsvrz.dav.daf.main.config.DynamicObject erzeugeObjekt(de.bsvrz.dav.daf.main.config.DynamicObjectType typ,
                                                                String name,
                                                                String pid)
                                                         throws DynObjektException
die Funktion erzeugt ein dynamisches Objekt auf Basis der übergebenen Daten.

Parameters:
typ - der Typ des zu erzeugenden Objekts
name - der Name
pid - die gewünschte PID
Returns:
das erzeugte Objekt
Throws:
DynObjektException - das Objekt konnte nicht in der Konfiguration angelegt werden
See Also:
erzeugeObjekt(DynamicObjectType, String, String, Collection), erzeugeObjektInMenge(DynamicObjectType, String, String, MutableSet), erzeugeObjektInMenge(DynamicObjectType, String, String, Collection, MutableSet)

erzeugeObjekt

public de.bsvrz.dav.daf.main.config.DynamicObject erzeugeObjekt(de.bsvrz.dav.daf.main.config.DynamicObjectType typ,
                                                                String name,
                                                                String pid,
                                                                Collection<de.bsvrz.dav.daf.main.DataAndATGUsageInformation> konfigurationsDaten)
                                                         throws DynObjektException
die Funktion erzeugt ein dynamisches Objekt auf Basis der übergebenen Daten. Zusätzlich zu den eigentlichen Objektinformationen können konfigurierende Datensätze für das Objekt übergeben werden.

Parameters:
typ - der Typ des zu erzeugenden Objekts
name - der Name
pid - die gewünschte PID
konfigurationsDaten - die konfigurierenden Datensätze des Objekts
Returns:
das erzeugte Objekt
Throws:
DynObjektException - das Objekt konnte nicht in der Konfiguration angelegt werden
See Also:
erzeugeObjekt(DynamicObjectType, String, String), erzeugeObjektInMenge(DynamicObjectType, String, String, MutableSet), erzeugeObjektInMenge(DynamicObjectType, String, String, Collection, MutableSet)

erzeugeObjektInMenge

public de.bsvrz.dav.daf.main.config.DynamicObject erzeugeObjektInMenge(de.bsvrz.dav.daf.main.config.DynamicObjectType typ,
                                                                       String name,
                                                                       String pid,
                                                                       Collection<de.bsvrz.dav.daf.main.DataAndATGUsageInformation> konfigurationsDaten,
                                                                       de.bsvrz.dav.daf.main.config.MutableSet menge)
                                                                throws DynObjektException
die Funktion erzeugt ein dynamisches Objekt auf Basis der übergebenen Daten und trägt dieses in die übergebene Menge ein. Zusätzlich zu den eigentlichen Objektinformationen können optional konfiguriernde datensätze beim Anlegen des Objekts übergeben werden. Es handelt sich nicht um eine Transaktion, d.h. wenn das Objekt angelegt und nicht in die Menge eingetragen werden konnte, bleibt das Objekt trotzdem bestehen und muss gegebenenfalls in der entsprechenden Fehlerbehandlungsroutine händisch entfernt werden.

Parameters:
typ - der Typ des zu erzeugenden Objekts
name - der Name
pid - die gewünschte PID
konfigurationsDaten - die konfigurierenden Datensätze des neu anzulegenden Objekts
menge - die Menge in die das Objekt eingetragen werden soll
Returns:
das erzeugte Objekt
Throws:
DynObjektException - das Objekt konnte nicht in der Konfiguration angelegt bzw. in die Menge eingetragen werden.
See Also:
erzeugeObjekt(DynamicObjectType, String, String), erzeugeObjekt(DynamicObjectType, String, String, Collection), erzeugeObjektInMenge(DynamicObjectType, String, String, MutableSet), erzeugeObjektInMenge(DynamicObjectType, String, String, MutableSet)

erzeugeObjektInMenge

public de.bsvrz.dav.daf.main.config.DynamicObject erzeugeObjektInMenge(de.bsvrz.dav.daf.main.config.DynamicObjectType typ,
                                                                       String name,
                                                                       String pid,
                                                                       de.bsvrz.dav.daf.main.config.MutableSet menge)
                                                                throws DynObjektException
die Funktion erzeugt ein dynamisches Objekt auf Basis der übergebenen Daten und trägt dieses in die übergebene Menge ein. Es handelt sich nicht um eine Transaktion, d.h. wenn das Objekt angelegt und nicht in die Menge eingetragen werden konnte, bleibt das Objekt trotzdem bestehen und muss gegebenenfalls in der entsprechenden Fehlerbehandlungsroutine händisch entfernt werden.

Parameters:
typ - der Typ des zu erzeugenden Objekts
name - der Name
pid - die gewünschte PID
menge - die Menge in die das Objekt eingetragen werden soll
Returns:
das erzeugte Objekt
Throws:
DynObjektException - das Objekt konnte nicht in der Konfiguration angelegt bzw. in die Menge eingetragen werden.
See Also:
erzeugeObjekt(DynamicObjectType, String, String), MutableSet), erzeugeObjektInMenge(DynamicObjectType, String, String, MutableSet)

fuegeObjektInMengeEin

public boolean fuegeObjektInMengeEin(de.bsvrz.dav.daf.main.config.DynamicObject objekt,
                                     de.bsvrz.dav.daf.main.config.MutableSet menge)
                              throws DynObjektException
die Funktion fügt das übergebene Objekt in die angegebene Menge ein.

Parameters:
objekt - das Objekt
menge - die Menge
Returns:
true, wenn das Objekt noch nicht in der Menge enthalten war und erfolgreich eingefügt wurde; false wenn das Objekt bereits Bestandteil der Menge war.
Throws:
DynObjektException - das Objekt konnte nicht in die Menge eingefügt werden.

getKonfigurationsBereich

public de.bsvrz.dav.daf.main.config.ConfigurationArea getKonfigurationsBereich(de.bsvrz.dav.daf.main.config.DynamicObjectType typ)
die Funktion liefert den Konfigurationsbereich, der dem übergebenen Objekttyp zugeordnet ist. Wurde keiner gefunden, wird der Standardkonfigurationsbereich der AOE geliefert.

Parameters:
typ - der Typ für ein dynamisches Objekt
Returns:
der ermittelte Konfigurationsbereich

loescheAlleNichtZugeordnetenObjekte

public void loescheAlleNichtZugeordnetenObjekte(de.bsvrz.dav.daf.main.config.DynamicObjectType typ,
                                                de.bsvrz.dav.daf.main.config.MutableSet... mengen)
                                         throws DynObjektException
die Funktion löscht alle Objekte mit dem übergebenen Typ, die sich nicht in einer der übergebenen Mengen befinden.

Parameters:
typ - der Typ dessen Instanzen entfernt werden sollen
mengen - die Mengen in denen die nicht zu entfernenden Objekte enthalten sind
Throws:
DynObjektException - die Objekte konnten nicht oder nicht vollständig entfernt werden

loescheAlleObjekte

public void loescheAlleObjekte(de.bsvrz.dav.daf.main.config.DynamicObjectType typ)
                        throws DynObjektException
die Funktion löscht alle Objekte mit dem übergebenen Typ.

Parameters:
typ - der Typ dessen Instanzen entfernt werden sollen
Throws:
DynObjektException - die Objekte konnten nicht oder nicht vollständig entfernt werden

loescheObjekt

public void loescheObjekt(de.bsvrz.dav.daf.main.config.DynamicObject objekt)
                   throws DynObjektException
die Funktion löscht das übergebene dynamische Objekt. Die Funktion ist zwar eigentlich überflüssig, da sie am Ende lediglich SystemObject.invalidate() aufruft, vervollständigt aber die Funktionalität des Verwaltungsobjektes.

Parameters:
objekt - das Objekt, das gelöscht werden soll
Throws:
DynObjektException - das Objekt konnte nicht gelöscht werden