Search in sources :

Example 1 with XMPPID

use of org.eclipse.ecf.provider.xmpp.identity.XMPPID in project ecf by eclipse.

the class XMPPContainerPresenceHelper method countClientsInRosterGroup.

private int countClientsInRosterGroup(org.eclipse.ecf.presence.roster.RosterGroup group, XMPPID oldID) {
    Collection groupItems = group.getEntries();
    int count = 0;
    for (final Iterator i = groupItems.iterator(); i.hasNext(); ) {
        final IRosterItem item = (IRosterItem) i.next();
        if (item instanceof org.eclipse.ecf.presence.roster.RosterEntry) {
            org.eclipse.ecf.presence.roster.RosterEntry entry = (org.eclipse.ecf.presence.roster.RosterEntry) item;
            XMPPID entryID = (XMPPID) entry.getUser().getID();
            if (entryID.getUsernameAtHost().equals(oldID.getUsernameAtHost()))
                count++;
        }
    }
    return count;
}
Also used : IRosterItem(org.eclipse.ecf.presence.roster.IRosterItem) Iterator(java.util.Iterator) Collection(java.util.Collection) IRosterEntry(org.eclipse.ecf.presence.roster.IRosterEntry) RosterEntry(org.jivesoftware.smack.RosterEntry) XMPPID(org.eclipse.ecf.provider.xmpp.identity.XMPPID)

Example 2 with XMPPID

use of org.eclipse.ecf.provider.xmpp.identity.XMPPID in project ecf by eclipse.

the class XMPPContainerPresenceHelper method handleIQEvent.

protected void handleIQEvent(IQEvent evt) {
    final IQ iq = evt.getIQ();
    if (iq instanceof RosterPacket) {
        // Roster packet...report to UI
        final RosterPacket rosterPacket = (RosterPacket) iq;
        if (rosterPacket.getType() == IQ.Type.SET || rosterPacket.getType() == IQ.Type.RESULT) {
            for (final Iterator i = rosterPacket.getRosterItems().iterator(); i.hasNext(); ) {
                final RosterPacket.Item item = (RosterPacket.Item) i.next();
                final RosterPacket.ItemType itemType = item.getItemType();
                XMPPID newID = createIDFromName(item.getUser());
                boolean remove = false;
                if (itemType == RosterPacket.ItemType.none || itemType == RosterPacket.ItemType.remove) {
                    removeItemFromRoster(roster.getItems(), createIDFromName(item.getUser()));
                    remove = true;
                } else {
                    remove = false;
                    addUniqueToRoster(createRosterEntries(newID, item));
                }
                // In both cases fire set roster entry
                fireSetRosterEntry(remove, createRosterEntry(newID, item));
            }
        }
    } else {
        trace("Received non rosterpacket IQ message");
    }
}
Also used : IRosterItem(org.eclipse.ecf.presence.roster.IRosterItem) RosterPacket(org.jivesoftware.smack.packet.RosterPacket) IQ(org.jivesoftware.smack.packet.IQ) Iterator(java.util.Iterator) XMPPID(org.eclipse.ecf.provider.xmpp.identity.XMPPID)

Example 3 with XMPPID

use of org.eclipse.ecf.provider.xmpp.identity.XMPPID in project ecf by eclipse.

the class XMPPContainerPresenceHelper method replace.

private boolean replace(IRosterItem i1, IRosterItem i2) {
    if (i1 instanceof IRosterEntry) {
        IRosterEntry re1 = (IRosterEntry) i1;
        if (!(i2 instanceof IRosterEntry))
            return false;
        IRosterEntry re2 = (IRosterEntry) i2;
        XMPPID id1 = (XMPPID) re1.getUser().getID();
        XMPPID id2 = (XMPPID) re2.getUser().getID();
        String jid1 = id1.getUsernameAtHost();
        String jid2 = id2.getUsernameAtHost();
        if (jid1.equals(jid2)) {
            String r1 = id1.getResourceName();
            String r2 = id2.getResourceName();
            if (r1 == null && r2 != null)
                return true;
        }
    }
    return false;
}
Also used : IRosterEntry(org.eclipse.ecf.presence.roster.IRosterEntry) XMPPID(org.eclipse.ecf.provider.xmpp.identity.XMPPID)

Example 4 with XMPPID

use of org.eclipse.ecf.provider.xmpp.identity.XMPPID in project ecf by eclipse.

the class XMPPContainerPresenceHelper method createRosterEntries.

protected IRosterItem[] createRosterEntries(RosterEntry entry) {
    final XMPPID xmppid = createIDFromName(entry.getUser());
    final String name = entry.getName();
    final User newUser = (name == null) ? new User(xmppid, xmppid.getUsername()) : new User(xmppid, XMPPID.unfixEscapeInNode(name));
    return createRosterEntries(entry.getGroups().iterator(), roster, newUser);
}
Also used : User(org.eclipse.ecf.core.user.User) IUser(org.eclipse.ecf.core.user.IUser) XMPPID(org.eclipse.ecf.provider.xmpp.identity.XMPPID)

Example 5 with XMPPID

use of org.eclipse.ecf.provider.xmpp.identity.XMPPID in project ecf by eclipse.

the class XMPPHyperlink method openContainer.

/**
 * @param presenceContainerAdapter
 */
private void openContainer(IContainer container) {
    final IPresenceContainerAdapter presenceContainerAdapter = (IPresenceContainerAdapter) container.getAdapter(IPresenceContainerAdapter.class);
    final IChatManager chatManager = presenceContainerAdapter.getChatManager();
    final IRosterManager rosterManager = presenceContainerAdapter.getRosterManager();
    if (chatManager != null && rosterManager != null) {
        try {
            // get local ID
            final XMPPID localID = (XMPPID) rosterManager.getRoster().getUser().getID();
            final Namespace ns = container.getConnectNamespace();
            // create target ID
            final XMPPID targetID = (isXMPPS) ? new XMPPSID(ns, getURI().getAuthority()) : new XMPPID(ns, getURI().getAuthority());
            // If they are same, just tell user and return
            if (localID.equals(targetID)) {
                MessageDialog.openError(null, Messages.XMPPHyperlink_MESSAGING_ERROR_TITLE, Messages.XMPPHyperlink_MESSAGING_ERROR_MESSAGE);
                return;
            } else {
                final String localHost = localID.getHostname();
                final String targetHost = targetID.getHostname();
                // it's pretty obvious that we wish to message to them
                if (localHost.equals(targetHost)) {
                    openMessagesView(chatManager, localID, targetID, targetID.getUsername());
                } else {
                    // Otherwise, ask the user whether messaging, or
                    // connecting is desired
                    final MessageDialog messageDialog = new MessageDialog(null, Messages.XMPPHyperlink_SELECT_ACTION_DIALOG_TITLE, null, NLS.bind(Messages.XMPPHyperlink_SELECT_ACTION_DIALOG_MESSAGE, new Object[] { targetHost, localHost, targetID.getName(), localID.getName() }), MessageDialog.QUESTION, new String[] { Messages.XMPPHyperlink_SELECT_ACTION_DIALOG_BUTTON_SEND_MESSAGE, Messages.XMPPHyperlink_SELECT_ACTION_DIALOG_BUTTON_CONNECT, Messages.XMPPHyperlink_SELECT_ACTION_DIALOG_BUTTON_CANCEL }, 2);
                    final int selected = messageDialog.open();
                    switch(selected) {
                        case 0:
                            openMessagesView(chatManager, localID, targetID, targetID.getUsername());
                            return;
                        case 1:
                            super.open();
                            return;
                        default:
                            return;
                    }
                }
            }
        } catch (final Exception e) {
            MessageDialog.openError(null, Messages.XMPPHyperlink_ERROR_OPEN_MESSAGE_VIEW_DIALOG_TITLE, NLS.bind(Messages.XMPPHyperlink_ERROR_OPEN_MESSAGE_VIEW_DIALOG_MESSAGE, e.getLocalizedMessage()));
            Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, IStatus.ERROR, Messages.XMPPHyperlink_ERROR_OPEN_MESSAGE_VIEW_LOG_STATUS_MESSAGE, e));
        }
    }
}
Also used : IPresenceContainerAdapter(org.eclipse.ecf.presence.IPresenceContainerAdapter) IStatus(org.eclipse.core.runtime.IStatus) Status(org.eclipse.core.runtime.Status) IRosterManager(org.eclipse.ecf.presence.roster.IRosterManager) MessageDialog(org.eclipse.jface.dialogs.MessageDialog) XMPPID(org.eclipse.ecf.provider.xmpp.identity.XMPPID) Namespace(org.eclipse.ecf.core.identity.Namespace) XMPPSID(org.eclipse.ecf.provider.xmpp.identity.XMPPSID)

Aggregations

XMPPID (org.eclipse.ecf.provider.xmpp.identity.XMPPID)13 Iterator (java.util.Iterator)4 IUser (org.eclipse.ecf.core.user.IUser)3 User (org.eclipse.ecf.core.user.User)3 IRosterEntry (org.eclipse.ecf.presence.roster.IRosterEntry)3 IRosterItem (org.eclipse.ecf.presence.roster.IRosterItem)3 Collection (java.util.Collection)2 RosterEntry (org.jivesoftware.smack.RosterEntry)2 XMPPException (org.jivesoftware.smack.XMPPException)2 IOException (java.io.IOException)1 URISyntaxException (java.net.URISyntaxException)1 IStatus (org.eclipse.core.runtime.IStatus)1 Status (org.eclipse.core.runtime.Status)1 ContainerConnectException (org.eclipse.ecf.core.ContainerConnectException)1 Namespace (org.eclipse.ecf.core.identity.Namespace)1 CallbackHandler (org.eclipse.ecf.core.security.CallbackHandler)1 ECFException (org.eclipse.ecf.core.util.ECFException)1 IPresence (org.eclipse.ecf.presence.IPresence)1 IPresenceContainerAdapter (org.eclipse.ecf.presence.IPresenceContainerAdapter)1 IRosterGroup (org.eclipse.ecf.presence.roster.IRosterGroup)1