Jitsi: the OpenSource Java VoIP and Instant Messaging client.

net.java.sip.communicator.impl.protocol.yahoo
Class ServerStoredContactListYahooImpl

java.lang.Object
  extended by net.java.sip.communicator.impl.protocol.yahoo.ServerStoredContactListYahooImpl

public class ServerStoredContactListYahooImpl
extends Object

This class encapsulates the Roster class. Once created, it will register itself as a listener to the encapsulated Roster and modify it's local copy of Contacts and ContactGroups every time an event is generated by the underlying framework. The class would also generate corresponding sip-communicator events to all events coming from smack.

Author:
Damian Minkov, Emil Ivov

Constructor Summary
ServerStoredContactListYahooImpl(OperationSetPersistentPresenceYahooImpl parentOperationSet, ProtocolProviderServiceYahooImpl provider)
          Creates a ServerStoredContactList wrapper for the specified BuddyList.
 
Method Summary
 void addContact(ContactGroupYahooImpl parent, String id)
          Adds a new contact with the specified screenname to the list under the specified group.
 void addContact(String id)
          Adds a new contact with the specified screenname to the list under a default location.
(package private)  void addGroupListener(ServerStoredGroupListener listener)
          Registers the specified group listener so that it would receive events on group modification/creation/destruction.
 void createGroup(String groupName)
          Creates the specified group on the server stored contact list.
(package private)  ContactYahooImpl createUnresolvedContact(ContactGroup parentGroup, String id)
          Creates a non resolved contact for the specified address and inside the specified group.
(package private)  ContactGroupYahooImpl createUnresolvedContactGroup(String groupName)
          Creates a non resolved contact group for the specified name.
(package private)  ContactYahooImpl createVolatileContact(String id)
          Creates a non persistent contact for the specified address.
 ContactYahooImpl findContactById(String id)
          Returns the Contact with the specified id or null if no such id was found.
 ContactYahooImpl findContactByYahooUser(ymsg.network.YahooUser yahooUser)
          Returns the Contact corresponding to the specified YahooUser or null if no such id was found.
 ContactGroup findContactGroup(ContactYahooImpl child)
          Returns the ContactGroup containing the specified contact or null if no such group or contact exist.
 ContactGroupYahooImpl findContactGroup(String name)
          Returns the ConntactGroup with the specified name or null if no such group was found.
(package private)  void fireContactAdded(ContactGroup parentGroup, ContactYahooImpl contact)
          Make the parent persistent presence operation set dispatch a contact added event.
(package private)  void fireContactResolved(ContactGroup parentGroup, ContactYahooImpl contact)
          Make the parent persistent presence operation set dispatch a contact resolved event.
(package private)  ProtocolProviderServiceYahooImpl getParentProvider()
          Returns a reference to the provider that created us.
 ContactGroup getRootGroup()
          Returns the root group of the contact list.
 void moveContact(ContactYahooImpl contact, ContactGroupYahooImpl newParent)
          Moves the specified contact to the group indicated by newParent.
(package private)  void processAuthorizationRequest(ymsg.network.event.SessionAuthorizationEvent ev)
          Process incoming authorization requests.
(package private)  void removeContact(ContactYahooImpl contactToRemove)
          Removes a contact from the serverside list Event will come for successful operation
 void removeGroup(ContactGroupYahooImpl groupToRemove)
          Removes the specified group from the buddy list.
(package private)  void removeGroupListener(ServerStoredGroupListener listener)
          Removes the specified group listener so that it won't receive further events on group modification/creation/destruction.
 void renameGroup(ContactGroupYahooImpl groupToRename, String newName)
          Renames the specified group according to the specified new name..
(package private) static String replaceIllegalChars(String ymsgString)
          It seems that ymsg (or the Yahoo! service itself as the problem also appears with libpurple) would return illegal chars for names that were entered in cyrillic.
 void setAuthorizationHandler(AuthorizationHandler handler)
          Handler for incoming authorization requests.
(package private)  void setYahooSession(YahooSession session)
          Sets the yahoo session instance of the lib which comunicates with the server
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ServerStoredContactListYahooImpl

ServerStoredContactListYahooImpl(OperationSetPersistentPresenceYahooImpl parentOperationSet,
                                 ProtocolProviderServiceYahooImpl provider)
Creates a ServerStoredContactList wrapper for the specified BuddyList.

Parameters:
parentOperationSet - the operation set that created us and that we could use for dispatching subscription events
provider - the provider that has instantiated us.
Method Detail

setAuthorizationHandler

public void setAuthorizationHandler(AuthorizationHandler handler)
Handler for incoming authorization requests.

Parameters:
handler - an instance of an AuthorizationHandler for authorization requests coming from other users requesting permission add us to their contact list.

getRootGroup

public ContactGroup getRootGroup()
Returns the root group of the contact list.

Returns:
the root ContactGroup for the ContactList

addGroupListener

void addGroupListener(ServerStoredGroupListener listener)
Registers the specified group listener so that it would receive events on group modification/creation/destruction.

Parameters:
listener - the ServerStoredGroupListener to register for group events

removeGroupListener

void removeGroupListener(ServerStoredGroupListener listener)
Removes the specified group listener so that it won't receive further events on group modification/creation/destruction.

Parameters:
listener - the ServerStoredGroupListener to unregister

getParentProvider

ProtocolProviderServiceYahooImpl getParentProvider()
Returns a reference to the provider that created us.

Returns:
a reference to a ProtocolProviderServiceImpl instance.

findContactGroup

public ContactGroupYahooImpl findContactGroup(String name)
Returns the ConntactGroup with the specified name or null if no such group was found.

Parameters:
name - the name of the group we're looking for.
Returns:
a reference to the ContactGroupYahooImpl instance we're looking for or null if no such group was found.

findContactById

public ContactYahooImpl findContactById(String id)
Returns the Contact with the specified id or null if no such id was found.

Parameters:
id - the id of the contact to find.
Returns:
the Contact carrying the specified screenName or null if no such contact exits.

findContactByYahooUser

public ContactYahooImpl findContactByYahooUser(ymsg.network.YahooUser yahooUser)
Returns the Contact corresponding to the specified YahooUser or null if no such id was found.

Parameters:
yahooUser - the YahooUser of the contact to find.
Returns:
the Contact carrying the specified screenName or null if no such contact exits.

findContactGroup

public ContactGroup findContactGroup(ContactYahooImpl child)
Returns the ContactGroup containing the specified contact or null if no such group or contact exist.

Parameters:
child - the contact whose parent group we're looking for.
Returns:
the ContactGroup containing the specified contact or null if no such groupo or contact exist.

addContact

public void addContact(String id)
                throws OperationFailedException
Adds a new contact with the specified screenname to the list under a default location.

Parameters:
id - the id of the contact to add.
Throws:
OperationFailedException

addContact

public void addContact(ContactGroupYahooImpl parent,
                       String id)
                throws OperationFailedException
Adds a new contact with the specified screenname to the list under the specified group.

Parameters:
id - the id of the contact to add.
parent - the group under which we want the new contact placed.
Throws:
OperationFailedException - if the contact already exist

createVolatileContact

ContactYahooImpl createVolatileContact(String id)
Creates a non persistent contact for the specified address. This would also create (if necessary) a group for volatile contacts that would not be added to the server stored contact list. This method would have no effect on the server stored contact list.

Parameters:
id - the address of the contact to create.
Returns:
the newly created volatile ContactImpl

createUnresolvedContact

ContactYahooImpl createUnresolvedContact(ContactGroup parentGroup,
                                         String id)
Creates a non resolved contact for the specified address and inside the specified group. The newly created contact would be added to the local contact list as a standard contact but when an event is received from the server concerning this contact, then it will be reused and only its isResolved field would be updated instead of creating the whole contact again.

Parameters:
parentGroup - the group where the unersolved contact is to be created
id - the Address of the contact to create.
Returns:
the newly created unresolved ContactImpl

createUnresolvedContactGroup

ContactGroupYahooImpl createUnresolvedContactGroup(String groupName)
Creates a non resolved contact group for the specified name. The newly created group would be added to the local contact list as any other group but when an event is received from the server concerning this group, then it will be reused and only its isResolved field would be updated instead of creating the whole group again.

Parameters:
groupName - the name of the group to create.
Returns:
the newly created unresolved ContactGroupImpl

createGroup

public void createGroup(String groupName)
                 throws OperationFailedException
Creates the specified group on the server stored contact list.

Parameters:
groupName - a String containing the name of the new group.
Throws:
OperationFailedException - with code CONTACT_GROUP_ALREADY_EXISTS if the group we're trying to create is already in our contact list.

removeGroup

public void removeGroup(ContactGroupYahooImpl groupToRemove)
Removes the specified group from the buddy list.

Parameters:
groupToRemove - the group that we'd like removed.

removeContact

void removeContact(ContactYahooImpl contactToRemove)
Removes a contact from the serverside list Event will come for successful operation

Parameters:
contactToRemove - ContactYahooImpl

renameGroup

public void renameGroup(ContactGroupYahooImpl groupToRename,
                        String newName)
Renames the specified group according to the specified new name..

Parameters:
groupToRename - the group that we'd like removed.
newName - the new name of the group

moveContact

public void moveContact(ContactYahooImpl contact,
                        ContactGroupYahooImpl newParent)
Moves the specified contact to the group indicated by newParent.

Parameters:
contact - the contact that we'd like moved under the new group.
newParent - the group where we'd like the parent placed.

fireContactAdded

void fireContactAdded(ContactGroup parentGroup,
                      ContactYahooImpl contact)
Make the parent persistent presence operation set dispatch a contact added event.

Parameters:
parentGroup - the group where the new contact was added
contact - the contact that was added

fireContactResolved

void fireContactResolved(ContactGroup parentGroup,
                         ContactYahooImpl contact)
Make the parent persistent presence operation set dispatch a contact resolved event.

Parameters:
parentGroup - the group that the resolved contact belongs to.
contact - the contact that was resolved

processAuthorizationRequest

void processAuthorizationRequest(ymsg.network.event.SessionAuthorizationEvent ev)
Process incoming authorization requests.

Parameters:
ev - the event to process.

setYahooSession

void setYahooSession(YahooSession session)
Sets the yahoo session instance of the lib which comunicates with the server

Parameters:
session - YahooSession

replaceIllegalChars

static String replaceIllegalChars(String ymsgString)
It seems that ymsg (or the Yahoo! service itself as the problem also appears with libpurple) would return illegal chars for names that were entered in cyrillic. We use this method to translate their names into something that we could actually display and store here.

Parameters:
ymsgString - the String containing illegal chars.
Returns:
a String where all illegal chars are converted into human readable ones

Jitsi: the OpenSource Java VoIP and Instant Messaging client.

Jitsi, the OpenSource Java VoIP and Instant Messaging client.
Distributable under LGPL license.