private void removeRosterEntryFromGroups(RosterEntry rosterEntry) throws ClientException {
    Collection<RosterGroup> oldGroups = rosterEntry.getGroups();

    for (RosterGroup group : oldGroups) {
      tryToRemoveUserFromGroup(group, rosterEntry);
    }
  }
Beispiel #2
0
  private void syncUsers() {
    for (RosterEntry entry : conn.getRoster().getEntries()) {
      getBuddyManager()
          .storeBuddy(
              new XMPPBuddy(
                  getBuddyManager(), entry.getUser(), entry.getName(), entry.getGroups(), entry));
      // Facebook does not support presence probes in their XMPP implementation. See
      // http://developers.facebook.com/docs/chat#features
      if (!TransportType.facebook.equals(getTransport().getType())) {
        // ProbePacket probe = new ProbePacket(this.getJID()+"/"+xmppResource, entry.getUser());
        ProbePacket probe = new ProbePacket(null, entry.getUser());
        Log.debug("XMPP: Sending the following probe packet: " + probe.toXML());
        try {
          conn.sendPacket(probe);
        } catch (IllegalStateException e) {
          Log.debug("XMPP: Not connected while trying to send probe.");
        }
      }
    }

    try {
      getTransport().syncLegacyRoster(getJID(), getBuddyManager().getBuddies());
    } catch (UserNotFoundException ex) {
      Log.error("XMPP: User not found while syncing legacy roster: ", ex);
    }

    getBuddyManager().activate();

    // lets repoll the roster since smack seems to get out of sync...
    // we'll let the roster listener take care of this though.
    conn.getRoster().reload();
  }
 @Nullable
 private static String getUserGroup(RosterEntry rosterEntry) {
   String group = null;
   for (RosterGroup rosterGroup : rosterEntry.getGroups()) {
     group = rosterGroup.getName();
   }
   return group;
 }
Beispiel #4
0
 static RosterPacket.Item toRosterItem(RosterEntry entry) {
   RosterPacket.Item item = new RosterPacket.Item(entry.getUser(), entry.getName());
   item.setItemType(entry.getType());
   item.setItemStatus(entry.getStatus());
   // Set the correct group names for the item.
   for (RosterGroup group : entry.getGroups()) {
     item.addGroupName(group.getName());
   }
   return item;
 }
 @Override
 public void entriesUpdated(Collection<String> addresses) {
   for (final String uid : addresses) {
     final User user = getUser(uid, true);
     final RosterEntry re = mRoster.getEntry(uid);
     user.setUserName(re.getName());
     user.setGroups(new GroupList(re.getGroups()));
     service.sendRosterUpdated(user);
   }
 }
Beispiel #6
0
  /**
   * @see net.sf.kraken.session.TransportSession#addContact(org.xmpp.packet.JID, String,
   *     java.util.ArrayList)
   */
  @Override
  public void addContact(JID jid, String nickname, ArrayList<String> groups) {
    String mail = getTransport().convertJIDToID(jid);
    try {
      conn.getRoster().createEntry(mail, nickname, groups.toArray(new String[groups.size()]));
      RosterEntry entry = conn.getRoster().getEntry(mail);

      getBuddyManager()
          .storeBuddy(new XMPPBuddy(getBuddyManager(), mail, nickname, entry.getGroups(), entry));
    } catch (XMPPException ex) {
      Log.debug("XMPP: unable to add:" + mail);
    }
  }
Beispiel #7
0
  private ContentValues getContentValuesForRosterEntry(final RosterEntry entry) {
    final ContentValues values = new ContentValues();

    values.put(RosterConstants.JID, entry.getUser());
    values.put(RosterConstants.ALIAS, getName(entry));

    Presence presence = mRoster.getPresence(entry.getUser());
    values.put(RosterConstants.STATUS_MODE, getStatusInt(presence));
    values.put(RosterConstants.STATUS_MESSAGE, presence.getStatus());
    values.put(RosterConstants.GROUP, getGroup(entry.getGroups()));

    return values;
  }
  private ContentValues getContentValuesForRosterEntry(final RosterEntry entry) {
    final ContentValues values = new ContentValues();

    values.put(RosterConstants.JID, entry.getUser());
    values.put(RosterConstants.ALIAS, getName(entry));

    Presence presence = roster.getPresence(entry.getUser());
    values.put(RosterConstants.STATUS_MODE, getStatusInt(presence));
    if (presence.getType() == Presence.Type.error) {
      values.put(RosterConstants.STATUS_MESSAGE, presence.getError().toString());
    } else values.put(RosterConstants.STATUS_MESSAGE, presence.getStatus());
    values.put(RosterConstants.GROUP, getGroup(entry.getGroups()));

    return values;
  }