src/com/beem/project/beem/service/XmppConnectionAdapter.java
author Vincent Veronis <veroni_v@epitech.net>
Thu, 24 Sep 2009 23:54:11 +0200
changeset 381 166db9c93335
parent 380 9416b5711edd
child 396 1a8a0d152c28
permissions -rw-r--r--
Bundle pour debug avec nikita.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
     1
package com.beem.project.beem.service;
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
     2
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
     3
import org.jivesoftware.smack.ConnectionConfiguration;
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
     4
import org.jivesoftware.smack.ConnectionListener;
375
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
     5
import org.jivesoftware.smack.PacketListener;
262
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
     6
import org.jivesoftware.smack.PrivacyListManager;
38
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
     7
import org.jivesoftware.smack.Roster;
29
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
     8
import org.jivesoftware.smack.XMPPConnection;
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
     9
import org.jivesoftware.smack.XMPPException;
377
5f60caa9f85c deplacement de l'eventListener cote service
Nikita Kozlov <nikita@beem-project.com>
parents: 376
diff changeset
    10
import org.jivesoftware.smack.filter.PacketFilter;
375
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
    11
import org.jivesoftware.smack.packet.Packet;
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
    12
import org.jivesoftware.smack.packet.Presence;
123
2c4be059fc8b debug du discovery
nikita@nikita-rack
parents: 118
diff changeset
    13
import org.jivesoftware.smackx.ChatStateManager;
35
8006e9ee734e ajout d'une fonction de SeviceDiscovery
nikita@nikita-rack
parents: 31
diff changeset
    14
import org.jivesoftware.smackx.ServiceDiscoveryManager;
8006e9ee734e ajout d'une fonction de SeviceDiscovery
nikita@nikita-rack
parents: 31
diff changeset
    15
import org.jivesoftware.smackx.jingle.JingleManager;
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
    16
375
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
    17
import android.app.Notification;
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
    18
import android.app.PendingIntent;
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
    19
import android.content.Intent;
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
    20
import android.os.RemoteCallbackList;
30
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
    21
import android.os.RemoteException;
38
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
    22
import android.util.Log;
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
    23
118
8bbe46055004 fix some bugs. When you receive a new chat, a notification appears.
Da Risk <darisk972@gmail.com>
parents: 99
diff changeset
    24
import com.beem.project.beem.BeemService;
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
    25
import com.beem.project.beem.service.aidl.IBeemConnectionListener;
57
c91278dda166 La facade et la connexion permette de recuperer une instance de ChatManager
Da Risk <darisk972@gmail.com>
parents: 55
diff changeset
    26
import com.beem.project.beem.service.aidl.IChatManager;
30
7057a9d3657a Add some adapter for smack classes
Da Risk <darisk972@gmail.com>
parents: 29
diff changeset
    27
import com.beem.project.beem.service.aidl.IRoster;
55
66732dd2cb77 Add an interface for sending im message.
Da Risk <darisk972@gmail.com>
parents: 38
diff changeset
    28
import com.beem.project.beem.service.aidl.IXmppConnection;
375
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
    29
import com.beem.project.beem.ui.Subscription;
29
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    30
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    31
/**
38
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
    32
 * This class implements an adapter for XMPPConnection.
29
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    33
 * @author darisk
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    34
 */
67
8c3870db8e31 Rename some XMPP* classes in Xmpp*
Da Risk <darisk972@gmail.com>
parents: 57
diff changeset
    35
public class XmppConnectionAdapter extends IXmppConnection.Stub {
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
    36
262
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    37
    private static final String TAG = "XMPPConnectionAdapter";
380
9416b5711edd petit commit pour bundle
Nikita Kozlov <nikita@beem-project.com>
parents: 377
diff changeset
    38
    public static final String BEEM_CONNECTION_CLOSED = "BeemConnectionClosed";
262
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    39
    private XMPPConnection mAdaptee;
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    40
    private IChatManager mChatManager;
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    41
    private String mLogin;
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    42
    private String mPassword;
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    43
    private RosterAdapter mRoster;
269
d78115a6b45b Feature #183
nikita@localhost
parents: 262
diff changeset
    44
    private PrivacyListManagerAdapter mPrivacyList;
262
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    45
    private BeemService mService;
375
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
    46
    private RemoteCallbackList<IBeemConnectionListener> mRemoteConnListeners =
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
    47
	new RemoteCallbackList<IBeemConnectionListener>();
262
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    48
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    49
    private ConnexionListenerAdapter mConListener = new ConnexionListenerAdapter();
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    50
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    51
    /**
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    52
     * Constructor.
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    53
     * @param config Configuration to use in order to connect
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    54
     * @param login login to use on connect
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    55
     * @param password password to use on connect
369
952c6eeb6493 Gestion des resources dans la contactList
Da Risk <darisk972@gmail.com>
parents: 290
diff changeset
    56
     * @param service the background service associated with the connection.
262
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    57
     */
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    58
    public XmppConnectionAdapter(final ConnectionConfiguration config, final String login, final String password,
375
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
    59
	final BeemService service) {
262
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    60
	this(new XMPPConnection(config), login, password, service);
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    61
    }
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    62
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    63
    /**
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    64
     * Constructor.
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    65
     * @param serviceName name of the service to connect to
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    66
     * @param login login to use on connect
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    67
     * @param password password to use on connect
369
952c6eeb6493 Gestion des resources dans la contactList
Da Risk <darisk972@gmail.com>
parents: 290
diff changeset
    68
     * @param service the background service associated with the connection.
262
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    69
     */
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    70
    public XmppConnectionAdapter(final String serviceName, final String login, final String password,
375
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
    71
	final BeemService service) {
262
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    72
	this(new XMPPConnection(serviceName), login, password, service);
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    73
    }
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    74
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    75
    /**
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    76
     * Constructor.
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    77
     * @param con The connection to adapt
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    78
     * @param login The login to use
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    79
     * @param password The password to use
369
952c6eeb6493 Gestion des resources dans la contactList
Da Risk <darisk972@gmail.com>
parents: 290
diff changeset
    80
     * @param service the background service associated with the connection.
262
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    81
     */
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    82
    public XmppConnectionAdapter(final XMPPConnection con, final String login, final String password,
375
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
    83
	final BeemService service) {
262
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    84
	mAdaptee = con;
290
nikita@localhost
parents: 283
diff changeset
    85
	PrivacyListManager.getInstanceFor(mAdaptee);
262
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    86
	mLogin = login;
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    87
	mPassword = password;
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    88
	mService = service;
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    89
    }
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    90
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    91
    /**
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    92
     * {@inheritDoc}
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    93
     */
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    94
    @Override
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    95
    public void addConnectionListener(IBeemConnectionListener listen) throws RemoteException {
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    96
	if (listen != null)
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    97
	    mRemoteConnListeners.register(listen);
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    98
    }
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
    99
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   100
    /**
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   101
     * {@inheritDoc}
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   102
     */
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   103
    @Override
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   104
    public final void connectAsync() throws RemoteException {
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   105
	Thread t = new Thread(new Runnable() {
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   106
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   107
	    @Override
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   108
	    public void run() {
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   109
		try {
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   110
		    connectSync();
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   111
		} catch (RemoteException e) {
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   112
		    Log.e(TAG, "Error while connecting", e);
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   113
		}
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   114
	    }
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   115
	});
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   116
	t.start();
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   117
    }
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   118
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   119
    /**
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   120
     * {@inheritDoc}
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   121
     */
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   122
    @Override
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   123
    public boolean connectSync() throws RemoteException {
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   124
	try {
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   125
	    mAdaptee.connect();
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   126
	    mAdaptee.addConnectionListener(mConListener);
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   127
	    mAdaptee.login(mLogin, mPassword, "BEEM");
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   128
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   129
	    mChatManager = new BeemChatManager(mAdaptee.getChatManager(), mService);
269
d78115a6b45b Feature #183
nikita@localhost
parents: 262
diff changeset
   130
	    mPrivacyList = new PrivacyListManagerAdapter(mAdaptee);
d78115a6b45b Feature #183
nikita@localhost
parents: 262
diff changeset
   131
262
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   132
	    this.initFeatures(); // pour declarer les features xmpp qu'on supporte
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   133
	    ChatStateManager.getInstance(mAdaptee);
269
d78115a6b45b Feature #183
nikita@localhost
parents: 262
diff changeset
   134
262
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   135
	    triggerAsynchronousConnectEvent();
369
952c6eeb6493 Gestion des resources dans la contactList
Da Risk <darisk972@gmail.com>
parents: 290
diff changeset
   136
	    //Priority between -128 and 128
952c6eeb6493 Gestion des resources dans la contactList
Da Risk <darisk972@gmail.com>
parents: 290
diff changeset
   137
	    Presence p = new Presence(Presence.Type.available, "Beem : http://www.beem-project.com",
952c6eeb6493 Gestion des resources dans la contactList
Da Risk <darisk972@gmail.com>
parents: 290
diff changeset
   138
		    128, Presence.Mode.available);
952c6eeb6493 Gestion des resources dans la contactList
Da Risk <darisk972@gmail.com>
parents: 290
diff changeset
   139
	    mAdaptee.sendPacket(p);
262
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   140
	    return true;
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   141
	} catch (XMPPException e) {
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   142
	    Log.e(TAG, "Error while connecting", e);
283
ecd2cb5f618e Pfiou ...
Marseille
parents: 282
diff changeset
   143
	    if (e.getXMPPError() != null && e.getXMPPError().getMessage() != null)
282
ee754b3043a8 Suppression beemapplication + modif connection
Marseille
parents: 272
diff changeset
   144
		mConListener.connectionFailed(e.getXMPPError().getMessage());
ee754b3043a8 Suppression beemapplication + modif connection
Marseille
parents: 272
diff changeset
   145
	    else
ee754b3043a8 Suppression beemapplication + modif connection
Marseille
parents: 272
diff changeset
   146
		mConListener.connectionFailed("Error On Connection");
262
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   147
	}
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   148
	return false;
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   149
    }
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   150
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   151
    /**
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   152
     * {@inheritDoc}
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   153
     */
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   154
    @Override
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   155
    public boolean disconnect() {
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   156
	if (mAdaptee != null && mAdaptee.isConnected())
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   157
	    mAdaptee.disconnect();
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   158
	return true;
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   159
    }
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   160
369
952c6eeb6493 Gestion des resources dans la contactList
Da Risk <darisk972@gmail.com>
parents: 290
diff changeset
   161
    /**
952c6eeb6493 Gestion des resources dans la contactList
Da Risk <darisk972@gmail.com>
parents: 290
diff changeset
   162
     * Get the Smack XmppConnection.
952c6eeb6493 Gestion des resources dans la contactList
Da Risk <darisk972@gmail.com>
parents: 290
diff changeset
   163
     * @return Smack XmppConnection
952c6eeb6493 Gestion des resources dans la contactList
Da Risk <darisk972@gmail.com>
parents: 290
diff changeset
   164
     */
262
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   165
    public XMPPConnection getAdaptee() {
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   166
	return mAdaptee;
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   167
    }
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   168
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   169
    /**
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   170
     * {@inheritDoc}
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   171
     */
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   172
    @Override
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   173
    public IChatManager getChatManager() throws RemoteException {
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   174
	return mChatManager;
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   175
    }
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   176
369
952c6eeb6493 Gestion des resources dans la contactList
Da Risk <darisk972@gmail.com>
parents: 290
diff changeset
   177
    /**
952c6eeb6493 Gestion des resources dans la contactList
Da Risk <darisk972@gmail.com>
parents: 290
diff changeset
   178
     * Get the context of the adapter.
952c6eeb6493 Gestion des resources dans la contactList
Da Risk <darisk972@gmail.com>
parents: 290
diff changeset
   179
     * @return The context of the adapter
952c6eeb6493 Gestion des resources dans la contactList
Da Risk <darisk972@gmail.com>
parents: 290
diff changeset
   180
     */
262
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   181
    public BeemService getContext() {
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   182
	return mService;
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   183
    }
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   184
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   185
    /**
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   186
     * {@inheritDoc}
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   187
     */
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   188
    @Override
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   189
    public IRoster getRoster() throws RemoteException {
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   190
	if (mRoster != null)
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   191
	    return mRoster;
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   192
	Roster adap = mAdaptee.getRoster();
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   193
	if (adap == null)
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   194
	    return null;
282
ee754b3043a8 Suppression beemapplication + modif connection
Marseille
parents: 272
diff changeset
   195
	mRoster = new RosterAdapter(adap);
262
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   196
	return mRoster;
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   197
    }
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   198
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   199
    /**
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   200
     * enregistre les features dispo dans notre version Liste de features que Telepathy supporte.
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   201
     */
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   202
    private void initFeatures() {
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   203
	ServiceDiscoveryManager sdm = ServiceDiscoveryManager.getInstanceFor(mAdaptee);
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   204
	if (sdm == null)
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   205
	    sdm = new ServiceDiscoveryManager(mAdaptee);
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   206
	sdm.addFeature("http://jabber.org/protocol/disco#info");
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   207
	JingleManager.setJingleServiceEnabled();
290
nikita@localhost
parents: 283
diff changeset
   208
	sdm.addFeature("jabber:iq:privacy");
262
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   209
    }
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   210
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   211
    /**
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   212
     * Returns true if currently authenticated by successfully calling the login method.
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   213
     * @return true when successfully authenticated
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   214
     */
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   215
    public boolean isAuthentificated() {
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   216
	return mAdaptee.isAuthenticated();
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   217
    }
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   218
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   219
    /**
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   220
     * {@inheritDoc}
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   221
     */
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   222
    @Override
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   223
    public void removeConnectionListener(IBeemConnectionListener listen) throws RemoteException {
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   224
	if (listen != null)
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   225
	    mRemoteConnListeners.unregister(listen);
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   226
    }
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   227
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   228
    /**
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   229
     * Trigger Connection event.
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   230
     */
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   231
    private void triggerAsynchronousConnectEvent() {
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   232
	mConListener.onConnect();
0548b407992a debut de la gestion de la PrivacyList
nikita@localhost
parents: 261 258
diff changeset
   233
    }
282
ee754b3043a8 Suppression beemapplication + modif connection
Marseille
parents: 272
diff changeset
   234
68
0c76c67a2b99 Merge avec Nikita
Da Risk <darisk972@gmail.com>
parents: 65 67
diff changeset
   235
    /**
369
952c6eeb6493 Gestion des resources dans la contactList
Da Risk <darisk972@gmail.com>
parents: 290
diff changeset
   236
     * Set the privacy list to use.
269
d78115a6b45b Feature #183
nikita@localhost
parents: 262
diff changeset
   237
     * @param mPrivacyList the mPrivacyList to set
d78115a6b45b Feature #183
nikita@localhost
parents: 262
diff changeset
   238
     */
371
f2c9564a3cc7 Checkstyle
Da Risk <darisk972@gmail.com>
parents: 370
diff changeset
   239
    public void setPrivacyList(PrivacyListManagerAdapter PrivacyList) {
f2c9564a3cc7 Checkstyle
Da Risk <darisk972@gmail.com>
parents: 370
diff changeset
   240
	this.mPrivacyList = PrivacyList;
269
d78115a6b45b Feature #183
nikita@localhost
parents: 262
diff changeset
   241
    }
d78115a6b45b Feature #183
nikita@localhost
parents: 262
diff changeset
   242
d78115a6b45b Feature #183
nikita@localhost
parents: 262
diff changeset
   243
    /**
369
952c6eeb6493 Gestion des resources dans la contactList
Da Risk <darisk972@gmail.com>
parents: 290
diff changeset
   244
     * Get the privacy list in use.
269
d78115a6b45b Feature #183
nikita@localhost
parents: 262
diff changeset
   245
     * @return the mPrivacyList
d78115a6b45b Feature #183
nikita@localhost
parents: 262
diff changeset
   246
     */
d78115a6b45b Feature #183
nikita@localhost
parents: 262
diff changeset
   247
    public PrivacyListManagerAdapter getPrivacyList() {
d78115a6b45b Feature #183
nikita@localhost
parents: 262
diff changeset
   248
	return mPrivacyList;
d78115a6b45b Feature #183
nikita@localhost
parents: 262
diff changeset
   249
    }
282
ee754b3043a8 Suppression beemapplication + modif connection
Marseille
parents: 272
diff changeset
   250
269
d78115a6b45b Feature #183
nikita@localhost
parents: 262
diff changeset
   251
    /**
68
0c76c67a2b99 Merge avec Nikita
Da Risk <darisk972@gmail.com>
parents: 65 67
diff changeset
   252
     * Listener for XMPP connection events. It will calls the remote listeners for connexion events.
38
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   253
     * @author darisk
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   254
     */
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   255
    private class ConnexionListenerAdapter implements ConnectionListener {
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   256
380
9416b5711edd petit commit pour bundle
Nikita Kozlov <nikita@beem-project.com>
parents: 377
diff changeset
   257
	
9416b5711edd petit commit pour bundle
Nikita Kozlov <nikita@beem-project.com>
parents: 377
diff changeset
   258
38
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   259
	/**
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   260
	 * Defaut constructor.
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   261
	 */
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   262
	public ConnexionListenerAdapter() {
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   263
	}
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   264
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   265
	/**
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   266
	 * {@inheritDoc}
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   267
	 */
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   268
	@Override
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   269
	public void connectionClosed() {
76
144e837ee4a6 fix some synchronisation problem with the server
Da Risk <darisk972@gmail.com>
parents: 68
diff changeset
   270
	    mRoster = null;
269
d78115a6b45b Feature #183
nikita@localhost
parents: 262
diff changeset
   271
38
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   272
	    final int n = mRemoteConnListeners.beginBroadcast();
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   273
38
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   274
	    for (int i = 0; i < n; i++) {
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   275
		IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   276
		try {
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 262
diff changeset
   277
		    if (listener != null)
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 262
diff changeset
   278
			listener.connectionClosed();
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   279
		} catch (RemoteException e) {
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   280
		    // The RemoteCallbackList will take care of removing the
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   281
		    // dead listeners.
38
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   282
		    Log.w(TAG, "Error while triggering remote connection listeners", e);
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   283
		}
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   284
	    }
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   285
	    mRemoteConnListeners.finishBroadcast();
380
9416b5711edd petit commit pour bundle
Nikita Kozlov <nikita@beem-project.com>
parents: 377
diff changeset
   286
	    Intent closedIntent = new Intent(BEEM_CONNECTION_CLOSED);
9416b5711edd petit commit pour bundle
Nikita Kozlov <nikita@beem-project.com>
parents: 377
diff changeset
   287
	    mService.sendBroadcast(closedIntent);
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   288
	}
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   289
38
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   290
	/**
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   291
	 * {@inheritDoc}
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   292
	 */
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   293
	@Override
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   294
	public void connectionClosedOnError(Exception arg0) {
76
144e837ee4a6 fix some synchronisation problem with the server
Da Risk <darisk972@gmail.com>
parents: 68
diff changeset
   295
	    mRoster = null;
38
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   296
	    final int n = mRemoteConnListeners.beginBroadcast();
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   297
38
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   298
	    for (int i = 0; i < n; i++) {
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   299
		IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   300
		try {
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 262
diff changeset
   301
		    if (listener != null)
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 262
diff changeset
   302
			listener.connectionClosedOnError();
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   303
		} catch (RemoteException e) {
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   304
		    // The RemoteCallbackList will take care of removing the
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   305
		    // dead listeners.
38
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   306
		    Log.w(TAG, "Error while triggering remote connection listeners", e);
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   307
		}
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   308
	    }
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   309
	    mRemoteConnListeners.finishBroadcast();
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   310
	}
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   311
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   312
	public void connectionFailed(String errorMsg) {
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   313
	    Log.i(TAG, "Connection Failed");
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   314
	    final int n = mRemoteConnListeners.beginBroadcast();
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   315
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   316
	    for (int i = 0; i < n; i++) {
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   317
		IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   318
		try {
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 262
diff changeset
   319
		    if (listener != null)
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 262
diff changeset
   320
			listener.connectionFailed(errorMsg);
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   321
		} catch (RemoteException e) {
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   322
		    // The RemoteCallbackList will take care of removing the
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   323
		    // dead listeners.
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   324
		    Log.w(TAG, "Error while triggering remote connection listeners", e);
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   325
		}
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   326
	    }
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   327
	    mRemoteConnListeners.finishBroadcast();
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   328
	}
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   329
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   330
	/**
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   331
	 * Method to execute when a connection event occurs.
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   332
	 */
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   333
	public void onConnect() {
375
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   334
	    PacketFilter filter = new PacketFilter() {
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   335
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   336
		@Override
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   337
		public boolean accept(Packet packet) {
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   338
		    if (packet instanceof Presence) {
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   339
			Presence pres = (Presence) packet;
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   340
			if (pres.getType() == Presence.Type.subscribe)
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   341
			    return true;
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   342
		    }
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   343
		    return false;
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   344
		}
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   345
	    };
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   346
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   347
	    mAdaptee.addPacketListener(new PacketListener() {
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   348
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   349
		@Override
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   350
		public void processPacket(Packet packet) {
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   351
		    String from = packet.getFrom();
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   352
		    Notification notif = new Notification(com.beem.project.beem.R.drawable.signal,
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   353
			"Demande d'ajout", System.currentTimeMillis());
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   354
		    notif.defaults = Notification.DEFAULT_ALL;
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   355
		    notif.flags = Notification.FLAG_AUTO_CANCEL;
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   356
		    Intent intent = new Intent(mService, Subscription.class);
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   357
		    intent.putExtra("from", from);
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   358
		    notif.setLatestEventInfo(mService, from, "demande d'ajout de " + from,
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   359
			PendingIntent.getActivity(mService, 0, intent, PendingIntent.FLAG_ONE_SHOT));
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   360
		    int id = packet.hashCode();
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   361
		    mService.sendNotification(id, notif);
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   362
		}
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   363
	    }, filter);
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   364
377
5f60caa9f85c deplacement de l'eventListener cote service
Nikita Kozlov <nikita@beem-project.com>
parents: 376
diff changeset
   365
	    mService.resetStatus();
381
166db9c93335 Bundle pour debug avec nikita.
Vincent Veronis <veroni_v@epitech.net>
parents: 380
diff changeset
   366
	    mService.initJingle(mAdaptee);
375
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   367
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   368
	    final int n = mRemoteConnListeners.beginBroadcast();
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   369
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   370
	    for (int i = 0; i < n; i++) {
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   371
		IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   372
		try {
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 262
diff changeset
   373
		    if (listener != null)
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 262
diff changeset
   374
			listener.onConnect();
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   375
		} catch (RemoteException e) {
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   376
		    // The RemoteCallbackList will take care of removing the
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   377
		    // dead listeners.
371
f2c9564a3cc7 Checkstyle
Da Risk <darisk972@gmail.com>
parents: 370
diff changeset
   378
		    Log.w(TAG, "Error while triggering remote connection listeners", e);
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   379
		}
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   380
	    }
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   381
	    mRemoteConnListeners.finishBroadcast();
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   382
	}
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   383
38
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   384
	/**
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   385
	 * {@inheritDoc}
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   386
	 */
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   387
	@Override
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   388
	public void reconnectingIn(int arg0) {
38
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   389
	    final int n = mRemoteConnListeners.beginBroadcast();
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   390
38
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   391
	    for (int i = 0; i < n; i++) {
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   392
		IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   393
		try {
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 262
diff changeset
   394
		    if (listener != null)
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 262
diff changeset
   395
			listener.reconnectingIn(arg0);
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   396
		} catch (RemoteException e) {
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   397
		    // The RemoteCallbackList will take care of removing the
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   398
		    // dead listeners.
80
29f0d6a23321 Le proxy devrait marcher a peu pres.
Da Risk <darisk972@gmail.com>
parents: 76
diff changeset
   399
		    Log.w(TAG, "Error while triggering remote connection listeners", e);
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   400
		}
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   401
	    }
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   402
	    mRemoteConnListeners.finishBroadcast();
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   403
	}
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   404
38
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   405
	/**
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   406
	 * {@inheritDoc}
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   407
	 */
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   408
	@Override
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   409
	public void reconnectionFailed(Exception arg0) {
38
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   410
	    final int r = mRemoteConnListeners.beginBroadcast();
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   411
38
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   412
	    for (int i = 0; i < r; i++) {
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   413
		IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   414
		try {
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 262
diff changeset
   415
		    if (listener != null)
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 262
diff changeset
   416
			listener.reconnectionFailed();
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   417
		} catch (RemoteException e) {
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   418
		    // The RemoteCallbackList will take care of removing the
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   419
		    // dead listeners.
38
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   420
		    Log.w(TAG, "Error while triggering remote connection listeners", e);
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   421
		}
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   422
	    }
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   423
	    mRemoteConnListeners.finishBroadcast();
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   424
	}
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   425
38
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   426
	/**
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   427
	 * {@inheritDoc}
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   428
	 */
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   429
	@Override
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   430
	public void reconnectionSuccessful() {
375
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   431
	    PacketFilter filter = new PacketFilter() {
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   432
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   433
		@Override
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   434
		public boolean accept(Packet packet) {
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   435
		    if (packet instanceof Presence) {
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   436
			Presence pres = (Presence) packet;
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   437
			if (pres.getType() == Presence.Type.subscribe)
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   438
			    return true;
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   439
		    }
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   440
		    return false;
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   441
		}
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   442
	    };
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   443
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   444
	    mAdaptee.addPacketListener(new PacketListener() {
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   445
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   446
		@Override
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   447
		public void processPacket(Packet packet) {
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   448
		    String from = packet.getFrom();
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   449
		    Notification notif = new Notification(com.beem.project.beem.R.drawable.signal,
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   450
			"Demande d'ajout", System.currentTimeMillis());
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   451
		    notif.defaults = Notification.DEFAULT_ALL;
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   452
		    notif.flags = Notification.FLAG_AUTO_CANCEL;
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   453
		    Intent intent = new Intent(mService, Subscription.class);
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   454
		    intent.putExtra("from", from);
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   455
		    notif.setLatestEventInfo(mService, from, "demande d'ajout de " + from,
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   456
			PendingIntent.getActivity(mService, 0, intent, PendingIntent.FLAG_ONE_SHOT));
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   457
		    int id = packet.hashCode();
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   458
		    mService.sendNotification(id, notif);
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   459
		}
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   460
	    }, filter);
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   461
Nikita Kozlov <nikita@beem-project.com>
parents: 360
diff changeset
   462
38
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   463
	    final int n = mRemoteConnListeners.beginBroadcast();
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   464
38
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   465
	    for (int i = 0; i < n; i++) {
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   466
		IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   467
		try {
263
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 262
diff changeset
   468
		    if (listener != null)
ff0b4790a5ed La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents: 262
diff changeset
   469
			listener.reconnectionSuccessful();
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   470
		} catch (RemoteException e) {
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   471
		    // The RemoteCallbackList will take care of removing the
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   472
		    // dead listeners.
38
3e76846c48a9 We can now get the contact list of the user.
Da Risk <darisk972@gmail.com>
parents: 36
diff changeset
   473
		    Log.w(TAG, "Error while triggering remote connection listeners", e);
31
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   474
		}
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   475
	    }
85faac00d92c Asynchronous service almost perfect.
Da Risk <darisk972@gmail.com>
parents: 30
diff changeset
   476
	    mRemoteConnListeners.finishBroadcast();
35
8006e9ee734e ajout d'une fonction de SeviceDiscovery
nikita@nikita-rack
parents: 31
diff changeset
   477
	}
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   478
    }
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
   479
29
a49d1556772c Starting work on the Service interface.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
   480
}