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 dem
LowLevelConnectionsManager
und den Funktionen der oberen Ebene wie dem HighLevelApplicationManager
, HighLevelTransmitterManager
und dem TelegramManager
dar. 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 den TerminationQueryReceiver
ein, 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 void
disableSingleServingPassword(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.SrpVerifierAndUser
fetchSrpVerifierAndUser(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_HighLevelCommunication
getApplicationConnectionFromId(long applicationId)
Bestimmt anhand einer Id die Verbindung dieser angemeldeten ApplikationHighLevelApplicationManager
getApplicationManager()
Gibt die Applikationsverwaltung zurückT_T_HighLevelCommunicationInterface
getBestConnectionToRemoteDav(long remoteDav)
Gibt die beste Verbindung zum angegebenen (nicht notwendigerweise direkt verbundenen) Datenverteiler zurücklong
getConfigurationId(java.lang.String configurationPid)
Gibt die ID der Konfiguration mit der gegebenen Pid zurückde.bsvrz.dav.daf.main.config.ConfigurationObject
getDavObject()
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.TransmitterConnectionInfo
getRemoteTransmitterConnectionInfo(long connectedTransmitterId)
Bestimmt die Verbindungsinformationen für eine Verbindung vom angegebenen Datenverteiler zu diesem Datenverteiler.de.bsvrz.dav.daf.main.authentication.ClientCredentials
getStoredClientCredentials(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.ClientCredentials
getStoredClientCredentials(java.lang.String userName, java.lang.String suffix)
Gibt das gespeicherte Passwort für einen bestimmten Benutzer aus der Passwort-Datei zurückHighLevelSubscriptionsManager
getSubscriptionsManager()
Gibt den SubscriptionsManager zurückTelegramManager
getTelegramManager()
Gibt den TelegramManager zurückjava.lang.String
getTransmitterApplicationName()
Gibt den Namen der lokalen Transmitter-Anwendung zurückT_T_HighLevelCommunication
getTransmitterConnectionFromId(long transmitterId)
Bestimmt anhand einer Id die Verbindung diesem angemeldeten Datenverteilerde.bsvrz.dav.daf.main.impl.config.telegrams.TransmitterConnectionInfo
getTransmitterConnectionInfo(long connectedTransmitterId)
Gibt das TransmitterConnectionInfo-Objekt zu einem Datenverteiler zurücklong
getTransmitterId()
Gibt die ID des eigenen Transmitters zurückHighLevelTransmitterManager
getTransmitterManager()
Gibt die Verwaltung für andere Datenverteilerverbindungen zurückjava.lang.String
getTransmitterTypePid()
Gibt den Typ der lokalen ClientDav-Verbindung zurückjava.lang.String
getUserName()
Gibt den Benutzernamen zurück unter dem der Datenverteiler läuftshort
getWeight(long transmitterId)
Gibt das gewicht zwischen der Verbindung zwischen diesem Datenverteiler und einem anderen direkt verbundenen Datenverteiler zurück.void
initializeUser(long userId)
Initialisiert die Zugriffsrechte für den angegebenen Benutzerboolean
isClosing()
Gibttrue
zurück, wenn sich der Datenverteiler gerade beendetvoid
removeConnection(T_A_HighLevelCommunication communication)
Wird aufgerufen, wenn die Verbindung zu einer Applikation terminiert wurde.void
removeConnection(T_T_HighLevelCommunication communication)
Wird aufgerufen, wenn die Verbindung zu einem Datenverteiler terminiert wurde.void
setSelfClientDavConnection(SelfClientDavConnection selfClientDavConnection)
Setzt die eigene Datenverteilerverbindung und initialisiert damit weitere Funktionenvoid
shutdown(boolean isError, java.lang.String message)
Beendet den Datenverteilervoid
updateListsNewLocalSubscription(de.bsvrz.dav.daf.communication.lowLevel.telegrams.BaseSubscriptionInfo baseSubscriptionInfo)
Informiert die Anmeldelisten, dass dieser Datenverteiler Zentraldatenverteiler für die angegebene Anmeldung geworden istvoid
updateListsRemovedLocalSubscription(de.bsvrz.dav.daf.communication.lowLevel.telegrams.BaseSubscriptionInfo baseSubscriptionInfo)
Informiert die Anmeldelisten, dass dieser Datenverteiler nicht mehr Zentraldatenverteiler für die angegebene Anmeldung istvoid
updateTransmitterCommunicationStates(java.util.Map<de.bsvrz.dav.daf.main.impl.config.telegrams.TransmitterInfo,CommunicationStateAndMessage> connections)
Benachrichtigung über den Status der konfigurierten Transmitter-VerbindungenMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Constructor Details
-
HighLevelConnectionsManager
public HighLevelConnectionsManager(LowLevelConnectionsManagerInterface lowLevelConnectionsManager, de.bsvrz.dav.daf.accessControl.AccessControlMode userRightsChecking)Initialisiert den HighLevelConnectionsManager- Parameters:
lowLevelConnectionsManager
- LowLevelConnectionsManageruserRightsChecking
-
-
-
Method Details
-
setSelfClientDavConnection
Setzt die eigene Datenverteilerverbindung und initialisiert damit weitere Funktionen- Parameters:
selfClientDavConnection
- selfClientDavConnection
-
getApplicationManager
Gibt die Applikationsverwaltung zurück- Returns:
- Applikationsverwaltung
-
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
Wird aufgerufen, wenn die Verbindung zu einer Applikation terminiert wurde. Hierbei werden verbliebene Anmeldungen entfernt und verschiedene Aufräumarbeiten erledigt.- Specified by:
removeConnection
in interfaceHighLevelConnectionsManagerInterface
- Parameters:
communication
- Applikationsverbindung
-
removeConnection
Wird aufgerufen, wenn die Verbindung zu einem Datenverteiler terminiert wurde. Hierbei werden verbliebene Anmeldungen entfernt und verschiedene Aufräumarbeiten erledigt.- Specified by:
removeConnection
in 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:
getConfigurationId
in 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:HighLevelConnectionsManagerInterface
Gibt den Typ der lokalen ClientDav-Verbindung zurück- Specified by:
getTransmitterTypePid
in interfaceHighLevelConnectionsManagerInterface
- Returns:
- Gibt die Typ-Pid des lokalen Applikationsobjektes zurück
-
getTransmitterApplicationName
public java.lang.String getTransmitterApplicationName()Description copied from interface:HighLevelConnectionsManagerInterface
Gibt den Namen der lokalen Transmitter-Anwendung zurück- Specified by:
getTransmitterApplicationName
in interfaceHighLevelConnectionsManagerInterface
- Returns:
- Gibt den Namen der lokalen Applikation zurück
-
getTransmitterId
public long getTransmitterId()Description copied from interface:HighLevelConnectionsManagerInterface
Gibt die ID des eigenen Transmitters zurück- Specified by:
getTransmitterId
in interfaceHighLevelConnectionsManagerInterface
- Returns:
- Gibt die Id dieses Datenverteilers zurück
-
getUserName
public java.lang.String getUserName()Description copied from interface:HighLevelConnectionsManagerInterface
Gibt den Benutzernamen zurück unter dem der Datenverteiler läuft- Specified by:
getUserName
in 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:
getStoredClientCredentials
in 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:HighLevelConnectionsManagerInterface
Gibt das in der Passwort(passwd)-Datei gespeicherte Passwort für den angegebenen Benutzernamen zurück- Specified by:
getStoredClientCredentials
in 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:
getWeight
in 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:
getTransmitterConnectionInfo
in 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:
getRemoteTransmitterConnectionInfo
in interfaceHighLevelConnectionsManagerInterface
- Parameters:
connectedTransmitterId
- ID des DAV- Returns:
- Verbindungsinformationen
-
getTelegramManager
Gibt den TelegramManager zurück- Specified by:
getTelegramManager
in interfaceHighLevelConnectionsManagerInterface
- Returns:
- TelegramManager
-
getApplicationConnectionFromId
Bestimmt anhand einer Id die Verbindung dieser angemeldeten Applikation- Specified by:
getApplicationConnectionFromId
in interfaceHighLevelConnectionsManagerInterface
- Parameters:
applicationId
- ID- Returns:
- Applikationsverbindung oder null falls die Applikation nicht verbunden ist bzw. noch keine Id zugewiesen bekommen hat.
-
getTransmitterConnectionFromId
Bestimmt anhand einer Id die Verbindung diesem angemeldeten Datenverteiler- Specified by:
getTransmitterConnectionFromId
in interfaceHighLevelConnectionsManagerInterface
- Parameters:
transmitterId
- ID- Returns:
- Datenverteilerverbindung oder null falls der Datenverteiler nicht verbunden ist bzw. noch keine Id zugewiesen bekommen hat.
-
getAllApplicationConnections
Gibt alle Applikationsverbindungen zurück- Specified by:
getAllApplicationConnections
in interfaceHighLevelConnectionsManagerInterface
- Returns:
- alle Applikationsverbindungen
-
getAllTransmitterConnections
Gibt alle Datenverteilerverbindungen zurück- Specified by:
getAllTransmitterConnections
in interfaceHighLevelConnectionsManagerInterface
- Returns:
- alle Datenverteilerverbindungen
-
shutdown
public void shutdown(boolean isError, java.lang.String message)Beendet den Datenverteiler- Specified by:
shutdown
in 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:
getAccessControlPluginsClassNames
in interfaceHighLevelConnectionsManagerInterface
- Returns:
- Liste mit den Zugriffssteuerungs-Plugin-Klassennamen
-
getDavObject
public de.bsvrz.dav.daf.main.config.ConfigurationObject getDavObject()Description copied from interface:HighLevelConnectionsManagerInterface
Gibt das Konfigurations-Objekt, das den datenverteiler repräsentiert zurück- Specified by:
getDavObject
in 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:HighLevelConnectionsManagerInterface
Gibt potentielle Zentraldatenverteiler für die angegebene Anmeldeinformation zurück- Specified by:
getPotentialCentralDistributors
in interfaceHighLevelConnectionsManagerInterface
- Parameters:
baseSubscriptionInfo
- Anmeldeinformation- Returns:
- Potentielle Zentraldatenverteiler
-
getBestConnectionToRemoteDav
Description copied from interface:HighLevelConnectionsManagerInterface
Gibt die beste Verbindung zum angegebenen (nicht notwendigerweise direkt verbundenen) Datenverteiler zurück- Specified by:
getBestConnectionToRemoteDav
in 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:HighLevelConnectionsManagerInterface
Informiert die Anmeldelisten, dass dieser Datenverteiler Zentraldatenverteiler für die angegebene Anmeldung geworden ist- Specified by:
updateListsNewLocalSubscription
in interfaceHighLevelConnectionsManagerInterface
- Parameters:
baseSubscriptionInfo
- Anmeldung
-
updateListsRemovedLocalSubscription
public void updateListsRemovedLocalSubscription(de.bsvrz.dav.daf.communication.lowLevel.telegrams.BaseSubscriptionInfo baseSubscriptionInfo)Description copied from interface:HighLevelConnectionsManagerInterface
Informiert die Anmeldelisten, dass dieser Datenverteiler nicht mehr Zentraldatenverteiler für die angegebene Anmeldung ist- Specified by:
updateListsRemovedLocalSubscription
in interfaceHighLevelConnectionsManagerInterface
- Parameters:
baseSubscriptionInfo
- Anmeldung
-
isClosing
public boolean isClosing()Description copied from interface:HighLevelConnectionsManagerInterface
Gibttrue
zurück, wenn sich der Datenverteiler gerade beendet- Specified by:
isClosing
in interfaceHighLevelConnectionsManagerInterface
- Returns:
true
, wenn sich der Datenverteiler gerade beendet, sonstfalse
-
getSubscriptionsManager
Description copied from interface:HighLevelConnectionsManagerInterface
Gibt den SubscriptionsManager zurück- Specified by:
getSubscriptionsManager
in 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:HighLevelConnectionsManagerInterface
Holt den SRP-Überprüfungscode und die Benutzer-ID von einem Benutzer von der Konfiguration- Specified by:
fetchSrpVerifierAndUser
in 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:HighLevelConnectionsManagerInterface
Markiert das angegebene Einmalpasswort als benutzt (nachdem der Benutzer es zum erfolgreichen Einloggen verwendet hat)- Specified by:
disableSingleServingPassword
in 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
-