Jitsi: the OpenSource Java VoIP and Instant Messaging client.

net.java.sip.communicator.impl.protocol.msn
Class ServerStoredContactListMsnImpl

java.lang.Object
  extended by net.java.sip.communicator.impl.protocol.msn.ServerStoredContactListMsnImpl

public class ServerStoredContactListMsnImpl
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

Field Summary
(package private)  net.java.sip.communicator.impl.protocol.msn.ServerStoredContactListMsnImpl.ContactListListener contactListListener
          Contact list listener.
 
Constructor Summary
ServerStoredContactListMsnImpl(OperationSetPersistentPresenceMsnImpl parentOperationSet, ProtocolProviderServiceMsnImpl provider)
          Creates a ServerStoredContactList wrapper for the specified BuddyList.
 
Method Summary
 void addContact(ContactGroupMsnImpl 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.
protected  void addContactForImageUpdate(ContactMsnImpl c)
          when there is no image for contact we must retrieve it add contacts for image update
(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)  ContactMsnImpl createUnresolvedContact(ContactGroup parentGroup, String id)
          Creates a non resolved contact for the specified address and inside the specified group.
(package private)  ContactGroupMsnImpl createUnresolvedContactGroup(String groupName)
          Creates a non resolved contact group for the specified name.
(package private)  ContactMsnImpl createVolatileContact(net.sf.jml.MsnContact contact)
          Creates a non persistent contact for the specified address.
(package private)  ContactMsnImpl createVolatileContact(String id, net.sf.jml.Email email, String displayName)
          Creates a non persistent contact for the specified address.
 ContactMsnImpl findContactById(String id)
          Returns the Contact with the specified id or null if no such id was found.
 ContactGroup findContactGroup(ContactMsnImpl child)
          Returns the ContactGroup containing the specified contact or null if no such group or contact exist.
 ContactGroupMsnImpl findContactGroup(String name)
          Returns the ConntactGroup with the specified name or null if no such group was found.
(package private)  void fireContactAdded(ContactGroup parentGroup, ContactMsnImpl contact)
          Make the parent persistent presence operation set dispatch a contact added event.
(package private)  void fireContactResolved(ContactGroup parentGroup, ContactMsnImpl contact)
          Make the parent persistent presence operation set dispatch a contact resolved event.
(package private)  ProtocolProviderServiceMsnImpl getParentProvider()
          Returns a reference to the provider that created us.
 ContactGroup getRootGroup()
          Returns the root group of the contact list.
(package private)  boolean isInitialized()
          Returns true if the contact list is initialized and ready for use, and false otherwise.
 void moveContact(ContactMsnImpl contact, ContactGroup newParent)
          Moves the specified contact to the group indicated by newParent.
 void printList()
          used for debugging.
(package private)  void removeContact(ContactMsnImpl contactToRemove)
          Removes a contact from the serverside list Event will come for successful operation
 void removeGroup(ContactGroupMsnImpl 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(ContactGroupMsnImpl groupToRename, String newName)
          Renames the specified group according to the specified new name..
(package private)  void setDisplayName(ContactMsnImpl contact, String newName)
          Changes the contact display name on the server.
(package private)  void setMessenger(net.sf.jml.MsnMessenger messenger)
          Sets the messenger instance impl of the lib which communicates with the server
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

contactListListener

net.java.sip.communicator.impl.protocol.msn.ServerStoredContactListMsnImpl.ContactListListener contactListListener
Contact list listener.

Constructor Detail

ServerStoredContactListMsnImpl

ServerStoredContactListMsnImpl(OperationSetPersistentPresenceMsnImpl parentOperationSet,
                               ProtocolProviderServiceMsnImpl 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

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

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

Returns:
a reference to a ProtocolProviderServiceImpl instance.

findContactGroup

public ContactGroupMsnImpl 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 ContactGroupMsnImpl instance we're looking for or null if no such group was found.

findContactById

public ContactMsnImpl 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.

findContactGroup

public ContactGroup findContactGroup(ContactMsnImpl 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 group 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(ContactGroupMsnImpl 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

ContactMsnImpl createVolatileContact(net.sf.jml.MsnContact contact)
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:
contact - the address of the contact to create.
Returns:
the newly created volatile ContactImpl

createVolatileContact

ContactMsnImpl createVolatileContact(String id,
                                     net.sf.jml.Email email,
                                     String displayName)
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 id of the contact to create
email - the e-mail address of the contact to create
displayName - the display name of the contact to create
Returns:
the newly created volatile ContactImpl

createUnresolvedContact

ContactMsnImpl 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 unresolved contact is to be created
id - the Address of the contact to create.
Returns:
the newly created unresolved ContactImpl

createUnresolvedContactGroup

ContactGroupMsnImpl 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(ContactGroupMsnImpl groupToRemove)
Removes the specified group from the buddy list.

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

removeContact

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

Parameters:
contactToRemove - ContactMsnImpl

renameGroup

public void renameGroup(ContactGroupMsnImpl 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(ContactMsnImpl contact,
                        ContactGroup 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,
                      ContactMsnImpl 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,
                         ContactMsnImpl 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

isInitialized

boolean isInitialized()
Returns true if the contact list is initialized and ready for use, and false otherwise.

Returns:
true if the contact list is initialized and ready for use and false otherwise

setDisplayName

void setDisplayName(ContactMsnImpl contact,
                    String newName)
Changes the contact display name on the server.

Parameters:
contact - the contact to change,
newName - the new name.

setMessenger

void setMessenger(net.sf.jml.MsnMessenger messenger)
Sets the messenger instance impl of the lib which communicates with the server

Parameters:
messenger - MsnMessenger

addContactForImageUpdate

protected void addContactForImageUpdate(ContactMsnImpl c)
when there is no image for contact we must retrieve it add contacts for image update

Parameters:
c - ContactMsnImpl

printList

public void printList()
used for debugging. Printing the serverside lists that msn supports


Jitsi: the OpenSource Java VoIP and Instant Messaging client.

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