Package net.sf.jml.protocol.incoming

Source Code of net.sf.jml.protocol.incoming.IncomingRML

/*
* 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 net.sf.jml.protocol.incoming;

import net.sf.jml.MsnGroup;
import net.sf.jml.MsnList;
import net.sf.jml.MsnMessageChain;
import net.sf.jml.MsnMessageIterator;
import net.sf.jml.MsnProtocol;
import net.sf.jml.impl.AbstractMessenger;
import net.sf.jml.impl.MsnContactImpl;
import net.sf.jml.impl.MsnContactListImpl;
import net.sf.jml.protocol.MsnIncomingMessage;
import net.sf.jml.protocol.MsnOutgoingMessage;
import net.sf.jml.protocol.MsnSession;
import net.sf.jml.protocol.outgoing.OutgoingRML;

/**
* MSN13
* Remove contact
*
* @author Damian Minkov
*/
public class IncomingRML
    extends MsnIncomingMessage
{

    public IncomingRML(MsnProtocol protocol)
    {
        super(protocol);
    }

    @Override
    protected void messageReceived(MsnSession session)
    {
        super.messageReceived(session);

        MsnContactListImpl contactList =
            (MsnContactListImpl) session.getMessenger().getContactList();

        MsnMessageChain chain = session.getOutgoingMessageChain();
        int trId = getTransactionId();

        for (MsnMessageIterator iterator = chain.iterator(); iterator.hasPrevious();)
        {
            MsnOutgoingMessage message = (MsnOutgoingMessage) iterator.previous();
            if (message.getTransactionId() == trId)
            {
                MsnContactImpl contact = (MsnContactImpl)((OutgoingRML) message).getContact();

                MsnList list = ((OutgoingRML) message).getList();

                contact.setInList(list, false);
                if (contact.getListNumber() == 0)
                { //Not in any group, delete from contact list
                    contactList.removeContactByEmail(contact.getEmail());
                }
                if (list == MsnList.FL)
                { //In FL, remove user from the group.
                    try
                    {
                        MsnGroup[] gs = contact.getBelongGroups();
                        for (int i = 0; i < gs.length; i++)
                        {
                            MsnGroup msnGroup = gs[i];
                            contact.removeBelongGroup(msnGroup.getGroupId());
                           
                            ((AbstractMessenger) session.getMessenger()).
                                fireContactRemoveFromGroupCompleted(contact, msnGroup);
                        }
                    }
                    catch (Exception e)
                    {
                        e.printStackTrace();
                    }

                    ((AbstractMessenger) session.getMessenger()).
                        fireContactRemoveCompleted(contact, MsnList.FL);
                }
            }
        }
    }
}
TOP

Related Classes of net.sf.jml.protocol.incoming.IncomingRML

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.