Package de.bsvrz.dav.dav.main
Class HighLevelConnectionsManager
- java.lang.Object
-
- de.bsvrz.dav.dav.main.HighLevelConnectionsManager
-
- All Implemented Interfaces:
HighLevelConnectionsManagerInterface
public final class HighLevelConnectionsManager extends java.lang.Object implements HighLevelConnectionsManagerInterface
Diese Klasse stellt das Bindeglied zwischen demLowLevelConnectionsManagerund den Funktionen der oberen Ebene wie demHighLevelApplicationManager,HighLevelTransmitterManagerund demTelegramManagerdar. Zusätzlich bietet diese Klasse Funktionen von allgemeinem Interesse zur Verbindungsverwaltung, wie z.B. das Herausfinden einer Datenverteiler- oder Applikations-Verbindung von einer Id, das Terminieren des Datenverteilers, das Terminieren von Verbindungen usw., zudem bindet diese Klasse denTerminationQueryReceiverein, der clientseitige Terminierungsanfragen entgegennimmt.
-
-
Constructor Summary
Constructors Constructor Description HighLevelConnectionsManager(LowLevelConnectionsManagerInterface lowLevelConnectionsManager, de.bsvrz.dav.daf.accessControl.AccessControlMode userRightsChecking)Initialisiert den HighLevelConnectionsManager
-
Method Summary
Modifier and Type Method Description voiddisableSingleServingPassword(java.lang.String userName, int passwordIndex)Markiert das angegebene Einmalpasswort als benutzt (nachdem der Benutzer es zum erfolgreichen Einloggen verwendet hat)de.bsvrz.dav.daf.communication.srpAuthentication.SrpVerifierAndUserfetchSrpVerifierAndUser(java.lang.String userNameForVerifier, int passwordIndex)Holt den SRP-Überprüfungscode und die Benutzer-ID von einem Benutzer von der Konfigurationjava.util.List<java.lang.String>getAccessControlPluginsClassNames()Gibt eine Liste mit den per Kommandozeile festgelegten Zugriffssteuerungs-Plugin-Klassennamen zurückjava.util.Collection<T_A_HighLevelCommunication>getAllApplicationConnections()Gibt alle Applikationsverbindungen zurückjava.util.Collection<T_T_HighLevelCommunication>getAllTransmitterConnections()Gibt alle Datenverteilerverbindungen zurückT_A_HighLevelCommunicationgetApplicationConnectionFromId(long applicationId)Bestimmt anhand einer Id die Verbindung dieser angemeldeten ApplikationHighLevelApplicationManagergetApplicationManager()Gibt die Applikationsverwaltung zurückT_T_HighLevelCommunicationInterfacegetBestConnectionToRemoteDav(long remoteDav)Gibt die beste Verbindung zum angegebenen (nicht notwendigerweise direkt verbundenen) Datenverteiler zurücklonggetConfigurationId(java.lang.String configurationPid)Gibt die ID der Konfiguration mit der gegebenen Pid zurückde.bsvrz.dav.daf.main.config.ConfigurationObjectgetDavObject()Gibt das Konfigurations-Objekt, das den datenverteiler repräsentiert zurückjava.util.List<java.lang.Long>getPotentialCentralDistributors(de.bsvrz.dav.daf.communication.lowLevel.telegrams.BaseSubscriptionInfo baseSubscriptionInfo)Gibt potentielle Zentraldatenverteiler für die angegebene Anmeldeinformation zurückde.bsvrz.dav.daf.main.impl.config.telegrams.TransmitterConnectionInfogetRemoteTransmitterConnectionInfo(long connectedTransmitterId)Bestimmt die Verbindungsinformationen für eine Verbindung vom angegebenen Datenverteiler zu diesem Datenverteiler.de.bsvrz.dav.daf.main.authentication.ClientCredentialsgetStoredClientCredentials(java.lang.String userName, long id)Gibt das in der Passwort(passwd)-Datei gespeicherte Passwort für den angegebenen Benutzernamen zurückde.bsvrz.dav.daf.main.authentication.ClientCredentialsgetStoredClientCredentials(java.lang.String userName, java.lang.String suffix)Gibt das gespeicherte Passwort für einen bestimmten Benutzer aus der Passwort-Datei zurückHighLevelSubscriptionsManagergetSubscriptionsManager()Gibt den SubscriptionsManager zurückTelegramManagergetTelegramManager()Gibt den TelegramManager zurückjava.lang.StringgetTransmitterApplicationName()Gibt den Namen der lokalen Transmitter-Anwendung zurückT_T_HighLevelCommunicationgetTransmitterConnectionFromId(long transmitterId)Bestimmt anhand einer Id die Verbindung diesem angemeldeten Datenverteilerde.bsvrz.dav.daf.main.impl.config.telegrams.TransmitterConnectionInfogetTransmitterConnectionInfo(long connectedTransmitterId)Gibt das TransmitterConnectionInfo-Objekt zu einem Datenverteiler zurücklonggetTransmitterId()Gibt die ID des eigenen Transmitters zurückHighLevelTransmitterManagergetTransmitterManager()Gibt die Verwaltung für andere Datenverteilerverbindungen zurückjava.lang.StringgetTransmitterTypePid()Gibt den Typ der lokalen ClientDav-Verbindung zurückjava.lang.StringgetUserName()Gibt den Benutzernamen zurück unter dem der Datenverteiler läuftshortgetWeight(long transmitterId)Gibt das gewicht zwischen der Verbindung zwischen diesem Datenverteiler und einem anderen direkt verbundenen Datenverteiler zurück.voidinitializeUser(long userId)Initialisiert die Zugriffsrechte für den angegebenen BenutzerbooleanisClosing()Gibttruezurück, wenn sich der Datenverteiler gerade beendetvoidremoveConnection(T_A_HighLevelCommunication communication)Wird aufgerufen, wenn die Verbindung zu einer Applikation terminiert wurde.voidremoveConnection(T_T_HighLevelCommunication communication)Wird aufgerufen, wenn die Verbindung zu einem Datenverteiler terminiert wurde.voidsetSelfClientDavConnection(SelfClientDavConnection selfClientDavConnection)Setzt die eigene Datenverteilerverbindung und initialisiert damit weitere Funktionenvoidshutdown(boolean isError, java.lang.String message)Beendet den DatenverteilervoidupdateListsNewLocalSubscription(de.bsvrz.dav.daf.communication.lowLevel.telegrams.BaseSubscriptionInfo baseSubscriptionInfo)Informiert die Anmeldelisten, dass dieser Datenverteiler Zentraldatenverteiler für die angegebene Anmeldung geworden istvoidupdateListsRemovedLocalSubscription(de.bsvrz.dav.daf.communication.lowLevel.telegrams.BaseSubscriptionInfo baseSubscriptionInfo)Informiert die Anmeldelisten, dass dieser Datenverteiler nicht mehr Zentraldatenverteiler für die angegebene Anmeldung istvoidupdateTransmitterCommunicationStates(java.util.Map<de.bsvrz.dav.daf.main.impl.config.telegrams.TransmitterInfo,CommunicationStateAndMessage> connections)Benachrichtigung über den Status der konfigurierten Transmitter-Verbindungen
-
-
-
Constructor Detail
-
HighLevelConnectionsManager
public HighLevelConnectionsManager(LowLevelConnectionsManagerInterface lowLevelConnectionsManager, de.bsvrz.dav.daf.accessControl.AccessControlMode userRightsChecking)
Initialisiert den HighLevelConnectionsManager- Parameters:
lowLevelConnectionsManager- LowLevelConnectionsManageruserRightsChecking-
-
-
Method Detail
-
setSelfClientDavConnection
public void setSelfClientDavConnection(SelfClientDavConnection selfClientDavConnection)
Setzt die eigene Datenverteilerverbindung und initialisiert damit weitere Funktionen- Parameters:
selfClientDavConnection- selfClientDavConnection
-
getApplicationManager
public HighLevelApplicationManager getApplicationManager()
Gibt die Applikationsverwaltung zurück- Returns:
- Applikationsverwaltung
-
getTransmitterManager
public HighLevelTransmitterManager getTransmitterManager()
Gibt die Verwaltung für andere Datenverteilerverbindungen zurück- Returns:
- Datenverteiler-Verwaltung
- Throws:
java.lang.IllegalStateException- wenn noch keine verbindung Konfiguration besteht und deswegen noch keine Datenverteiler-Datenverteiler-Verbindungen vorgesehen sind.
-
removeConnection
public void removeConnection(T_A_HighLevelCommunication communication)
Wird aufgerufen, wenn die Verbindung zu einer Applikation terminiert wurde. Hierbei werden verbliebene Anmeldungen entfernt und verschiedene Aufräumarbeiten erledigt.- Specified by:
removeConnectionin interfaceHighLevelConnectionsManagerInterface- Parameters:
communication- Applikationsverbindung
-
removeConnection
public void removeConnection(T_T_HighLevelCommunication communication)
Wird aufgerufen, wenn die Verbindung zu einem Datenverteiler terminiert wurde. Hierbei werden verbliebene Anmeldungen entfernt und verschiedene Aufräumarbeiten erledigt.- Specified by:
removeConnectionin interfaceHighLevelConnectionsManagerInterface- Parameters:
communication- Datenverteiler-Verbindung
-
getConfigurationId
public long getConfigurationId(java.lang.String configurationPid)
Gibt die ID der Konfiguration mit der gegebenen Pid zurück- Specified by:
getConfigurationIdin interfaceHighLevelConnectionsManagerInterface- Parameters:
configurationPid- Die Pid der Konfiguration- Returns:
- die Id der Konfiguration oder -1 falls kein Objekt gefunden werden konnte
- Throws:
java.lang.IllegalStateException- falls noch keine Verbindung zur Konfiguration besteht
-
getTransmitterTypePid
public java.lang.String getTransmitterTypePid()
Description copied from interface:HighLevelConnectionsManagerInterfaceGibt den Typ der lokalen ClientDav-Verbindung zurück- Specified by:
getTransmitterTypePidin interfaceHighLevelConnectionsManagerInterface- Returns:
- Gibt die Typ-Pid des lokalen Applikationsobjektes zurück
-
getTransmitterApplicationName
public java.lang.String getTransmitterApplicationName()
Description copied from interface:HighLevelConnectionsManagerInterfaceGibt den Namen der lokalen Transmitter-Anwendung zurück- Specified by:
getTransmitterApplicationNamein interfaceHighLevelConnectionsManagerInterface- Returns:
- Gibt den Namen der lokalen Applikation zurück
-
getTransmitterId
public long getTransmitterId()
Description copied from interface:HighLevelConnectionsManagerInterfaceGibt die ID des eigenen Transmitters zurück- Specified by:
getTransmitterIdin interfaceHighLevelConnectionsManagerInterface- Returns:
- Gibt die Id dieses Datenverteilers zurück
-
getUserName
public java.lang.String getUserName()
Description copied from interface:HighLevelConnectionsManagerInterfaceGibt den Benutzernamen zurück unter dem der Datenverteiler läuft- Specified by:
getUserNamein interfaceHighLevelConnectionsManagerInterface- Returns:
- Gibt den Benutzernamen zurück, der z.B. bei der Authentifizierung bei anderen Datenverteilern benutzt wird
-
getStoredClientCredentials
@Nullable public de.bsvrz.dav.daf.main.authentication.ClientCredentials getStoredClientCredentials(java.lang.String userName, java.lang.String suffix)Gibt das gespeicherte Passwort für einen bestimmten Benutzer aus der Passwort-Datei zurück- Specified by:
getStoredClientCredentialsin interfaceHighLevelConnectionsManagerInterface- Parameters:
userName- Benutzernamesuffix- Verbindungspartner (damit kann je Verbindungspartner ein unterschiedliches Passwort definiert werden) Wird ignoriert falls null oder leer- Returns:
- Passwort oder null falls kein Passwort für diesen Benutzer ermittelt werden konnte
-
getStoredClientCredentials
@Nullable public de.bsvrz.dav.daf.main.authentication.ClientCredentials getStoredClientCredentials(java.lang.String userName, long id)Description copied from interface:HighLevelConnectionsManagerInterfaceGibt das in der Passwort(passwd)-Datei gespeicherte Passwort für den angegebenen Benutzernamen zurück- Specified by:
getStoredClientCredentialsin interfaceHighLevelConnectionsManagerInterface- Parameters:
userName- Benutzernameid- ID-Des Verbindungspartners (Systemobjekt, wird automatisch in eine Pid umgewandelt)- Returns:
- Passwort oder null falls der Benutzername nicht gefunden werden konnte
-
getWeight
public short getWeight(long transmitterId)
Gibt das gewicht zwischen der Verbindung zwischen diesem Datenverteiler und einem anderen direkt verbundenen Datenverteiler zurück.- Specified by:
getWeightin interfaceHighLevelConnectionsManagerInterface- Parameters:
transmitterId- ID des anderen Datenverteilers- Returns:
- Gewicht
-
getTransmitterConnectionInfo
public de.bsvrz.dav.daf.main.impl.config.telegrams.TransmitterConnectionInfo getTransmitterConnectionInfo(long connectedTransmitterId)
Gibt das TransmitterConnectionInfo-Objekt zu einem Datenverteiler zurück- Specified by:
getTransmitterConnectionInfoin interfaceHighLevelConnectionsManagerInterface- Parameters:
connectedTransmitterId- Verbundener Datenverteiler- Returns:
- Verbindungsinformationen
-
getRemoteTransmitterConnectionInfo
public de.bsvrz.dav.daf.main.impl.config.telegrams.TransmitterConnectionInfo getRemoteTransmitterConnectionInfo(long connectedTransmitterId)
Bestimmt die Verbindungsinformationen für eine Verbindung vom angegebenen Datenverteiler zu diesem Datenverteiler.- Specified by:
getRemoteTransmitterConnectionInfoin interfaceHighLevelConnectionsManagerInterface- Parameters:
connectedTransmitterId- ID des DAV- Returns:
- Verbindungsinformationen
-
getTelegramManager
public TelegramManager getTelegramManager()
Gibt den TelegramManager zurück- Specified by:
getTelegramManagerin interfaceHighLevelConnectionsManagerInterface- Returns:
- TelegramManager
-
getApplicationConnectionFromId
public T_A_HighLevelCommunication getApplicationConnectionFromId(long applicationId)
Bestimmt anhand einer Id die Verbindung dieser angemeldeten Applikation- Specified by:
getApplicationConnectionFromIdin interfaceHighLevelConnectionsManagerInterface- Parameters:
applicationId- ID- Returns:
- Applikationsverbindung oder null falls die Applikation nicht verbunden ist bzw. noch keine Id zugewiesen bekommen hat.
-
getTransmitterConnectionFromId
public T_T_HighLevelCommunication getTransmitterConnectionFromId(long transmitterId)
Bestimmt anhand einer Id die Verbindung diesem angemeldeten Datenverteiler- Specified by:
getTransmitterConnectionFromIdin interfaceHighLevelConnectionsManagerInterface- Parameters:
transmitterId- ID- Returns:
- Datenverteilerverbindung oder null falls der Datenverteiler nicht verbunden ist bzw. noch keine Id zugewiesen bekommen hat.
-
getAllApplicationConnections
public java.util.Collection<T_A_HighLevelCommunication> getAllApplicationConnections()
Gibt alle Applikationsverbindungen zurück- Specified by:
getAllApplicationConnectionsin interfaceHighLevelConnectionsManagerInterface- Returns:
- alle Applikationsverbindungen
-
getAllTransmitterConnections
public java.util.Collection<T_T_HighLevelCommunication> getAllTransmitterConnections()
Gibt alle Datenverteilerverbindungen zurück- Specified by:
getAllTransmitterConnectionsin interfaceHighLevelConnectionsManagerInterface- Returns:
- alle Datenverteilerverbindungen
-
shutdown
public void shutdown(boolean isError, java.lang.String message)Beendet den Datenverteiler- Specified by:
shutdownin interfaceHighLevelConnectionsManagerInterface- Parameters:
isError- Zum signalisieren, dass ein Fehler aufgetreten ist: true, sonst falsemessage- Nach Bedarf eine Fehlermeldung o.ä. zur Ursache des Terminierungsbefehls
-
getAccessControlPluginsClassNames
public java.util.List<java.lang.String> getAccessControlPluginsClassNames()
Gibt eine Liste mit den per Kommandozeile festgelegten Zugriffssteuerungs-Plugin-Klassennamen zurück- Specified by:
getAccessControlPluginsClassNamesin interfaceHighLevelConnectionsManagerInterface- Returns:
- Liste mit den Zugriffssteuerungs-Plugin-Klassennamen
-
getDavObject
public de.bsvrz.dav.daf.main.config.ConfigurationObject getDavObject()
Description copied from interface:HighLevelConnectionsManagerInterfaceGibt das Konfigurations-Objekt, das den datenverteiler repräsentiert zurück- Specified by:
getDavObjectin interfaceHighLevelConnectionsManagerInterface- Returns:
- das Konfigurations-Objekt, das den datenverteiler repräsentiert
-
getPotentialCentralDistributors
public java.util.List<java.lang.Long> getPotentialCentralDistributors(de.bsvrz.dav.daf.communication.lowLevel.telegrams.BaseSubscriptionInfo baseSubscriptionInfo)
Description copied from interface:HighLevelConnectionsManagerInterfaceGibt potentielle Zentraldatenverteiler für die angegebene Anmeldeinformation zurück- Specified by:
getPotentialCentralDistributorsin interfaceHighLevelConnectionsManagerInterface- Parameters:
baseSubscriptionInfo- Anmeldeinformation- Returns:
- Potentielle Zentraldatenverteiler
-
getBestConnectionToRemoteDav
public T_T_HighLevelCommunicationInterface getBestConnectionToRemoteDav(long remoteDav)
Description copied from interface:HighLevelConnectionsManagerInterfaceGibt die beste Verbindung zum angegebenen (nicht notwendigerweise direkt verbundenen) Datenverteiler zurück- Specified by:
getBestConnectionToRemoteDavin interfaceHighLevelConnectionsManagerInterface- Returns:
- die beste Verbindung zum angegebenen Datenverteiler
-
updateListsNewLocalSubscription
public void updateListsNewLocalSubscription(de.bsvrz.dav.daf.communication.lowLevel.telegrams.BaseSubscriptionInfo baseSubscriptionInfo)
Description copied from interface:HighLevelConnectionsManagerInterfaceInformiert die Anmeldelisten, dass dieser Datenverteiler Zentraldatenverteiler für die angegebene Anmeldung geworden ist- Specified by:
updateListsNewLocalSubscriptionin interfaceHighLevelConnectionsManagerInterface- Parameters:
baseSubscriptionInfo- Anmeldung
-
updateListsRemovedLocalSubscription
public void updateListsRemovedLocalSubscription(de.bsvrz.dav.daf.communication.lowLevel.telegrams.BaseSubscriptionInfo baseSubscriptionInfo)
Description copied from interface:HighLevelConnectionsManagerInterfaceInformiert die Anmeldelisten, dass dieser Datenverteiler nicht mehr Zentraldatenverteiler für die angegebene Anmeldung ist- Specified by:
updateListsRemovedLocalSubscriptionin interfaceHighLevelConnectionsManagerInterface- Parameters:
baseSubscriptionInfo- Anmeldung
-
isClosing
public boolean isClosing()
Description copied from interface:HighLevelConnectionsManagerInterfaceGibttruezurück, wenn sich der Datenverteiler gerade beendet- Specified by:
isClosingin interfaceHighLevelConnectionsManagerInterface- Returns:
true, wenn sich der Datenverteiler gerade beendet, sonstfalse
-
getSubscriptionsManager
public HighLevelSubscriptionsManager getSubscriptionsManager()
Description copied from interface:HighLevelConnectionsManagerInterfaceGibt den SubscriptionsManager zurück- Specified by:
getSubscriptionsManagerin interfaceHighLevelConnectionsManagerInterface- Returns:
- den SubscriptionsManager
-
fetchSrpVerifierAndUser
public de.bsvrz.dav.daf.communication.srpAuthentication.SrpVerifierAndUser fetchSrpVerifierAndUser(java.lang.String userNameForVerifier, int passwordIndex) throws de.bsvrz.dav.daf.communication.srpAuthentication.SrpNotSupportedExceptionDescription copied from interface:HighLevelConnectionsManagerInterfaceHolt den SRP-Überprüfungscode und die Benutzer-ID von einem Benutzer von der Konfiguration- Specified by:
fetchSrpVerifierAndUserin interfaceHighLevelConnectionsManagerInterface- Parameters:
userNameForVerifier- Anzufragender BenutzernamepasswordIndex- Index des Einmalpassworts- Returns:
- Überprüfungscode und Benutzername analog zur
UserAdministration-Implementierung. Insbesondere ist der BenutzerUserLogin.notAuthenticated()falls es den Benutzer nicht gibt, aber es wird immer ein SRP-Überprüfungscode erzeugt um eineSrpServerAuthentication.step1(String, BigInteger, BigInteger, boolean)Fake-Authentifizierung} zu ermöglichen. - Throws:
de.bsvrz.dav.daf.communication.srpAuthentication.SrpNotSupportedException- Falls SRP nicht untersützt wird
-
disableSingleServingPassword
public void disableSingleServingPassword(java.lang.String userName, int passwordIndex)Description copied from interface:HighLevelConnectionsManagerInterfaceMarkiert das angegebene Einmalpasswort als benutzt (nachdem der Benutzer es zum erfolgreichen Einloggen verwendet hat)- Specified by:
disableSingleServingPasswordin interfaceHighLevelConnectionsManagerInterface- Parameters:
userName- BenutzernamepasswordIndex- Index des Einmalpassworts
-
initializeUser
public void initializeUser(long userId)
Initialisiert die Zugriffsrechte für den angegebenen Benutzer- Parameters:
userId- Benutzer-ID (muss in der lokalen Konfiguration existieren)
-
updateTransmitterCommunicationStates
public void updateTransmitterCommunicationStates(java.util.Map<de.bsvrz.dav.daf.main.impl.config.telegrams.TransmitterInfo,CommunicationStateAndMessage> connections)
Benachrichtigung über den Status der konfigurierten Transmitter-VerbindungenAls Key werden die konfigurierten Verbindungsinformationen gespeichert (siehe
ConfigurationManager.getTransmitterConnectionInfo(long)).Als Values wird der Verbindungsstatus gespeichert plus eine eventuelle Fehlernachricht.
- Parameters:
connections- Konfigurierte Verbindungen
-
-