src/com/beem/project/beem/service/ChatAdapter.java
changeset 934 bf953743f5a1
parent 933 ca323cff3ac9
child 935 5123895ac95f
equal deleted inserted replaced
933:ca323cff3ac9 934:bf953743f5a1
    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