de.bsvrz.dav.dav.main
Class ListsManager

java.lang.Object
  extended by de.bsvrz.dav.dav.main.ListsManager
All Implemented Interfaces:
ListsManagerInterface

public class ListsManager
extends Object
implements ListsManagerInterface

Diese Klasse dient zur Verwaltung von Anmeldelistentelegrammen, die zwischen Datenverteilern zum Austausch von Informationen über angemeldete Objekte, Attributgruppen und Aspekte verwendet werden. Jeder Datenverteiler hält grobe Informationen über die vorliegenden Quell- und Senkenanmeldungen der Applikationen, die bei ihm angemeldet sind, vor. Diese Informationen werden zwischen den einzelnen Datenverteilern ausgetauscht, damit bei Anmeldungen von Daten direkt geprüft werden kann, ob diese Daten potentiell im System vorhanden sind und welche Datenverteiler als Zentraldatenverteiler in Frage kommen. Um das Datenaufkommen und die Anzahl der Aktualisierungen hier gering zu halten, werden die Anmeldungen nicht detailliert vorgehalten und weitergegeben, sondern es werden nur Änderungen zweier Listen gepflegt und verteilt: Die erste enthält die Objekte zu denen Quell- oder Senkenanmeldungen bestehen (Objektliste); die zweite Liste enthält die Attributgruppen/Aspekt-Kombinationen zu denen Quell- oder Senkenanmeldungen bestehen (Attributgruppenliste). Jeder Datenverteiler verwaltet für jeden von ihm erreichbaren Datenverteiler eine Anmeldungsliste.

Author:
Kappich Systemberatung

Method Summary
 void addEntry(long delivererId, long transmitterId)
          Diese Methode wird von der Wegverwaltung aufgerufen, wenn ein Datenverteiler als erreichbar festgestellt wird.
 BestWayManagerInterface getBestWayManager()
          Getter für das Verwaltungsobjekt zur Bestimmung der günstigsten Wege.
 void handleDisconnection(long transmitterId)
          Diese Methode wird von der Verbindungsverwaltung aufgerufen, wenn eine Datenverteilerverbindung nicht mehr existiert.
 void handleWaysChanges(long[] changedTransmitterIds)
          Diese Methode wird von der Verbindungsverwaltung aufgerufen, wenn sich neue günstigste Wege für bestimmte Datenverteiler ergeben haben.
 void setBestWayManager(BestWayManagerInterface bestWayManager)
          Setter für das Verwaltungsobjekt zur Bestimmung der günstigsten Wege.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getBestWayManager

public BestWayManagerInterface getBestWayManager()
Getter für das Verwaltungsobjekt zur Bestimmung der günstigsten Wege.

Returns:
Verwaltungsobjekt zur Bestimmung der günstigsten Wege.

setBestWayManager

public void setBestWayManager(BestWayManagerInterface bestWayManager)
Setter für das Verwaltungsobjekt zur Bestimmung der günstigsten Wege.

Parameters:
bestWayManager - Verwaltungsobjekt zur Bestimmung der günstigsten Wege.

addEntry

public final void addEntry(long delivererId,
                           long transmitterId)
Description copied from interface: ListsManagerInterface
Diese Methode wird von der Wegverwaltung aufgerufen, wenn ein Datenverteiler als erreichbar festgestellt wird. Sie wird aber auch aufgerufen, wenn festgestellt wird, dass ein Datenverteiler über einen neuen Weg erreichbar ist und nicht mehr über den alten Weg. Ein Datenverteiler kann über eine direkte Verbindung oder über einen anderen Datenverteiler erreichbar sein. Zuerst wird überprüft ob ein Zulieferereintrag für den spezifizierten Datenverteiler existiert. Existiert keiner, so wird ein Eintrag erstellt und in die Tabelle eingefügt. Wenn kein Zulieferer mehr existiert (delivererId = -1), dann wird eine Zuliefererinformationskündigung wird zu jedem eingetragenen Abonnenten gesendet. Die Liste der Abonnenten wird dann geleert. Die Objekt- und Kombinationslisten werden auch geleert, da keine Verbindung mehr zum Datenverteiler existiert und die Informationen nicht mehr aktualisiert werden können. Wenn der neue Zulieferer ein anderer als der alte ist, wird eine Zuliefererinformationsabmeldung zum alten Zulieferer gesendet. Wenn der neue Zulieferer in der Abonnentenliste eingetragen ist, wird dieser Eintrag aus der Liste entfernt und an ihn eine Zuliefererinformationskündigung gesendet. Danach wird eine Zuliefererinformationsanmeldung zum neuen Zulieferer gesendet.

Specified by:
addEntry in interface ListsManagerInterface
Parameters:
delivererId - ID des Zulieferers oder -1, wenn der kein Zulieferer mehr existiert.
transmitterId - ID des Datenverteilers

handleWaysChanges

public final void handleWaysChanges(long[] changedTransmitterIds)
Description copied from interface: ListsManagerInterface
Diese Methode wird von der Verbindungsverwaltung aufgerufen, wenn sich neue günstigste Wege für bestimmte Datenverteiler ergeben haben.

Specified by:
handleWaysChanges in interface ListsManagerInterface
Parameters:
changedTransmitterIds - Array mit den IDs der betroffenen Datenverteiler.

handleDisconnection

public final void handleDisconnection(long transmitterId)
Description copied from interface: ListsManagerInterface
Diese Methode wird von der Verbindungsverwaltung aufgerufen, wenn eine Datenverteilerverbindung nicht mehr existiert. Zunächst wird der Eintrag des Datenverteilers transmitterId aus der Zulieferertabelle entfernt. Der Zulieferer dieses Eintrags wird durch eine Zuliefererinformationsabmeldung, die Abonnenten dieses Eintrags durch eine Zuliefererinformationskündigung benachrichtigt. Danach wird überprüft bei welchen Einträgen der spezifizierte Datenverteiler als Zulieferer auftaucht. Dort wird überprüft, ob der Antragsdatenverteiler über einen anderen Datenverteiler erreichbar ist. In diesem Falle, wird ihm eine Zuliefererinformationsanmeldung gesendet. Wenn kein neuer Zulieferer existiert, werden die Abonnenten durch eine Zuliefererinformationskündigung informiert und die Abonnentenliste, Objektliste und Kombinationsliste geleert. Zuletzt wird überprüft, bei welchen Einträgen der spezifizierte Datenverteiler als Abonnent eingetragen ist und wird als Abonnent aus diesen Listen gestrichen.

Specified by:
handleDisconnection in interface ListsManagerInterface
Parameters:
transmitterId - ID des Datenverteilers