38 President of Epitech. |
38 President of Epitech. |
39 |
39 |
40 Flavien Astraud, November 26, 2009 |
40 Flavien Astraud, November 26, 2009 |
41 Head of the EIP Laboratory. |
41 Head of the EIP Laboratory. |
42 |
42 |
43 */ |
43 */ |
44 package com.beem.project.beem.service; |
44 package com.beem.project.beem.service; |
45 |
45 |
46 import java.util.Collections; |
46 import java.util.Collections; |
47 import java.util.LinkedList; |
47 import java.util.LinkedList; |
48 import java.util.List; |
48 import java.util.List; |
107 public void sendMessage(com.beem.project.beem.service.Message message) throws RemoteException { |
107 public void sendMessage(com.beem.project.beem.service.Message message) throws RemoteException { |
108 org.jivesoftware.smack.packet.Message send = new org.jivesoftware.smack.packet.Message(); |
108 org.jivesoftware.smack.packet.Message send = new org.jivesoftware.smack.packet.Message(); |
109 String msgBody = message.getBody(); |
109 String msgBody = message.getBody(); |
110 send.setTo(message.getTo()); |
110 send.setTo(message.getTo()); |
111 Log.w(TAG, "message to " + message.getTo()); |
111 Log.w(TAG, "message to " + message.getTo()); |
112 |
112 |
113 if (mOtrSessionId != null) { |
113 if (mOtrSessionId != null) { |
114 String body; |
114 String body; |
115 try { |
115 try { |
116 body = BeemOtrManager.getOtrManager().transformSending(mOtrSessionId, msgBody); |
116 body = BeemOtrManager.getInstance().getOtrManager().transformSending(mOtrSessionId, msgBody); |
117 msgBody = body; |
117 msgBody = body; |
118 } catch (OtrException e) { |
118 } catch (OtrException e) { |
119 e.printStackTrace(); |
119 e.printStackTrace(); |
120 } |
120 } |
121 } |
121 } |
122 |
122 |
123 send.setBody(msgBody); |
123 send.setBody(msgBody); |
124 send.setThread(message.getThread()); |
124 send.setThread(message.getThread()); |
125 send.setSubject(message.getSubject()); |
125 send.setSubject(message.getSubject()); |
126 send.setType(org.jivesoftware.smack.packet.Message.Type.chat); |
126 send.setType(org.jivesoftware.smack.packet.Message.Type.chat); |
127 // TODO gerer les messages contenant des XMPPError |
127 // TODO gerer les messages contenant des XMPPError |
132 } catch (XMPPException e) { |
132 } catch (XMPPException e) { |
133 // TODO Auto-generated catch block |
133 // TODO Auto-generated catch block |
134 e.printStackTrace(); |
134 e.printStackTrace(); |
135 } |
135 } |
136 } |
136 } |
137 |
137 |
138 public void sendMessage(String msg) { |
138 public void sendMessage(String msg) { |
139 Message msgToSend = new Message(mParticipant.getJIDWithRes(), Message.MSG_TYPE_CHAT); |
139 Message msgToSend = new Message(mParticipant.getJIDWithRes(), Message.MSG_TYPE_CHAT); |
140 msgToSend.setBody(msg); |
140 msgToSend.setBody(msg); |
141 try { |
141 try { |
142 sendMessage(msgToSend); |
142 sendMessage(msgToSend); |
143 } catch (RemoteException e) { |
143 } catch (RemoteException e) { |
144 e.printStackTrace(); |
144 e.printStackTrace(); |
145 } |
145 } |
146 } |
146 } |
147 |
147 |
148 /** |
148 /** |
149 * {@inheritDoc} |
149 * {@inheritDoc} |
150 */ |
150 */ |
233 |
233 |
234 @Override |
234 @Override |
235 public void processMessage(Chat chat, org.jivesoftware.smack.packet.Message message) { |
235 public void processMessage(Chat chat, org.jivesoftware.smack.packet.Message message) { |
236 Message msg = new Message(message); |
236 Message msg = new Message(message); |
237 Log.d(TAG, "new msg " + msg.getBody()); |
237 Log.d(TAG, "new msg " + msg.getBody()); |
238 |
238 |
239 if (mOtrSessionId != null) { |
239 if (mOtrSessionId != null) { |
240 String body; |
240 String body; |
241 try { |
241 try { |
242 body = BeemOtrManager.getOtrManager().transformReceiving(mOtrSessionId, msg.getBody()); |
242 body = BeemOtrManager.getInstance().getOtrManager().transformReceiving(mOtrSessionId, msg.getBody()); |
243 msg.setBody(body); |
243 msg.setBody(body); |
244 } catch (OtrException e) { |
244 } catch (OtrException e) { |
245 e.printStackTrace(); |
245 e.printStackTrace(); |
246 } |
246 } |
247 } |
247 } |
248 |
248 |
249 //TODO add que les message pas de type errors |
249 //TODO add que les message pas de type errors |
250 ChatAdapter.this.addMessage(msg); |
250 ChatAdapter.this.addMessage(msg); |
251 final int n = mRemoteListeners.beginBroadcast(); |
251 final int n = mRemoteListeners.beginBroadcast(); |
252 for (int i = 0; i < n; i++) { |
252 for (int i = 0; i < n; i++) { |
253 IMessageListener listener = mRemoteListeners.getBroadcastItem(i); |
253 IMessageListener listener = mRemoteListeners.getBroadcastItem(i); |
277 Log.w(TAG, e.getMessage()); |
277 Log.w(TAG, e.getMessage()); |
278 } |
278 } |
279 } |
279 } |
280 mRemoteListeners.finishBroadcast(); |
280 mRemoteListeners.finishBroadcast(); |
281 } |
281 } |
282 |
282 |
283 /** |
283 /** |
284 * This method is executed when the otr session status change. |
284 * This method is executed when the otr session status change. |
285 * @param otrState the new state of otr session. |
285 * @param otrState the new state of otr session. |
286 */ |
286 */ |
287 void otrStateChanged(final String otrState) { |
287 void otrStateChanged(final String otrState) { |
297 } |
297 } |
298 mRemoteListeners.finishBroadcast(); |
298 mRemoteListeners.finishBroadcast(); |
299 } |
299 } |
300 } |
300 } |
301 |
301 |
302 @Override |
302 @Override |
303 public void startOtrSession() throws RemoteException { |
303 public void startOtrSession() throws RemoteException { |
304 if (mOtrSessionId != null) |
304 if (mOtrSessionId != null) |
305 return ; |
305 return ; |
306 |
306 |
307 mOtrSessionId = new SessionID(mParticipant.getJIDWithRes(), mParticipant.getJID(), PROTOCOL); |
307 mOtrSessionId = new SessionID(mParticipant.getJIDWithRes(), mParticipant.getJID(), PROTOCOL); |
308 try { |
308 try { |
309 BeemOtrManager.addChat(mOtrSessionId, this); |
309 BeemOtrManager.getInstance().addChat(mOtrSessionId, this); |
310 BeemOtrManager.getOtrManager().startSession(mOtrSessionId); |
310 BeemOtrManager.getInstance().getOtrManager().startSession(mOtrSessionId); |
311 } catch (OtrException e) { |
311 } catch (OtrException e) { |
312 e.printStackTrace(); |
312 mOtrSessionId = null; |
313 throw new RemoteException(); |
313 e.printStackTrace(); |
314 } |
314 throw new RemoteException(); |
315 } |
315 } |
316 |
316 } |
317 @Override |
317 |
318 public void endOtrSession() throws RemoteException { |
318 @Override |
319 if (mOtrSessionId == null) |
319 public void endOtrSession() throws RemoteException { |
320 return ; |
320 if (mOtrSessionId == null) |
321 |
321 return ; |
322 try { |
322 |
323 BeemOtrManager.getOtrManager().endSession(mOtrSessionId); |
323 try { |
324 } catch (OtrException e) { |
324 BeemOtrManager.getInstance().getOtrManager().endSession(mOtrSessionId); |
325 e.printStackTrace(); |
325 } catch (OtrException e) { |
326 throw new RemoteException(); |
326 e.printStackTrace(); |
327 } |
327 throw new RemoteException(); |
328 BeemOtrManager.removeChat(mOtrSessionId); |
328 } |
329 mOtrSessionId = null; |
329 BeemOtrManager.getInstance().removeChat(mOtrSessionId); |
330 } |
330 mOtrSessionId = null; |
|
331 } |
|
332 |
|
333 @Override |
|
334 public void listenOtrSession() throws RemoteException { |
|
335 if (mOtrSessionId != null) |
|
336 return ; |
|
337 |
|
338 mOtrSessionId = new SessionID(mParticipant.getJIDWithRes(), mParticipant.getJID(), PROTOCOL); |
|
339 BeemOtrManager.getInstance().addChat(mOtrSessionId, this); |
|
340 //OtrEngineImpl will make a call to "this.getSession(sessionID)" which will instantiate our session. |
|
341 BeemOtrManager.getInstance().getOtrManager().getSessionStatus(mOtrSessionId); |
|
342 |
|
343 } |
331 } |
344 } |
332 |
345 |