All pastes #1771476 Raw Edit

Mine

public text v1 · immutable
#1771476 ·published 2010-01-30 00:59 UTC
rendered paste body
/*
 * Copyright 2004-2005 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package jwm.msn;
import java.io.UnsupportedEncodingException;
import java.util.*;

import jwm.*;
import jwm.vo.*;
import net.sf.jml.*;
import net.sf.jml.event.*;
import net.sf.jml.message.*;
/**
 * @author Roy Tsang
 *
 */
public class MyListener extends MsnAdapter
{
	private ImEvent eventListener;
	@SuppressWarnings("unused")
	private String jwmVersion=Utility.getSystemParameterString("jwm.version");
	private MsnClient msnClient;
	private ImEventVO imEventVO;
	private boolean isPrintLog=Utility.getSystemParameterBoolean("jwm.printJWMDebugLog");
	/**
	 * Event listener contructor
	 * @param ie Im Event Listener
	 */
	public MyListener(ImEvent ie)
	{
		super();
		try{
		 	System.setOut(new java.io.PrintStream(System.out,true,"Big5"));
		 	this.eventListener=ie;
		}catch (Exception er) {
			er.printStackTrace();
		}
	}
	/**
	 * set Msn Client
	 * @param m msnClient
	 */
	public void setMsnClient(MsnClient m)
	{
		this.msnClient=m;
	}
	/**
	 *  A contact you requested to be added has been added to the server.
	 * @param messenger msn messenger 
	 * @param contact  msn contact
	 */
	public void contactAddCompleted(MsnMessenger messenger, MsnContact contact) 
	{
		if (isPrintLog)
			System.out.println(jwmVersion+","+this.msnClient.getDisplayName()+","+Utility.getDate()+" "+Utility.getTime()+" contact added completed:"+contact);
		imEventVO=new ImEventVO();
		imEventVO.setEventType(MsnEvent.CONTACTADDCOMPLETED);
		Vector eventDetail=new Vector();
		eventDetail.add(messenger);
		eventDetail.add(contact);
		imEventVO.setEventDetail(eventDetail);
		this.eventListener.writeToEventList(imEventVO);
		this.msnClient.initContactList();
	}
	/**
	 * Some one add current login user to his contact list. 
	 * @param messenger msn messenger 
	 * @param contact  msn contact
	 */
	public void contactAddedMe(MsnMessenger messenger, MsnContact contact) 
	{
		if (isPrintLog)
			System.out.println(jwmVersion+","+this.msnClient.getDisplayName()+","+Utility.getDate()+" "+Utility.getTime()+" contact added me:"+contact);
		imEventVO=new ImEventVO();
		imEventVO.setEventType(MsnEvent.CONTACTADDEDME);
		Vector eventDetail=new Vector();
		eventDetail.add(messenger);
		eventDetail.add(contact);
		imEventVO.setEventDetail(eventDetail);
		this.eventListener.writeToEventList(imEventVO);
	}
	/**
	 * A contact join switchboard. 
	 * @param switchboard  Msn Switchboard
	 * @param contact msn contact
	 */
	public void contactJoinSwitchboard(MsnSwitchboard switchboard, MsnContact contact) 
	{
		if (isPrintLog)
			System.out.println(jwmVersion+","+this.msnClient.getDisplayName()+","+Utility.getDate()+" "+Utility.getTime()+" contact join switchboard:"+contact);
		if (switchboard.getAttachment() instanceof Vector)
		{	
			Vector attachment=(Vector) switchboard.getAttachment();
			switch (attachment.size())
			{
				case 2:
					 MsnDatacastMessage nudgeMessage=new MsnDatacastMessage(); 
					 nudgeMessage.setId(1);
					 switchboard.sendMessage(nudgeMessage);
					 break;
				case 3:
					MsnControlMessage typingMessage = new MsnControlMessage();
					typingMessage.setTypingUser(switchboard.getMessenger().getOwner().getDisplayName());
					switchboard.sendMessage(typingMessage);
					MsnInstantMessage message =(MsnInstantMessage) attachment.elementAt(2); 
					switchboard.sendMessage(message);
					break;
			}
			this.msnClient.addSwitchBoard(contact.getId(), switchboard);
		}		
	}
	/**
	 * A contact leave switchboard. 
	 * @param switchboard  Msn Switchboard
	 * @param contact msn contact 
	 */
	public void contactLeaveSwitchboard(MsnSwitchboard switchboard, MsnContact contact) 
	{
		if (isPrintLog)
		{	
			System.out.println(jwmVersion+","+this.msnClient.getDisplayName()+","+Utility.getDate()+" "+Utility.getTime()+" contact leave switchboard:"+contact.toString());
		}
		imEventVO=new ImEventVO();
		imEventVO.setEventType(MsnEvent.CONTACTLEAVESWITCHBOARD);
		Vector eventDetail=new Vector();
		
		imEventVO.setEventDetail(eventDetail);
		this.eventListener.writeToEventList(imEventVO);
	}
	/**
	 * Contact list init completed. 
	 * @param  messenger Msn Messenger
	 * 
	 */
	public void contactListInitCompleted(MsnMessenger messenger) 
	{
		if (isPrintLog)
			System.out.println(jwmVersion+","+this.msnClient.getDisplayName()+","+Utility.getDate()+" "+Utility.getTime()+" "+messenger.getOwner().getDisplayName()+" contact list init completed.");
		imEventVO=new ImEventVO();
		imEventVO.setEventType(MsnEvent.CONTACTLISTINITCOMPLETED);
		Vector eventDetail=new Vector();
		
		imEventVO.setEventDetail(eventDetail);
		this.eventListener.writeToEventList(imEventVO);
		this.msnClient.initContactList();
	}
	/**
	 * Contact list synchronize completed. (non-Javadoc)
	 * @see net.sf.jml.event.MsnAdapter#contactListSyncCompleted(net.sf.jml.MsnMessenger)
	 */
	public void contactListSyncCompleted(MsnMessenger messenger) 
	{
		if (isPrintLog)
			System.out.println(jwmVersion+","+this.msnClient.getDisplayName()+","+Utility.getDate()+" "+Utility.getTime()+" "+messenger.getOwner().getDisplayName()+" contact list sync completed.");
		imEventVO=new ImEventVO();
		imEventVO.setEventType(MsnEvent.CONTACTLISTSYNCCOMPLETED);
		Vector eventDetail=new Vector();
		
		imEventVO.setEventDetail(eventDetail);
		this.eventListener.writeToEventList(imEventVO);
	}
	/**
	 * A contact you requested to be removed has been removed from the server. 
	 * @param messenger msn messenger 
	 * @param contact msn contact
	 */
	public void contactRemoveCompleted(MsnMessenger messenger, MsnContact contact) 
	{
		if (isPrintLog)
			System.out.println(jwmVersion+","+this.msnClient.getDisplayName()+","+Utility.getDate()+" "+Utility.getTime()+" "+messenger.getOwner().getDisplayName()+" remove contact "+contact+" completed.");
		Vector eventDetail=new Vector();
		eventDetail.add(contact);
		imEventVO=new ImEventVO();
		imEventVO.setEventType(MsnEvent.CONTACTREMOVECOMPLETED);
		imEventVO.setEventDetail(eventDetail);
		this.eventListener.writeToEventList(imEventVO);
		
	}
	/**
	 * Some one remove current login user from his contact list. 
	 * @param messenger msn messenger 
	 * @param contact msn contact
	 */
	public void contactRemovedMe(MsnMessenger messenger, MsnContact contact) 
	{
		if (isPrintLog)
			System.out.println(jwmVersion+","+this.msnClient.getDisplayName()+","+Utility.getDate()+" "+Utility.getTime()+" "+contact+" remove me ("+messenger.getOwner().getDisplayName()+") completed.");
		Vector eventDetail=new Vector();
		eventDetail.add(contact);
		imEventVO=new ImEventVO();
		imEventVO.setEventType(MsnEvent.CONTACTREMOVEDME);
		imEventVO.setEventDetail(eventDetail);
		this.eventListener.writeToEventList(imEventVO);
	}
	/**
	 * Contact status changed such as online and offline or friend changed his display name. 
	 * @param messenger msn messenger 
	 * @param contact msn contact 
	 */
	public void contactStatusChanged(MsnMessenger messenger, MsnContact contact) 
	{
		if (isPrintLog)
			System.out.println(jwmVersion+","+this.msnClient.getDisplayName()+","+Utility.getDate()+" "+Utility.getTime()+" "+messenger.getOwner().getDisplayName()+" friend:"+contact+" status changed.");
		Vector eventDetail=new Vector();
		eventDetail.add(contact);
		imEventVO=new ImEventVO();
		imEventVO.setEventType(MsnEvent.CONTACTSTATUSCHANGED);
		imEventVO.setEventDetail(eventDetail);
		this.eventListener.writeToEventList(imEventVO);
		if (this.msnClient.getBuddy(contact.getId())==null)
		{
			this.msnClient.initContactList();			
		}
	}
	/**
	 * Received control message, such as typing text or recording voice clip. 
	 *  @param  message  Msn Control Message 
	 *  @param contact msn contact
	 *  @param switchboard  Msn Switchboard
	 */
	public void controlMessageReceived(MsnSwitchboard switchboard, MsnControlMessage message, MsnContact contact) 
	{
		if (isPrintLog)
			System.out.println(jwmVersion+","+this.msnClient.getDisplayName()+","+Utility.getDate()+" "+Utility.getTime()+" control message recevied:"+contact+",message:"+message);
		Vector eventDetail=new Vector();
		eventDetail.add(message);
		eventDetail.add(contact);
		imEventVO=new ImEventVO();
		imEventVO.setEventType(MsnEvent.CONTROLMESSAGERECEIVED);
		imEventVO.setEventDetail(eventDetail);
		this.eventListener.writeToEventList(imEventVO);
	}
	/**
	 * Received datacast message. 
	 * @param switchboard Msn Switchboard
	 * @param message  Msn Data Cast Message
	 * @param contact  msn contact
	 */
	public void datacastMessageReceived(MsnSwitchboard switchboard, MsnDatacastMessage message, MsnContact contact) 
	{
		if (isPrintLog)
			System.out.println(jwmVersion+","+this.msnClient.getDisplayName()+","+Utility.getDate()+" "+Utility.getTime()+" datacast message received:"+contact+",message:"+message);
		Vector eventDetail=new Vector();
		eventDetail.add(message);
		eventDetail.add(contact);
		imEventVO=new ImEventVO();
		imEventVO.setEventType(MsnEvent.DATACASTMESSAGERECEIVED);
		imEventVO.setEventDetail(eventDetail);
		this.eventListener.writeToEventList(imEventVO);
	}
	/**
	 * Caught exception. 
	 * @param messenger Msn Messenger
	 * @param throwable Throwable
	 */
	public void exceptionCaught(MsnMessenger messenger, Throwable throwable) 
	{
		if (isPrintLog)
			System.out.println(jwmVersion+","+this.msnClient.getDisplayName()+","+Utility.getDate()+" "+Utility.getTime()+" exception catch:"+messenger.getOwner().getDisplayName());
		throwable.printStackTrace();
		Vector eventDetail=new Vector();
		if (throwable!=null)
		{
			eventDetail.add(throwable);
			imEventVO=new ImEventVO();
			imEventVO.setEventType(MsnEvent.EXCEPTIONCAUGHT);
			imEventVO.setEventDetail(eventDetail);
			this.eventListener.writeToEventList(imEventVO);
		}
	}
	/**
	 * A group you requested to be added has been added to the server. 
	 * @param messenger Msn Messenger
	 * @param group Msn Group
	 */
	public void groupAddCompleted(MsnMessenger messenger, MsnGroup group) 
	{
		if (isPrintLog)
			System.out.println(jwmVersion+","+this.msnClient.getDisplayName()+","+Utility.getDate()+" "+Utility.getTime()+" "+messenger.getOwner().getDisplayName()+" added group completed.");
		Vector eventDetail=new Vector();
		eventDetail.add(group);
		imEventVO=new ImEventVO();
		imEventVO.setEventType(MsnEvent.GROUPADDCOMPLETED);
		imEventVO.setEventDetail(eventDetail);
		this.eventListener.writeToEventList(imEventVO);
	}
	/**
	 * A group you requested to be removed has been removed from the server. 
	 * @param messenger Msn Messenger
	 * @param group Msn Group 
	 */
	public void groupRemoveCompleted(MsnMessenger messenger, MsnGroup group) 
	{
		if (isPrintLog)
			System.out.println(jwmVersion+","+this.msnClient.getDisplayName()+","+Utility.getDate()+" "+Utility.getTime()+" "+messenger.getOwner().getDisplayName()+" removed group completed.");
		Vector eventDetail=new Vector();
		eventDetail.add(group);
		imEventVO=new ImEventVO();
		imEventVO.setEventType(MsnEvent.GROUPREMOVECOMPLETED);
		imEventVO.setEventDetail(eventDetail);
		this.eventListener.writeToEventList(imEventVO);
	}
	/**
	 * Received text message. 
	 * @param switchboard Msn Switchboard
	 * @param message Msn Instant Message
	 * @param contact Msn Contact 
	 */
	public void instantMessageReceived(MsnSwitchboard switchboard, MsnInstantMessage message, MsnContact contact) 
	{
		if (isPrintLog)
			System.out.println(jwmVersion+","+this.msnClient.getDisplayName()+","+Utility.getDate()+" "+Utility.getTime()+" friend"+contact+" send an message "+message+" to "+switchboard.getMessenger());
		if (this.msnClient.getBuddy(contact.getId())!=null)
		{
			Vector eventDetail=new Vector();
			eventDetail.add(message);
			eventDetail.add(contact);
			imEventVO=new ImEventVO();
			imEventVO.setEventType(MsnEvent.INSTANTMESSAGERECEIVED);
			imEventVO.setEventDetail(eventDetail);
			this.eventListener.writeToEventList(imEventVO);
		} 
	}
	/*
	 * (non-Javadoc)
	 * @see net.sf.jml.event.MsnAdapter#offlineMessageReceived(java.lang.String, java.lang.String, java.lang.String, net.sf.jml.MsnContact)
	 */
    public void offlineMessageReceived(String body,
                                       String contentType, 
                                       String encoding,
                                       MsnContact contact,
                                       String receivedDate)
    {
		if (isPrintLog)
			System.out.println(jwmVersion+","+this.msnClient.getDisplayName()+","+Utility.getDate()+" "+Utility.getTime()+" retreiving offline message "+body+" that sent from contact"+contact);
		Vector eventDetail=new Vector();
		try {
			eventDetail.add(new String(body.getBytes(encoding),"utf-8"));
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
		eventDetail.add(contact);
		eventDetail.add(receivedDate);
		imEventVO=new ImEventVO();
		imEventVO.setEventType(MsnEvent.OFFLINEMESSAGERECEIVED);
		imEventVO.setEventDetail(eventDetail);
		this.eventListener.writeToEventList(imEventVO);
    }

	/**
	 * Login completed. 
	 * @param messenger Msn Messenger
	 */
	public void loginCompleted(MsnMessenger messenger) 
	{
		if (isPrintLog)
			System.out.println(jwmVersion+","+this.msnClient.getDisplayName()+","+Utility.getDate()+" "+Utility.getTime()+" "+messenger.getOwner().getDisplayName()+" login completed");
		Vector eventDetail=new Vector();
		
		imEventVO=new ImEventVO();
		imEventVO.setEventType(MsnEvent.LOGINCOMPLETED);
		imEventVO.setEventDetail(eventDetail);
		this.eventListener.writeToEventList(imEventVO);
	}
	/**
	 * Logout. 
	 * @param messenger Msn Messenger
	 */
	public void logout(MsnMessenger messenger) 
	{
		if (isPrintLog)
			System.out.println(jwmVersion+","+this.msnClient.getDisplayName()+","+Utility.getDate()+" "+Utility.getTime()+" "+messenger.getOwner().getDisplayName()+" logout completed");
		Vector eventDetail=new Vector();
		
		imEventVO=new ImEventVO();
		imEventVO.setEventType(MsnEvent.LOGOUT);
		imEventVO.setEventDetail(eventDetail);
		this.eventListener.writeToEventList(imEventVO);
	}
	/**
	 * Owner status changed or name changed or profile changed. 
	 * @param messenger Msn Messenger
	 */
	public void ownerStatusChanged(MsnMessenger messenger) 
	{
		if (isPrintLog)
			System.out.println(jwmVersion+","+this.msnClient.getDisplayName()+","+Utility.getDate()+" "+Utility.getTime()+" "+messenger.getOwner().getDisplayName()+" status changed");
		
		Vector eventDetail=new Vector();
		eventDetail.add(messenger);
		imEventVO=new ImEventVO();
		imEventVO.setEventType(MsnEvent.OWNERSTATUSCHANGED);
		imEventVO.setEventDetail(eventDetail);
		this.eventListener.writeToEventList(imEventVO);
	}
	/**
	 * Switchboard closed. 
	 * @param switchboard Msn Switchboard
	 */
	public void switchboardClosed(MsnSwitchboard switchboard) 
	{
		if (switchboard.getAttachment() instanceof Vector)
		{
			Vector attachment=(Vector)switchboard.getAttachment();
			if (isPrintLog)
			{	String temp=new String();
				if (switchboard!=null)
					temp=switchboard.toString();
				System.out.println(jwmVersion+","+this.msnClient.getDisplayName()+","+Utility.getDate()+" "+Utility.getTime()+" switchboard closed."+temp);
			}
			if ((attachment!=null) && (attachment.size()==2))
			{
				MsnContact contact=(MsnContact) attachment.elementAt(0);
				String id=contact.getId();
				this.msnClient.removeSwitchBoard(id);
				Vector  eventDetail=new Vector();
				imEventVO=new ImEventVO();
				eventDetail.add("switchboard closed,id="+id);
				imEventVO.setEventType(MsnEvent.SWITCHBOARDCLOSED);
				imEventVO.setEventDetail(eventDetail);
				this.eventListener.writeToEventList(imEventVO);	
			}
		}
	}
	/**
	 * Switchboard started.
	 * @param switchBoard Msn Switchboard
	 */
	public void switchboardStarted(MsnSwitchboard switchBoard) 
	{
		if (isPrintLog)
			System.out.println(jwmVersion+","+this.msnClient.getDisplayName()+","+Utility.getDate()+" "+Utility.getTime()+" switchboard started"+switchBoard);
		if (switchBoard.getAttachment() instanceof Vector)
		{	
			Vector attachment=(Vector) switchBoard.getAttachment();
			Vector  eventDetail=new Vector();
			imEventVO=new ImEventVO();
	
			if (attachment!=null)
			{
				switch (attachment.size())
				{
					case 2:
					case 3:
						 MsnContact contact=(MsnContact) attachment.elementAt(1);
						 switchBoard.inviteContact(contact.getEmail());
						 eventDetail.add(contact);
						break;	
				}
			}
			imEventVO.setEventType(MsnEvent.SWITCHBOARDSTARTED);
			imEventVO.setEventDetail(eventDetail);
			this.eventListener.writeToEventList(imEventVO);	
		}
	}

	
	/**
	 * Received system message. 
	 * @param messenger Msn Messenger
	 * @param message  Msn SystemMessage 
	 */
	public void systemMessageReceived(MsnMessenger messenger, MsnSystemMessage message) 
	{
		if (isPrintLog)
			System.out.println(jwmVersion+","+this.msnClient.getDisplayName()+","+Utility.getDate()+" "+Utility.getTime()+" "+messenger.getOwner().getDisplayName()+" system message recevied,message:"+message);
		Vector  eventDetail=new Vector();
		imEventVO=new ImEventVO();
		eventDetail.add(message);
		imEventVO.setEventType(MsnEvent.SYSTEMMESSAGERECEIVED);
		imEventVO.setEventDetail(eventDetail);
		this.eventListener.writeToEventList(imEventVO);	
	}
	/**
	 * Received unknown message. 
	 * @param switchboard Msn Switchboard
	 * @param message Msn Unknown Message
	 * @param contact Msn Contact
	 */
	public void unknownMessageReceived(MsnSwitchboard switchboard, MsnUnknownMessage message, MsnContact contact) 
	{
		if (isPrintLog)
			System.out.println(jwmVersion+","+this.msnClient.getDisplayName()+","+Utility.getDate()+" "+Utility.getTime()+" friends:"+contact+" unknow message recevied,message:"+message);
		Vector  eventDetail=new Vector();
		imEventVO=new ImEventVO();
		eventDetail.add(message);
		imEventVO.setEventType(MsnEvent.UNKNOWNMESSAGERECEIVED);
		imEventVO.setEventDetail(eventDetail);
		this.eventListener.writeToEventList(imEventVO);	
	}	
	/**
	 * File transfer finished. 
	 * @param transfer Msn File Transfer
	 */
	public void fileTransferFinished(MsnFileTransfer transfer) 
	{
	}
	
	/**
	 * File transfer process. 
	 * @param transfer Msn File Transfer
	 */
	public void fileTransferProcess(MsnFileTransfer transfer) 
	{
	}
	
	/**
	 * Received file transfer request.
	 * @param transfer Msn File Transfer 
	 */
	public void fileTransferRequestReceived(MsnFileTransfer transfer) 
	{
		transfer.cancel();
		if (isPrintLog)
			System.out.println(jwmVersion+","+this.msnClient.getDisplayName()+","+Utility.getDate()+" "+Utility.getTime()+" file transfer request received.");

	}
	
	/**
	 * File transfer started.
	 * @param transfer Msn File Transfer 
	 */
	public void fileTransferStarted(MsnFileTransfer transfer) 
	{
		if (isPrintLog)
			System.out.println(jwmVersion+","+this.msnClient.getDisplayName()+","+Utility.getDate()+" "+Utility.getTime()+" file transfer started");
		
	}
}