Class ListsManager

java.lang.Object
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.
  • Constructor Details

    • ListsManager

      public ListsManager(HighLevelConnectionsManagerInterface connectionsManager)
      Erzeugt ein neues Objekt mit den übergebenen Parametern. Zu beachten ist, dass das Verwaltungsobjekt zur Bestimmung der günstigsten Wege nicht initialisiert wird, sondern im Anschluss mit einem Aufruf des entsprechenden Setters gesetzt werden muss, bevor die Dienste des ListsManagers in Anspruch genommen werden können.
      Parameters:
      connectionsManager - Verbindungsverwaltung
  • Method Details

    • 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
    • dumpSubscriptionLists

      public void dumpSubscriptionLists()