org.olat.instantMessaging
Class ClientManagerImpl

java.lang.Object
  extended by org.olat.instantMessaging.ClientManagerImpl
All Implemented Interfaces:
ClientManager

public class ClientManagerImpl
extends java.lang.Object
implements ClientManager

Description:
Manager class for creation and manipulation of the instant messaging client for each user.

Initial Date: 14.10.2004

Author:
Guido Schnider

Field Summary
 
Fields inherited from interface org.olat.instantMessaging.ClientManager
PROVIDER_INSTANT_MESSAGING
 
Method Summary
 void addMessageListener(java.lang.String username)
           
 void addPresenceListener(java.lang.String username)
           
 org.jivesoftware.smack.Chat createChat(java.lang.String username, java.lang.String chatPartnerJid, Controller controller)
           
 void deregisterControllerListener(java.lang.String username, Controller controller)
           
 void destroyInstantMessagingClient(java.lang.String username)
          When a user logs out of olat we logout the client from the jabber server and free the ressource
 java.util.Map<java.lang.String,InstantMessagingClient> getClients()
          returns the map (its iterator is safe)
 InstantMessagingClient getInstantMessagingClient(java.lang.String username)
          Creates an new instant messaging client and connects automatically to the server.
 java.lang.String getInstantMessagingCredentialsForUser(java.lang.String username)
          Looks if user has credentials for IM.
 GenericEventListener getRegisteredEventListeners(java.lang.String username, Controller controller)
           
 boolean hasActiveInstantMessagingClient(java.lang.String username)
          Check whether a user has already an IM client running Use this method when fetching clients outside a controller constructor as users may have several sessions to avoid reconnection of an duplicate session
 void registerEventListener(java.lang.String username, GenericEventListener listener, boolean listenToAllMessages)
           
 void sendPresenceEvent(org.jivesoftware.smack.packet.Presence.Type type, java.lang.String username)
          helper method to trigger a presence update even if the server does not send a presence packet itself (e.g.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getInstantMessagingClient

public InstantMessagingClient getInstantMessagingClient(java.lang.String username)
Creates an new instant messaging client and connects automatically to the server. This method should only be used in a constructor and not be triggered by GUI events, otherwise clients that lost connections may get recreated again.

Specified by:
getInstantMessagingClient in interface ClientManager
Parameters:
username -
Returns:
JabberClient even if IM service is down

hasActiveInstantMessagingClient

public boolean hasActiveInstantMessagingClient(java.lang.String username)
Check whether a user has already an IM client running Use this method when fetching clients outside a controller constructor as users may have several sessions to avoid reconnection of an duplicate session

Specified by:
hasActiveInstantMessagingClient in interface ClientManager
Parameters:
username -
Returns:

registerEventListener

public void registerEventListener(java.lang.String username,
                                  GenericEventListener listener,
                                  boolean listenToAllMessages)
Specified by:
registerEventListener in interface ClientManager
Parameters:
username -
listener -
listenToAllMessages - - only the main controller needs to listen to all messages

getRegisteredEventListeners

public GenericEventListener getRegisteredEventListeners(java.lang.String username,
                                                        Controller controller)
Specified by:
getRegisteredEventListeners in interface ClientManager

deregisterControllerListener

public void deregisterControllerListener(java.lang.String username,
                                         Controller controller)
Specified by:
deregisterControllerListener in interface ClientManager

createChat

public org.jivesoftware.smack.Chat createChat(java.lang.String username,
                                              java.lang.String chatPartnerJid,
                                              Controller controller)
Specified by:
createChat in interface ClientManager

addMessageListener

public void addMessageListener(java.lang.String username)
Specified by:
addMessageListener in interface ClientManager
Parameters:
username -

addPresenceListener

public void addPresenceListener(java.lang.String username)
Specified by:
addPresenceListener in interface ClientManager
Parameters:
username -

sendPresenceEvent

public void sendPresenceEvent(org.jivesoftware.smack.packet.Presence.Type type,
                              java.lang.String username)
helper method to trigger a presence update even if the server does not send a presence packet itself (e.g. entering a test but no other buddies are online)

Specified by:
sendPresenceEvent in interface ClientManager
Parameters:
username -

getInstantMessagingCredentialsForUser

public java.lang.String getInstantMessagingCredentialsForUser(java.lang.String username)
Looks if user has credentials for IM. If not (auth == null) a new accounts with a random generated password gets created otherwise the password gets returned.

Specified by:
getInstantMessagingCredentialsForUser in interface ClientManager
Parameters:
username - the OLAT username
Returns:
the password used for instant messaging

destroyInstantMessagingClient

public void destroyInstantMessagingClient(java.lang.String username)
When a user logs out of olat we logout the client from the jabber server and free the ressource

Specified by:
destroyInstantMessagingClient in interface ClientManager
Parameters:
username -

getClients

public java.util.Map<java.lang.String,InstantMessagingClient> getClients()
returns the map (its iterator is safe)

Specified by:
getClients in interface ClientManager
Returns:
map