src/com/beem/project/beem/service/RosterAdapter.java
author nikita@nikita-lab
Fri, 22 May 2009 16:45:49 +0200
changeset 207 dbc0c467c3e6
parent 194 4f1b3af03671
child 209 f5b9da8365f5
permissions -rw-r--r--
ajout de la gestion du resend de la subscription request
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
/**
55
66732dd2cb77 Add an interface for sending im message.
Da Risk <darisk972@gmail.com>
parents: 51
diff changeset
     2
 *
30
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
     3
 */
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
     4
package com.beem.project.beem.service;
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
     5
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
     6
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
     7
import java.util.Collection;
38
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
     8
import java.util.HashMap;
30
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
     9
import java.util.List;
38
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
    10
import java.util.Map;
30
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    11
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    12
import org.jivesoftware.smack.Roster;
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    13
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
    14
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
    15
import org.jivesoftware.smack.RosterListener;
30
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    16
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
    17
import org.jivesoftware.smack.packet.Presence;
69
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    18
import org.jivesoftware.smack.util.StringUtils;
30
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    19
61
08cfba11099a Ajout du IBeemRosterListener
nikita@nikita-rack
parents: 58
diff changeset
    20
import com.beem.project.beem.service.aidl.IBeemRosterListener;
08cfba11099a Ajout du IBeemRosterListener
nikita@nikita-rack
parents: 58
diff changeset
    21
08cfba11099a Ajout du IBeemRosterListener
nikita@nikita-rack
parents: 58
diff changeset
    22
import android.os.RemoteCallbackList;
30
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    23
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
    24
import android.util.Log;
30
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    25
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    26
/**
38
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
    27
 * This class implement a Roster adapter for BEEM.
30
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    28
 * @author darisk
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    29
 */
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    30
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
    31
69
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    32
    private static final String TAG = "RosterAdapter";
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    33
    private Roster mAdaptee;
180
d77ea17eea3a ajout des groupes dans ContactAdapter.java
nikita@nikita-rack
parents: 157
diff changeset
    34
    private RemoteCallbackList<IBeemRosterListener> mRemoteRosListeners = new RemoteCallbackList<IBeemRosterListener>();
69
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    35
    private Map<String, Contact> mContacts = new HashMap<String, Contact>();
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    36
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    37
    private RosterListenerAdapter mRosterListener = new RosterListenerAdapter();
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    38
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    39
    /**
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    40
     * Constructor.
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    41
     * @param roster the roster to adapt
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    42
     */
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    43
    public RosterAdapter(final Roster roster) {
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    44
	mAdaptee = roster;
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    45
	roster.addRosterListener(mRosterListener);
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    46
	for (RosterEntry entry : roster.getEntries()) {
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    47
	    String user = StringUtils.parseBareAddress(entry.getUser());
124
4eaf1efcadda ca devrait etre bon pour la presence a la connection
nikita@nikita-rack
parents: 99
diff changeset
    48
	    if (!mContacts.containsKey(user)) {
4eaf1efcadda ca devrait etre bon pour la presence a la connection
nikita@nikita-rack
parents: 99
diff changeset
    49
		Contact c = new Contact(user);
4eaf1efcadda ca devrait etre bon pour la presence a la connection
nikita@nikita-rack
parents: 99
diff changeset
    50
		c.setStatus(roster.getPresence(user));
181
nikita@nikita-rack
parents: 180
diff changeset
    51
		c.setGroups(entry.getGroups());
180
d77ea17eea3a ajout des groupes dans ContactAdapter.java
nikita@nikita-rack
parents: 157
diff changeset
    52
		mContacts.put(user, c);
124
4eaf1efcadda ca devrait etre bon pour la presence a la connection
nikita@nikita-rack
parents: 99
diff changeset
    53
	    }
69
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    54
	}
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    55
    }
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    56
80
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
    57
    /**
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
    58
     * {@inheritDoc}
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
    59
     */
69
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    60
    @Override
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    61
    public void createGroup(String groupname) throws RemoteException {
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    62
	mAdaptee.createGroup(groupname);
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    63
    }
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    64
80
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
    65
    /**
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
    66
     * {@inheritDoc}
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
    67
     */
69
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    68
    @Override
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    69
    public Contact addContact(String user, String name, String[] groups) throws RemoteException {
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    70
	try {
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    71
	    mAdaptee.createEntry(user, name, groups);
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    72
	    Contact res = new Contact(user);
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    73
	    mContacts.put(user, res);
191
cc21283865ad La liste marche, mais chut faut pas le dire a darkmouchefdeprojtyran
nikita@nikita-lab
parents: 184
diff changeset
    74
	    for (String group : groups) {
194
4f1b3af03671 debug de la contactlist avec reecriture d'une bonne grosse partie
nikita@nikita-lab
parents: 191
diff changeset
    75
		//mAdaptee.createGroup(group);
191
cc21283865ad La liste marche, mais chut faut pas le dire a darkmouchefdeprojtyran
nikita@nikita-lab
parents: 184
diff changeset
    76
		res.addGroup(group);
cc21283865ad La liste marche, mais chut faut pas le dire a darkmouchefdeprojtyran
nikita@nikita-lab
parents: 184
diff changeset
    77
	    }
69
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    78
	    return res;
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    79
	} catch (XMPPException e) {
94
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 80
diff changeset
    80
	    Log.e(TAG, "Error while adding new contact", e);
69
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    81
	    return null;
61
08cfba11099a Ajout du IBeemRosterListener
nikita@nikita-rack
parents: 58
diff changeset
    82
	}
207
dbc0c467c3e6 ajout de la gestion du resend de la subscription request
nikita@nikita-lab
parents: 194
diff changeset
    83
    }    
61
08cfba11099a Ajout du IBeemRosterListener
nikita@nikita-rack
parents: 58
diff changeset
    84
69
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    85
    /**
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    86
     * {@inheritDoc}
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    87
     */
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    88
    @Override
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    89
    public void deleteContact(Contact contact) throws RemoteException {
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    90
	mContacts.remove(contact.getJID());
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    91
    }
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    92
80
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
    93
    /**
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
    94
     * {@inheritDoc}
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
    95
     */
69
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    96
    @Override
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    97
    public void addConnectionListener(IBeemRosterListener listen) throws RemoteException {
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    98
	if (listen != null)
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
    99
	    mRemoteRosListeners.register(listen);
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   100
    }
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   101
80
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   102
    /**
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   103
     * {@inheritDoc}
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   104
     */
69
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   105
    @Override
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   106
    public void removeConnectionListener(IBeemRosterListener listen) throws RemoteException {
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   107
	if (listen != null)
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   108
	    mRemoteRosListeners.unregister(listen);
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   109
    }
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   110
80
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   111
    /**
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   112
     * {@inheritDoc}
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   113
     */
69
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   114
    @Override
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   115
    public Contact getContact(String jid) throws RemoteException {
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   116
	return mContacts.get(jid);
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   117
    }
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   118
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   119
    /**
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   120
     * {@inheritDoc}
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   121
     */
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   122
    @Override
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   123
    public List<Contact> getContactList() throws RemoteException {
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   124
	List<Contact> res = new ArrayList<Contact>();
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   125
	res.addAll(mContacts.values());
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   126
	return res;
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   127
    }
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   128
80
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   129
    /**
180
d77ea17eea3a ajout des groupes dans ContactAdapter.java
nikita@nikita-rack
parents: 157
diff changeset
   130
     * Listener for the roster events. It will call the remote listeners registered.
80
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   131
     * @author darisk
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   132
     */
69
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   133
    private class RosterListenerAdapter implements RosterListener {
61
08cfba11099a Ajout du IBeemRosterListener
nikita@nikita-rack
parents: 58
diff changeset
   134
80
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   135
	/**
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   136
	 * Constructor.
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   137
	 */
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   138
	public RosterListenerAdapter() {
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   139
	    // TODO Auto-generated constructor stub
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   140
	}
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   141
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   142
	/**
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   143
	 * {@inheritDoc}
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   144
	 */
61
08cfba11099a Ajout du IBeemRosterListener
nikita@nikita-rack
parents: 58
diff changeset
   145
	@Override
69
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   146
	public void entriesAdded(Collection<String> addresses) {
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   147
	    Log.i(TAG, "Ajout de l'entry");
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   148
	    final int n = mRemoteRosListeners.beginBroadcast();
58
ae9ca6ed9095 Add a listner for presence message in the RosterAdapter class
Da Risk <darisk972@gmail.com>
parents: 55
diff changeset
   149
69
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   150
	    List<String> tab = new ArrayList<String>();
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   151
	    for (int i = 0; i < n; i++) {
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   152
		IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i);
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   153
		try {
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   154
		    tab.addAll(addresses);
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   155
		    listener.onEntriesAdded(tab);
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   156
		} catch (RemoteException e) {
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   157
		    // The RemoteCallbackList will take care of removing the
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   158
		    // dead listeners.
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   159
		    Log.w(TAG, "Error while adding roster entries", e);
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   160
		}
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   161
	    }
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   162
	    mRemoteRosListeners.finishBroadcast();
61
08cfba11099a Ajout du IBeemRosterListener
nikita@nikita-rack
parents: 58
diff changeset
   163
	}
64
41ceca987a6c petit commit pour marseille
nikita@nikita-rack
parents: 63
diff changeset
   164
80
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   165
	/**
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   166
	 * {@inheritDoc}
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   167
	 */
61
08cfba11099a Ajout du IBeemRosterListener
nikita@nikita-rack
parents: 58
diff changeset
   168
	@Override
69
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   169
	public void entriesDeleted(Collection<String> addresses) {
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   170
	    Log.i(TAG, "Suppression de l'entry");
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   171
	    final int n = mRemoteRosListeners.beginBroadcast();
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   172
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   173
	    List<String> tab = new ArrayList<String>();
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   174
	    for (int i = 0; i < n; i++) {
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   175
		IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i);
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   176
		try {
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   177
		    tab.addAll(addresses);
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   178
		    listener.onEntriesDeleted(tab);
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   179
		} catch (RemoteException e) {
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   180
		    // The RemoteCallbackList will take care of removing the
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   181
		    // dead listeners.
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   182
		    Log.w(TAG, "Error while deleting roster entries", e);
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   183
		}
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   184
	    }
80
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   185
	    mRemoteRosListeners.finishBroadcast();
61
08cfba11099a Ajout du IBeemRosterListener
nikita@nikita-rack
parents: 58
diff changeset
   186
	}
08cfba11099a Ajout du IBeemRosterListener
nikita@nikita-rack
parents: 58
diff changeset
   187
80
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   188
	/**
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   189
	 * {@inheritDoc}
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   190
	 */
58
ae9ca6ed9095 Add a listner for presence message in the RosterAdapter class
Da Risk <darisk972@gmail.com>
parents: 55
diff changeset
   191
	@Override
69
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   192
	public void entriesUpdated(Collection<String> addresses) {
99
8de21ac527ce revert pour refaire un push propre
nikita@nikita-rack
parents: 98
diff changeset
   193
	    Log.d(TAG, "Update de l'entry");
69
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   194
	    final int n = mRemoteRosListeners.beginBroadcast();
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   195
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   196
	    List<String> tab = new ArrayList<String>();
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   197
	    for (int i = 0; i < n; i++) {
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   198
		IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i);
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   199
		try {
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   200
		    tab.addAll(addresses);
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   201
		    listener.onEntriesUpdated(tab);
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   202
		} catch (RemoteException e) {
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   203
		    // The RemoteCallbackList will take care of removing the
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   204
		    // dead listeners.
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   205
		    Log.w(TAG, "Error while updating roster entries", e);
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   206
		}
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   207
	    }
80
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   208
	    mRemoteRosListeners.finishBroadcast();
61
08cfba11099a Ajout du IBeemRosterListener
nikita@nikita-rack
parents: 58
diff changeset
   209
	}
08cfba11099a Ajout du IBeemRosterListener
nikita@nikita-rack
parents: 58
diff changeset
   210
80
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   211
	/**
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   212
	 * {@inheritDoc}
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   213
	 */
69
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   214
	@Override
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   215
	public void presenceChanged(Presence presence) {
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   216
	    Log.i(TAG, "Changement de Presence");
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   217
	    /* gestion du roster coter sedirvice */
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   218
	    String user = StringUtils.parseBareAddress(presence.getFrom());
80
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   219
	    Log.d(TAG, "User : " + user);
69
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   220
	    Contact c = mContacts.get(StringUtils.parseBareAddress(user));
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   221
	    if (c == null) {
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   222
		c = new Contact(user);
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   223
		mContacts.put(user, c);
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   224
	    }
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   225
	    c.addRes(StringUtils.parseResource(presence.getFrom()));
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   226
	    c.setStatus(mAdaptee.getPresence(presence.getFrom()));
184
e9d73490be9b Ajout du message d'etat dans la contact list
marseille
parents: 181
diff changeset
   227
	    c.setMsgState(presence.getStatus());
69
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   228
	    /* redispatch vers les IBeemRosterListener */
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   229
	    final int n = mRemoteRosListeners.beginBroadcast();
61
08cfba11099a Ajout du IBeemRosterListener
nikita@nikita-rack
parents: 58
diff changeset
   230
69
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   231
	    for (int i = 0; i < n; i++) {
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   232
		IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i);
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   233
		try {
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   234
		    listener.onPresenceChanged(new PresenceAdapter(presence));
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   235
		} catch (RemoteException e) {
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   236
		    // The RemoteCallbackList will take care of removing the
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   237
		    // dead listeners.
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   238
		    Log.w(TAG, "Error while updating roster entries", e);
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   239
		}
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   240
	    }
80
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 69
diff changeset
   241
	    mRemoteRosListeners.finishBroadcast();
69
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   242
	}
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   243
    }
58
ae9ca6ed9095 Add a listner for presence message in the RosterAdapter class
Da Risk <darisk972@gmail.com>
parents: 55
diff changeset
   244
69
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   245
    /**
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   246
     * {@inheritDoc}
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   247
     */
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   248
    @Override
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   249
    public List<String> getGroupsNames() throws RemoteException {
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   250
	Collection<RosterGroup> groups = mAdaptee.getGroups();
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   251
	ArrayList<String> result = new ArrayList<String>(groups.size());
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   252
	for (RosterGroup rosterGroup : groups) {
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   253
	    result.add(rosterGroup.getName());
58
ae9ca6ed9095 Add a listner for presence message in the RosterAdapter class
Da Risk <darisk972@gmail.com>
parents: 55
diff changeset
   254
	}
69
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   255
	return result;
cc06de2dfff0 test de merge et petit commit
nikita@nikita-rack
parents: 65
diff changeset
   256
    }
51
85705bdb77ab Ajout d'une methode pour recuperer les groups du roster
Da Risk <darisk972@gmail.com>
parents: 38
diff changeset
   257
30
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents:
diff changeset
   258
}