/* * Copyright 2006-2010 Daniel Henninger. All rights reserved. * * This software is published under the terms of the GNU Public License (GPL), * a copy of which is included in this distribution. */ package net.sf.kraken.protocols.msn; import java.util.ArrayList; import net.sf.jml.MsnContact; import net.sf.jml.MsnGroup; import net.sf.kraken.roster.TransportBuddy; import net.sf.kraken.roster.TransportBuddyManager; import org.apache.log4j.Logger; import org.jivesoftware.openfire.user.UserNotFoundException; import org.jivesoftware.util.JiveGlobals; import org.xmpp.packet.JID; /** * @author Daniel Henninger */ public class MSNBuddy extends TransportBuddy { static Logger Log = Logger.getLogger(MSNBuddy.class); public MSNBuddy(TransportBuddyManager<MSNBuddy> manager, MsnContact msnContact) { super(manager, msnContact.getEmail().toString(), msnContact.getFriendlyName(), null); ArrayList<String> groups = new ArrayList<String>(); for (MsnGroup group : msnContact.getBelongGroups()) { groups.add(group.getGroupName()); } this.setGroups(groups); this.msnContact = msnContact; this.setPresenceAndStatus(((MSNTransport)getManager().getSession().getTransport()).convertMSNStatusToXMPP(msnContact.getStatus()), msnContact.getPersonalMessage()); } public MsnContact msnContact = null; public MsnContact getMsnContact(){ return msnContact; } public void setMsnContact(MsnContact msnContact) { if (JiveGlobals.getBooleanProperty("plugin.gateway.msn.autonickname", false)) { if (!getNickname().equals(msnContact.getDisplayName())) { setNickname(msnContact.getDisplayName()); try { final JID owner = getManager().getSession().getJID(); getManager().getSession().getTransport().addOrUpdateRosterItem(owner, getJID(), getNickname(), getGroups()); } catch (UserNotFoundException e) { // Can't update something that's not really in our list. } } } this.msnContact = msnContact; } }