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 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
ConstructorsConstructorDescriptionHighLevelConnectionsManager(LowLevelConnectionsManagerInterface lowLevelConnectionsManager, de.bsvrz.dav.daf.accessControl.AccessControlMode userRightsChecking) Initialisiert den HighLevelConnectionsManager -
Method Summary
Modifier and TypeMethodDescriptionvoiddisableSingleServingPassword(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(String userNameForVerifier, int passwordIndex) Holt den SRP-Überprüfungscode und die Benutzer-ID von einem Benutzer von der KonfigurationGibt eine Liste mit den per Kommandozeile festgelegten Zugriffssteuerungs-Plugin-Klassennamen zurückGibt alle Applikationsverbindungen zurückGibt alle Datenverteilerverbindungen zurückgetApplicationConnectionFromId(long applicationId) Bestimmt anhand einer Id die Verbindung dieser angemeldeten ApplikationGibt die Applikationsverwaltung zurückgetBestConnectionToRemoteDav(long remoteDav) Gibt die beste Verbindung zum angegebenen (nicht notwendigerweise direkt verbundenen) Datenverteiler zurücklonggetConfigurationId(String configurationPid) Gibt die ID der Konfiguration mit der gegebenen Pid zurückde.bsvrz.dav.daf.main.config.ConfigurationObjectGibt das Konfigurations-Objekt, das den datenverteiler repräsentiert zurückgetPotentialCentralDistributors(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(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(String userName, String suffix) Gibt das gespeicherte Passwort für einen bestimmten Benutzer aus der Passwort-Datei zurückGibt den SubscriptionsManager zurückGibt den TelegramManager zurückGibt den Namen der lokalen Transmitter-Anwendung zurückgetTransmitterConnectionFromId(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ücklongGibt die ID des eigenen Transmitters zurückGibt die Verwaltung für andere Datenverteilerverbindungen zurückGibt den Typ der lokalen ClientDav-Verbindung zurückGibt 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 BenutzerbooleanGibttruezurü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 FunktionenvoidBeendet 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(Map<de.bsvrz.dav.daf.main.impl.config.telegrams.TransmitterInfo, CommunicationStateAndMessage> connections) Benachrichtigung über den Status der konfigurierten Transmitter-Verbindungen
-
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:
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:
removeConnectionin 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:
removeConnectionin interfaceHighLevelConnectionsManagerInterface- Parameters:
communication- Datenverteiler-Verbindung
-
getConfigurationId
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:
IllegalStateException- falls noch keine Verbindung zur Konfiguration besteht
-
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
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
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(String userName, 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(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
Gibt den TelegramManager zurück- Specified by:
getTelegramManagerin interfaceHighLevelConnectionsManagerInterface- Returns:
- TelegramManager
-
getApplicationConnectionFromId
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
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
Gibt alle Applikationsverbindungen zurück- Specified by:
getAllApplicationConnectionsin interfaceHighLevelConnectionsManagerInterface- Returns:
- alle Applikationsverbindungen
-
getAllTransmitterConnections
Gibt alle Datenverteilerverbindungen zurück- Specified by:
getAllTransmitterConnectionsin interfaceHighLevelConnectionsManagerInterface- Returns:
- alle Datenverteilerverbindungen
-
shutdown
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
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 List<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
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
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(String userNameForVerifier, int passwordIndex) throws de.bsvrz.dav.daf.communication.srpAuthentication.SrpNotSupportedException Description 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
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(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
-