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;
}
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");
}
}
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;
}
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);
}
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));
}
}
}
Aggregations