src/com/beem/project/beem/service/RosterAdapter.java
author nikita@nikita-laptop
Sat, 07 Nov 2009 06:51:51 +0100
changeset 497 84a73d51156f
parent 482 a5a7e1af3611
child 502 3091acfe31f4
permissions -rw-r--r--
debug d'un gros bug dans login que j'avais laissé dans le commit d'avant, gestion du hide offline
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
30
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
     1
package com.beem.project.beem.service;
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
     2
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
     3
import java.util.ArrayList;
51
85705bdb77ab Ajout d'une methode pour recuperer les groups du roster
Da Risk <darisk972@gmail.com>
parents: 38
diff changeset
     4
import java.util.Collection;
30
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
     5
import java.util.List;
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
     6
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
     7
import org.jivesoftware.smack.Roster;
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
     8
import org.jivesoftware.smack.RosterEntry;
51
85705bdb77ab Ajout d'une methode pour recuperer les groups du roster
Da Risk <darisk972@gmail.com>
parents: 38
diff changeset
     9
import org.jivesoftware.smack.RosterGroup;
58
ae9ca6ed9095 Add a listner for presence message in the RosterAdapter class
Da Risk <darisk972@gmail.com>
parents: 55
diff changeset
    10
import org.jivesoftware.smack.RosterListener;
30
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    11
import org.jivesoftware.smack.XMPPException;
58
ae9ca6ed9095 Add a listner for presence message in the RosterAdapter class
Da Risk <darisk972@gmail.com>
parents: 55
diff changeset
    12
import org.jivesoftware.smack.packet.Presence;
30
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    13
61
08cfba11099a Ajout du IBeemRosterListener
nikita@nikita-rack
parents: 58
diff changeset
    14
import android.os.RemoteCallbackList;
30
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    15
import android.os.RemoteException;
58
ae9ca6ed9095 Add a listner for presence message in the RosterAdapter class
Da Risk <darisk972@gmail.com>
parents: 55
diff changeset
    16
import android.util.Log;
30
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    17
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
    18
import com.beem.project.beem.service.aidl.IBeemRosterListener;
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
    19
30
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    20
/**
38
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
    21
 * This class implement a Roster adapter for BEEM.
30
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    22
 * @author darisk
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    23
 */
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    24
public class RosterAdapter extends com.beem.project.beem.service.aidl.IRoster.Stub {
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    25
268
marseille@marseille-desktop
parents: 267 265
diff changeset
    26
    private static final String TAG = "RosterAdapter";
marseille@marseille-desktop
parents: 267 265
diff changeset
    27
    private Roster mAdaptee;
marseille@marseille-desktop
parents: 267 265
diff changeset
    28
    private RemoteCallbackList<IBeemRosterListener> mRemoteRosListeners = new RemoteCallbackList<IBeemRosterListener>();
marseille@marseille-desktop
parents: 267 265
diff changeset
    29
marseille@marseille-desktop
parents: 267 265
diff changeset
    30
    private RosterListenerAdapter mRosterListener = new RosterListenerAdapter();
marseille@marseille-desktop
parents: 267 265
diff changeset
    31
marseille@marseille-desktop
parents: 267 265
diff changeset
    32
    /**
marseille@marseille-desktop
parents: 267 265
diff changeset
    33
     * Constructor.
marseille@marseille-desktop
parents: 267 265
diff changeset
    34
     * @param roster the roster to adapt
marseille@marseille-desktop
parents: 267 265
diff changeset
    35
     */
marseille@marseille-desktop
parents: 267 265
diff changeset
    36
    public RosterAdapter(final Roster roster) {
marseille@marseille-desktop
parents: 267 265
diff changeset
    37
	mAdaptee = roster;
marseille@marseille-desktop
parents: 267 265
diff changeset
    38
	roster.addRosterListener(mRosterListener);
marseille@marseille-desktop
parents: 267 265
diff changeset
    39
    }
marseille@marseille-desktop
parents: 267 265
diff changeset
    40
marseille@marseille-desktop
parents: 267 265
diff changeset
    41
    /**
marseille@marseille-desktop
parents: 267 265
diff changeset
    42
     * {@inheritDoc}
marseille@marseille-desktop
parents: 267 265
diff changeset
    43
     */
marseille@marseille-desktop
parents: 267 265
diff changeset
    44
    @Override
marseille@marseille-desktop
parents: 267 265
diff changeset
    45
    public void addRosterListener(IBeemRosterListener listen) throws RemoteException {
marseille@marseille-desktop
parents: 267 265
diff changeset
    46
	if (listen != null)
marseille@marseille-desktop
parents: 267 265
diff changeset
    47
	    mRemoteRosListeners.register(listen);
marseille@marseille-desktop
parents: 267 265
diff changeset
    48
    }
255
8d0efe92412b Bug #170
nikita@nikita-lab
parents: 251
diff changeset
    49
268
marseille@marseille-desktop
parents: 267 265
diff changeset
    50
    /**
marseille@marseille-desktop
parents: 267 265
diff changeset
    51
     * {@inheritDoc}
marseille@marseille-desktop
parents: 267 265
diff changeset
    52
     */
marseille@marseille-desktop
parents: 267 265
diff changeset
    53
    @Override
marseille@marseille-desktop
parents: 267 265
diff changeset
    54
    public Contact addContact(String user, String name, String[] groups) throws RemoteException {
marseille@marseille-desktop
parents: 267 265
diff changeset
    55
	RosterEntry contact = mAdaptee.getEntry(user);
300
c7c1827fa960 Support #189
nikita@localhost
parents: 291
diff changeset
    56
	try {
c7c1827fa960 Support #189
nikita@localhost
parents: 291
diff changeset
    57
	    mAdaptee.createEntry(user, name, groups);
c7c1827fa960 Support #189
nikita@localhost
parents: 291
diff changeset
    58
	    contact = mAdaptee.getEntry(user);
c7c1827fa960 Support #189
nikita@localhost
parents: 291
diff changeset
    59
	} catch (XMPPException e) {
c7c1827fa960 Support #189
nikita@localhost
parents: 291
diff changeset
    60
	    Log.e(TAG, "Error while adding new contact", e);
c7c1827fa960 Support #189
nikita@localhost
parents: 291
diff changeset
    61
	    return null;
268
marseille@marseille-desktop
parents: 267 265
diff changeset
    62
	}
291
nikita@localhost
parents: 287
diff changeset
    63
	if (groups != null) {
nikita@localhost
parents: 287
diff changeset
    64
	    for (String groupStr : groups) {
nikita@localhost
parents: 287
diff changeset
    65
		RosterGroup group = mAdaptee.getGroup(groupStr);
nikita@localhost
parents: 287
diff changeset
    66
		if (group == null) {
nikita@localhost
parents: 287
diff changeset
    67
		    group = mAdaptee.createGroup(groupStr);
342
2b489d4a7917 Some checkstyle rules
darisk@kaaliyah
parents: 314
diff changeset
    68
		}
291
nikita@localhost
parents: 287
diff changeset
    69
		try {
nikita@localhost
parents: 287
diff changeset
    70
		    group.addEntry(contact);
nikita@localhost
parents: 287
diff changeset
    71
		} catch (XMPPException e) {
nikita@localhost
parents: 287
diff changeset
    72
		    e.printStackTrace();
300
c7c1827fa960 Support #189
nikita@localhost
parents: 291
diff changeset
    73
		    return null;
291
nikita@localhost
parents: 287
diff changeset
    74
		}
342
2b489d4a7917 Some checkstyle rules
darisk@kaaliyah
parents: 314
diff changeset
    75
	    }
291
nikita@localhost
parents: 287
diff changeset
    76
	}
300
c7c1827fa960 Support #189
nikita@localhost
parents: 291
diff changeset
    77
	return getContactFromRosterEntry(contact);
268
marseille@marseille-desktop
parents: 267 265
diff changeset
    78
    }
255
8d0efe92412b Bug #170
nikita@nikita-lab
parents: 251
diff changeset
    79
268
marseille@marseille-desktop
parents: 267 265
diff changeset
    80
    /**
marseille@marseille-desktop
parents: 267 265
diff changeset
    81
     * {@inheritDoc}
marseille@marseille-desktop
parents: 267 265
diff changeset
    82
     */
marseille@marseille-desktop
parents: 267 265
diff changeset
    83
    @Override
425
2e33fad3ec98 User info delete user.
Vincent Veronis <veroni_v@epitech.net>
parents: 402
diff changeset
    84
    public void deleteContact(Contact contact) throws RemoteException {
268
marseille@marseille-desktop
parents: 267 265
diff changeset
    85
	try {
286
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
    86
	    RosterEntry entry = mAdaptee.getEntry(contact.getJID());
425
2e33fad3ec98 User info delete user.
Vincent Veronis <veroni_v@epitech.net>
parents: 402
diff changeset
    87
	    mAdaptee.removeEntry(entry);
268
marseille@marseille-desktop
parents: 267 265
diff changeset
    88
	} catch (XMPPException e) {
marseille@marseille-desktop
parents: 267 265
diff changeset
    89
	    e.printStackTrace();
marseille@marseille-desktop
parents: 267 265
diff changeset
    90
	}
marseille@marseille-desktop
parents: 267 265
diff changeset
    91
    }
marseille@marseille-desktop
parents: 267 265
diff changeset
    92
marseille@marseille-desktop
parents: 267 265
diff changeset
    93
    /**
marseille@marseille-desktop
parents: 267 265
diff changeset
    94
     * {@inheritDoc}
marseille@marseille-desktop
parents: 267 265
diff changeset
    95
     */
marseille@marseille-desktop
parents: 267 265
diff changeset
    96
    @Override
marseille@marseille-desktop
parents: 267 265
diff changeset
    97
    public void createGroup(String groupname) throws RemoteException {
300
c7c1827fa960 Support #189
nikita@localhost
parents: 291
diff changeset
    98
	try {
287
d951927691e1 EntriesDeleted
Marseille
parents: 286
diff changeset
    99
	    mAdaptee.createGroup(groupname);
300
c7c1827fa960 Support #189
nikita@localhost
parents: 291
diff changeset
   100
	} catch (IllegalArgumentException e) {
351
718557c6c309 Checkstyle rules
darisk@kaaliyah
parents: 350
diff changeset
   101
	    Log.e(TAG, "Error while creating group", e);
300
c7c1827fa960 Support #189
nikita@localhost
parents: 291
diff changeset
   102
	}
268
marseille@marseille-desktop
parents: 267 265
diff changeset
   103
    }
marseille@marseille-desktop
parents: 267 265
diff changeset
   104
marseille@marseille-desktop
parents: 267 265
diff changeset
   105
    /**
marseille@marseille-desktop
parents: 267 265
diff changeset
   106
     * {@inheritDoc}
marseille@marseille-desktop
parents: 267 265
diff changeset
   107
     */
marseille@marseille-desktop
parents: 267 265
diff changeset
   108
    @Override
marseille@marseille-desktop
parents: 267 265
diff changeset
   109
    public Contact getContact(String jid) throws RemoteException {
300
c7c1827fa960 Support #189
nikita@localhost
parents: 291
diff changeset
   110
	if (mAdaptee.contains(jid))
c7c1827fa960 Support #189
nikita@localhost
parents: 291
diff changeset
   111
	    return getContactFromRosterEntry(mAdaptee.getEntry(jid));
c7c1827fa960 Support #189
nikita@localhost
parents: 291
diff changeset
   112
	return null;
268
marseille@marseille-desktop
parents: 267 265
diff changeset
   113
    }
marseille@marseille-desktop
parents: 267 265
diff changeset
   114
marseille@marseille-desktop
parents: 267 265
diff changeset
   115
    /**
marseille@marseille-desktop
parents: 267 265
diff changeset
   116
     * {@inheritDoc}
marseille@marseille-desktop
parents: 267 265
diff changeset
   117
     */
marseille@marseille-desktop
parents: 267 265
diff changeset
   118
    @Override
marseille@marseille-desktop
parents: 267 265
diff changeset
   119
    public List<Contact> getContactList() throws RemoteException {
350
5bb849b49099 Correction
darisk@kaaliyah
parents: 349
diff changeset
   120
	List<Contact> coList = new ArrayList<Contact>(mAdaptee.getEntries().size());
342
2b489d4a7917 Some checkstyle rules
darisk@kaaliyah
parents: 314
diff changeset
   121
	for (RosterEntry entry : mAdaptee.getEntries()) {
300
c7c1827fa960 Support #189
nikita@localhost
parents: 291
diff changeset
   122
	    coList.add(getContactFromRosterEntry(entry));
c7c1827fa960 Support #189
nikita@localhost
parents: 291
diff changeset
   123
	}
c7c1827fa960 Support #189
nikita@localhost
parents: 291
diff changeset
   124
	return coList;
268
marseille@marseille-desktop
parents: 267 265
diff changeset
   125
    }
255
8d0efe92412b Bug #170
nikita@nikita-lab
parents: 251
diff changeset
   126
268
marseille@marseille-desktop
parents: 267 265
diff changeset
   127
    /**
marseille@marseille-desktop
parents: 267 265
diff changeset
   128
     * {@inheritDoc}
marseille@marseille-desktop
parents: 267 265
diff changeset
   129
     */
marseille@marseille-desktop
parents: 267 265
diff changeset
   130
    @Override
marseille@marseille-desktop
parents: 267 265
diff changeset
   131
    public List<String> getGroupsNames() throws RemoteException {
marseille@marseille-desktop
parents: 267 265
diff changeset
   132
	Collection<RosterGroup> groups = mAdaptee.getGroups();
474
dd6d3c09d0d1 checkstyle
Da Risk <darisk972@gmail.com>
parents: 453
diff changeset
   133
	List<String> result = new ArrayList<String>(groups.size());
268
marseille@marseille-desktop
parents: 267 265
diff changeset
   134
	for (RosterGroup rosterGroup : groups) {
marseille@marseille-desktop
parents: 267 265
diff changeset
   135
	    result.add(rosterGroup.getName());
marseille@marseille-desktop
parents: 267 265
diff changeset
   136
	}
marseille@marseille-desktop
parents: 267 265
diff changeset
   137
	return result;
marseille@marseille-desktop
parents: 267 265
diff changeset
   138
    }
marseille@marseille-desktop
parents: 267 265
diff changeset
   139
marseille@marseille-desktop
parents: 267 265
diff changeset
   140
    /**
marseille@marseille-desktop
parents: 267 265
diff changeset
   141
     * {@inheritDoc}
marseille@marseille-desktop
parents: 267 265
diff changeset
   142
     */
marseille@marseille-desktop
parents: 267 265
diff changeset
   143
    @Override
marseille@marseille-desktop
parents: 267 265
diff changeset
   144
    public void removeRosterListener(IBeemRosterListener listen) throws RemoteException {
marseille@marseille-desktop
parents: 267 265
diff changeset
   145
	if (listen != null)
marseille@marseille-desktop
parents: 267 265
diff changeset
   146
	    mRemoteRosListeners.unregister(listen);
marseille@marseille-desktop
parents: 267 265
diff changeset
   147
    }
marseille@marseille-desktop
parents: 267 265
diff changeset
   148
marseille@marseille-desktop
parents: 267 265
diff changeset
   149
    /**
342
2b489d4a7917 Some checkstyle rules
darisk@kaaliyah
parents: 314
diff changeset
   150
     * {@inheritDoc}
269
d78115a6b45b Feature #183
nikita@localhost
parents: 255
diff changeset
   151
     */
268
marseille@marseille-desktop
parents: 267 265
diff changeset
   152
    @Override
marseille@marseille-desktop
parents: 267 265
diff changeset
   153
    public void setContactName(String jid, String name) throws RemoteException {
marseille@marseille-desktop
parents: 267 265
diff changeset
   154
	mAdaptee.getEntry(jid).setName(name);
marseille@marseille-desktop
parents: 267 265
diff changeset
   155
    }
marseille@marseille-desktop
parents: 267 265
diff changeset
   156
marseille@marseille-desktop
parents: 267 265
diff changeset
   157
    @Override
marseille@marseille-desktop
parents: 267 265
diff changeset
   158
    public PresenceAdapter getPresence(String jid) throws RemoteException {
marseille@marseille-desktop
parents: 267 265
diff changeset
   159
	return new PresenceAdapter(mAdaptee.getPresence(jid));
marseille@marseille-desktop
parents: 267 265
diff changeset
   160
    }
450
fe0ba62ee3ff Correction de l'ensemble des erreurs de CheckStyle.
dasilvj
parents: 443
diff changeset
   161
443
97c8c32b61d0 maj de groupList, ce devrait etre bon pour l'ajout de group et l'ajout de contact dans un groupe, mais a debug encore
Nikita Kozlov <nikita@beem-project.com>
parents: 425
diff changeset
   162
    @Override
97c8c32b61d0 maj de groupList, ce devrait etre bon pour l'ajout de group et l'ajout de contact dans un groupe, mais a debug encore
Nikita Kozlov <nikita@beem-project.com>
parents: 425
diff changeset
   163
    public void addContactToGroup(String groupName, String jid) throws RemoteException {
97c8c32b61d0 maj de groupList, ce devrait etre bon pour l'ajout de group et l'ajout de contact dans un groupe, mais a debug encore
Nikita Kozlov <nikita@beem-project.com>
parents: 425
diff changeset
   164
	createGroup(groupName);
97c8c32b61d0 maj de groupList, ce devrait etre bon pour l'ajout de group et l'ajout de contact dans un groupe, mais a debug encore
Nikita Kozlov <nikita@beem-project.com>
parents: 425
diff changeset
   165
	RosterGroup group = mAdaptee.getGroup(groupName);
97c8c32b61d0 maj de groupList, ce devrait etre bon pour l'ajout de group et l'ajout de contact dans un groupe, mais a debug encore
Nikita Kozlov <nikita@beem-project.com>
parents: 425
diff changeset
   166
	try {
97c8c32b61d0 maj de groupList, ce devrait etre bon pour l'ajout de group et l'ajout de contact dans un groupe, mais a debug encore
Nikita Kozlov <nikita@beem-project.com>
parents: 425
diff changeset
   167
	    group.addEntry(mAdaptee.getEntry(jid));
97c8c32b61d0 maj de groupList, ce devrait etre bon pour l'ajout de group et l'ajout de contact dans un groupe, mais a debug encore
Nikita Kozlov <nikita@beem-project.com>
parents: 425
diff changeset
   168
	} catch (XMPPException e) {
97c8c32b61d0 maj de groupList, ce devrait etre bon pour l'ajout de group et l'ajout de contact dans un groupe, mais a debug encore
Nikita Kozlov <nikita@beem-project.com>
parents: 425
diff changeset
   169
	    e.printStackTrace();
450
fe0ba62ee3ff Correction de l'ensemble des erreurs de CheckStyle.
dasilvj
parents: 443
diff changeset
   170
	}
443
97c8c32b61d0 maj de groupList, ce devrait etre bon pour l'ajout de group et l'ajout de contact dans un groupe, mais a debug encore
Nikita Kozlov <nikita@beem-project.com>
parents: 425
diff changeset
   171
    }
450
fe0ba62ee3ff Correction de l'ensemble des erreurs de CheckStyle.
dasilvj
parents: 443
diff changeset
   172
443
97c8c32b61d0 maj de groupList, ce devrait etre bon pour l'ajout de group et l'ajout de contact dans un groupe, mais a debug encore
Nikita Kozlov <nikita@beem-project.com>
parents: 425
diff changeset
   173
    @Override
97c8c32b61d0 maj de groupList, ce devrait etre bon pour l'ajout de group et l'ajout de contact dans un groupe, mais a debug encore
Nikita Kozlov <nikita@beem-project.com>
parents: 425
diff changeset
   174
    public void removeContactFromGroup(String groupName, String jid) throws RemoteException {
97c8c32b61d0 maj de groupList, ce devrait etre bon pour l'ajout de group et l'ajout de contact dans un groupe, mais a debug encore
Nikita Kozlov <nikita@beem-project.com>
parents: 425
diff changeset
   175
	RosterGroup group = mAdaptee.getGroup(groupName);
97c8c32b61d0 maj de groupList, ce devrait etre bon pour l'ajout de group et l'ajout de contact dans un groupe, mais a debug encore
Nikita Kozlov <nikita@beem-project.com>
parents: 425
diff changeset
   176
	try {
97c8c32b61d0 maj de groupList, ce devrait etre bon pour l'ajout de group et l'ajout de contact dans un groupe, mais a debug encore
Nikita Kozlov <nikita@beem-project.com>
parents: 425
diff changeset
   177
	    group.removeEntry(mAdaptee.getEntry(jid));
97c8c32b61d0 maj de groupList, ce devrait etre bon pour l'ajout de group et l'ajout de contact dans un groupe, mais a debug encore
Nikita Kozlov <nikita@beem-project.com>
parents: 425
diff changeset
   178
	} catch (XMPPException e) {
97c8c32b61d0 maj de groupList, ce devrait etre bon pour l'ajout de group et l'ajout de contact dans un groupe, mais a debug encore
Nikita Kozlov <nikita@beem-project.com>
parents: 425
diff changeset
   179
	    e.printStackTrace();
97c8c32b61d0 maj de groupList, ce devrait etre bon pour l'ajout de group et l'ajout de contact dans un groupe, mais a debug encore
Nikita Kozlov <nikita@beem-project.com>
parents: 425
diff changeset
   180
	}
97c8c32b61d0 maj de groupList, ce devrait etre bon pour l'ajout de group et l'ajout de contact dans un groupe, mais a debug encore
Nikita Kozlov <nikita@beem-project.com>
parents: 425
diff changeset
   181
    }
268
marseille@marseille-desktop
parents: 267 265
diff changeset
   182
349
84d45a88699f Checkstyle rules
darisk@kaaliyah
parents: 342
diff changeset
   183
    /**
84d45a88699f Checkstyle rules
darisk@kaaliyah
parents: 342
diff changeset
   184
     * Get a contact from a RosterEntry.
351
718557c6c309 Checkstyle rules
darisk@kaaliyah
parents: 350
diff changeset
   185
     * @param entry a roster entry containing information for the contact.
718557c6c309 Checkstyle rules
darisk@kaaliyah
parents: 350
diff changeset
   186
     * @return a contact for this entry.
349
84d45a88699f Checkstyle rules
darisk@kaaliyah
parents: 342
diff changeset
   187
     */
286
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
   188
    private Contact getContactFromRosterEntry(RosterEntry entry) {
369
952c6eeb6493 Gestion des resources dans la contactList
Da Risk <darisk972@gmail.com>
parents: 351
diff changeset
   189
	String user = entry.getUser();
279
af993bc754a5 Affichage userfriendly du login dans im
Philippe Lago <lago_p@epitech.net>
parents: 271
diff changeset
   190
	Contact c = new Contact(user);
af993bc754a5 Affichage userfriendly du login dans im
Philippe Lago <lago_p@epitech.net>
parents: 271
diff changeset
   191
	c.setStatus(mAdaptee.getPresence(user));
482
a5a7e1af3611 #Bug 209
Nikita Kozlov <nikita@beem-project.com>
parents: 474
diff changeset
   192
	try {
a5a7e1af3611 #Bug 209
Nikita Kozlov <nikita@beem-project.com>
parents: 474
diff changeset
   193
	    c.setGroups(entry.getGroups());
a5a7e1af3611 #Bug 209
Nikita Kozlov <nikita@beem-project.com>
parents: 474
diff changeset
   194
	}catch(NullPointerException e){
a5a7e1af3611 #Bug 209
Nikita Kozlov <nikita@beem-project.com>
parents: 474
diff changeset
   195
	    Log.d(TAG, "Group list not ready");
a5a7e1af3611 #Bug 209
Nikita Kozlov <nikita@beem-project.com>
parents: 474
diff changeset
   196
	}
279
af993bc754a5 Affichage userfriendly du login dans im
Philippe Lago <lago_p@epitech.net>
parents: 271
diff changeset
   197
	c.setName(entry.getName());
af993bc754a5 Affichage userfriendly du login dans im
Philippe Lago <lago_p@epitech.net>
parents: 271
diff changeset
   198
	return c;
450
fe0ba62ee3ff Correction de l'ensemble des erreurs de CheckStyle.
dasilvj
parents: 443
diff changeset
   199
    }
279
af993bc754a5 Affichage userfriendly du login dans im
Philippe Lago <lago_p@epitech.net>
parents: 271
diff changeset
   200
267
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   201
    /**
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   202
     * Listener for the roster events. It will call the remote listeners registered.
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   203
     * @author darisk
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   204
     */
497
84a73d51156f debug d'un gros bug dans login que j'avais laissé dans le commit d'avant, gestion du hide offline
nikita@nikita-laptop
parents: 482
diff changeset
   205
    private class RosterListenerAdapter implements RosterListener{
61
08cfba11099a Ajout du IBeemRosterListener
nikita@nikita-rack
parents: 58
diff changeset
   206
80
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   207
	/**
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   208
	 * Constructor.
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   209
	 */
267
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   210
	public RosterListenerAdapter() {
255
8d0efe92412b Bug #170
nikita@nikita-lab
parents: 251
diff changeset
   211
	}
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   212
351
718557c6c309 Checkstyle rules
darisk@kaaliyah
parents: 350
diff changeset
   213
	/**
718557c6c309 Checkstyle rules
darisk@kaaliyah
parents: 350
diff changeset
   214
	 * Event which is fired when an entry is deleted for a group.
718557c6c309 Checkstyle rules
darisk@kaaliyah
parents: 350
diff changeset
   215
	 * @param group the group the entry was.
718557c6c309 Checkstyle rules
darisk@kaaliyah
parents: 350
diff changeset
   216
	 * @param jid the jid of the entry which is deleted.
371
f2c9564a3cc7 Checkstyle
Da Risk <darisk972@gmail.com>
parents: 370
diff changeset
   217
	 */
497
84a73d51156f debug d'un gros bug dans login que j'avais laissé dans le commit d'avant, gestion du hide offline
nikita@nikita-laptop
parents: 482
diff changeset
   218
	@SuppressWarnings("unused")
84a73d51156f debug d'un gros bug dans login que j'avais laissé dans le commit d'avant, gestion du hide offline
nikita@nikita-laptop
parents: 482
diff changeset
   219
	public void onEntryDeleteFromGroup(final String group, final String jid) {
425
2e33fad3ec98 User info delete user.
Vincent Veronis <veroni_v@epitech.net>
parents: 402
diff changeset
   220
	    // Log.i(TAG, "entry delete listener");
286
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
   221
	    final int n = mRemoteRosListeners.beginBroadcast();
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
   222
	    for (int i = 0; i < n; i++) {
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
   223
		IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i);
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
   224
		try {
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
   225
		    listener.onEntryDeleteFromGroup(group, jid);
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
   226
		} catch (RemoteException e) {
287
d951927691e1 EntriesDeleted
Marseille
parents: 286
diff changeset
   227
		    Log.w(TAG, "entry delete listener", e);
286
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
   228
		}
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
   229
	    }
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
   230
	    mRemoteRosListeners.finishBroadcast();
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
   231
371
f2c9564a3cc7 Checkstyle
Da Risk <darisk972@gmail.com>
parents: 370
diff changeset
   232
	}
286
8979375c19f0 Suppression de contact.
Marseille
parents: 285
diff changeset
   233
255
8d0efe92412b Bug #170
nikita@nikita-lab
parents: 251
diff changeset
   234
	/**
8d0efe92412b Bug #170
nikita@nikita-lab
parents: 251
diff changeset
   235
	 * {@inheritDoc}
8d0efe92412b Bug #170
nikita@nikita-lab
parents: 251
diff changeset
   236
	 */
8d0efe92412b Bug #170
nikita@nikita-lab
parents: 251
diff changeset
   237
	@Override
267
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   238
	public void entriesAdded(Collection<String> addresses) {
450
fe0ba62ee3ff Correction de l'ensemble des erreurs de CheckStyle.
dasilvj
parents: 443
diff changeset
   239
	    // Log.i(TAG, "Ajout de l'entry " + addresses.size() + " " +
fe0ba62ee3ff Correction de l'ensemble des erreurs de CheckStyle.
dasilvj
parents: 443
diff changeset
   240
	    // addresses.toArray()[0]);
267
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   241
	    final int n = mRemoteRosListeners.beginBroadcast();
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   242
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   243
	    List<String> tab = new ArrayList<String>();
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   244
	    tab.addAll(addresses);
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   245
	    for (int i = 0; i < n; i++) {
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   246
		IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i);
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   247
		try {
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   248
		    listener.onEntriesAdded(tab);
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   249
		} catch (RemoteException e) {
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   250
		    Log.w(TAG, "Error while adding roster entries", e);
255
8d0efe92412b Bug #170
nikita@nikita-lab
parents: 251
diff changeset
   251
		}
267
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   252
	    }
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   253
	    mRemoteRosListeners.finishBroadcast();
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   254
	}
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   255
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   256
	/**
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   257
	 * {@inheritDoc}
80
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   258
	 */
267
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   259
	@Override
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   260
	public void entriesDeleted(Collection<String> addresses) {
425
2e33fad3ec98 User info delete user.
Vincent Veronis <veroni_v@epitech.net>
parents: 402
diff changeset
   261
	    // Log.i(TAG, "Suppression de l'entry");
267
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   262
	    final int n = mRemoteRosListeners.beginBroadcast();
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   263
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   264
	    List<String> tab = new ArrayList<String>();
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   265
	    tab.addAll(addresses);
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   266
	    for (int i = 0; i < n; i++) {
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   267
		IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i);
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   268
		try {
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   269
		    listener.onEntriesDeleted(tab);
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   270
		} catch (RemoteException e) {
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   271
		    Log.w(TAG, "Error while deleting roster entries", e);
69
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   272
		}
267
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   273
	    }
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   274
	    mRemoteRosListeners.finishBroadcast();
58
ae9ca6ed9095 Add a listner for presence message in the RosterAdapter class
Da Risk <darisk972@gmail.com>
parents: 55
diff changeset
   275
	}
51
85705bdb77ab Ajout d'une methode pour recuperer les groups du roster
Da Risk <darisk972@gmail.com>
parents: 38
diff changeset
   276
255
8d0efe92412b Bug #170
nikita@nikita-lab
parents: 251
diff changeset
   277
	/**
8d0efe92412b Bug #170
nikita@nikita-lab
parents: 251
diff changeset
   278
	 * {@inheritDoc}
8d0efe92412b Bug #170
nikita@nikita-lab
parents: 251
diff changeset
   279
	 */
8d0efe92412b Bug #170
nikita@nikita-lab
parents: 251
diff changeset
   280
	@Override
267
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   281
	public void entriesUpdated(Collection<String> addresses) {
450
fe0ba62ee3ff Correction de l'ensemble des erreurs de CheckStyle.
dasilvj
parents: 443
diff changeset
   282
	    // Log.i(TAG, "Update de l'entry " + addresses.size() + " " +
fe0ba62ee3ff Correction de l'ensemble des erreurs de CheckStyle.
dasilvj
parents: 443
diff changeset
   283
	    // addresses.toArray()[0]);
267
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   284
	    final int n = mRemoteRosListeners.beginBroadcast();
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 209
diff changeset
   285
267
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   286
	    List<String> tab = new ArrayList<String>();
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   287
	    tab.addAll(addresses);
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   288
	    for (int i = 0; i < n; i++) {
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   289
		IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i);
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   290
		try {
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   291
		    listener.onEntriesUpdated(tab);
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   292
		} catch (RemoteException e) {
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   293
		    Log.w(TAG, "Error while updating roster entries", e);
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   294
		}
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   295
	    }
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   296
	    mRemoteRosListeners.finishBroadcast();
251
fae2a16a1f28 Feature #169
nikita@nikita-lab
parents: 237
diff changeset
   297
	}
fae2a16a1f28 Feature #169
nikita@nikita-lab
parents: 237
diff changeset
   298
265
3ee7b8fdbddd L'ajout de contact ne necessite plus de remplir tous les champs
Da Risk <darisk972@gmail.com>
parents: 255
diff changeset
   299
	/**
80
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   300
	 * {@inheritDoc}
265
3ee7b8fdbddd L'ajout de contact ne necessite plus de remplir tous les champs
Da Risk <darisk972@gmail.com>
parents: 255
diff changeset
   301
	 */
69
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   302
	@Override
267
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   303
	public void presenceChanged(Presence presence) {
425
2e33fad3ec98 User info delete user.
Vincent Veronis <veroni_v@epitech.net>
parents: 402
diff changeset
   304
	    // Log.i(TAG, "presence Changed");
267
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   305
	    /* redispatch vers les IBeemRosterListener */
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   306
	    final int n = mRemoteRosListeners.beginBroadcast();
265
3ee7b8fdbddd L'ajout de contact ne necessite plus de remplir tous les champs
Da Risk <darisk972@gmail.com>
parents: 255
diff changeset
   307
267
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   308
	    for (int i = 0; i < n; i++) {
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   309
		IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i);
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   310
		try {
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   311
		    listener.onPresenceChanged(new PresenceAdapter(presence));
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   312
		} catch (RemoteException e) {
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   313
		    // The RemoteCallbackList will take care of removing the
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   314
		    // dead listeners.
402
4684a42ae0ad pas mal de cleannance et aussi du debug sur les decos
Nikita Kozlov <nikita@beem-project.com>
parents: 371
diff changeset
   315
		    Log.w(TAG, "Error while updating roster presence entries", e);
265
3ee7b8fdbddd L'ajout de contact ne necessite plus de remplir tous les champs
Da Risk <darisk972@gmail.com>
parents: 255
diff changeset
   316
		}
267
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   317
	    }
ab5493f08c57 Suppression du contact.
marseille@marseille-desktop
parents: 255
diff changeset
   318
	    mRemoteRosListeners.finishBroadcast();
265
3ee7b8fdbddd L'ajout de contact ne necessite plus de remplir tous les champs
Da Risk <darisk972@gmail.com>
parents: 255
diff changeset
   319
	}
450
fe0ba62ee3ff Correction de l'ensemble des erreurs de CheckStyle.
dasilvj
parents: 443
diff changeset
   320
    }
30
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
   321
}