use of org.eclipse.ecf.provider.xmpp.identity.XMPPID in project ecf by eclipse.
the class XMPPContainerPresenceHelper method updatePresenceForMatchingEntry.
private AdditionalClientRosterEntry updatePresenceForMatchingEntry(org.eclipse.ecf.presence.roster.RosterEntry entry, XMPPID fromID, IPresence newPresence) {
final IUser user = entry.getUser();
XMPPID oldID = (XMPPID) user.getID();
// the resource, or create a new client
if (oldID.equals(fromID)) {
if (newPresence.getType() == IPresence.Type.UNAVAILABLE) {
return removeEntryFromRoster(oldID, entry, newPresence, user);
} else {
// set the new presence state
entry.setPresence(newPresence);
// and notify with roster update
rosterManager.notifyRosterUpdate(entry);
}
} else if (oldID.getUsernameAtHost().equals(fromID.getUsernameAtHost())) {
if (oldID.getResourceName() == null) {
oldID.setResourceName(fromID.getResourceName());
// set the new presence state
entry.setPresence(newPresence);
// and notify with roster update
rosterManager.notifyRosterUpdate(entry);
} else if (fromID.getResourceName() != null && !newPresence.getType().equals(IPresence.Type.UNAVAILABLE)) {
return new AdditionalClientRosterEntry(entry.getParent(), new User(fromID, user.getName()), newPresence);
}
}
return null;
}
use of org.eclipse.ecf.provider.xmpp.identity.XMPPID in project ecf by eclipse.
the class XMPPContainerPresenceHelper method handlePresenceEvent.
protected void handlePresenceEvent(PresenceEvent evt) {
final Presence xmppPresence = evt.getPresence();
final String from = xmppPresence.getFrom();
final IPresence newPresence = createIPresence(xmppPresence);
final XMPPID fromID = createIDFromName(from);
if (newPresence.getType().equals(IPresence.Type.SUBSCRIBE) || newPresence.getType().equals(IPresence.Type.UNSUBSCRIBE) || newPresence.getType().equals(IPresence.Type.SUBSCRIBED) || newPresence.getType().equals(IPresence.Type.UNSUBSCRIBED)) {
rosterManager.notifySubscriptionListener(fromID, newPresence);
} else {
updatePresence(fromID, newPresence);
firePresenceListeners(fromID, newPresence);
}
}
use of org.eclipse.ecf.provider.xmpp.identity.XMPPID in project ecf by eclipse.
the class XMPPContainerPresenceHelper method countClientsInRoster.
private int countClientsInRoster(XMPPID oldID) {
Collection rosterItems = roster.getItems();
int count = 0;
synchronized (rosterItems) {
for (final Iterator i = rosterItems.iterator(); i.hasNext(); ) {
final IRosterItem item = (IRosterItem) i.next();
if (item instanceof org.eclipse.ecf.presence.roster.RosterGroup) {
final org.eclipse.ecf.presence.roster.RosterGroup group = (org.eclipse.ecf.presence.roster.RosterGroup) item;
count += countClientsInRosterGroup(group, oldID);
} else 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;
}
Aggregations