public void addFriend(String userID) { if (sRoster != null) { if (!sRoster.contains(userID)) { try { sRoster.createEntry(userID, StringUtils.parseBareAddress(userID), null); retrieveFriendList(); } catch (XMPPException e) { System.err.println("Error in adding friend " + e.getMessage()); } } else { RosterEntry rosterEntry = sRoster.getEntry(userID); RosterPacket.ItemType type = rosterEntry.getType(); switch (type) { case from: requestSubscription(userID, sConnection); break; case to: grantSubscription(userID, sConnection); break; case none: grantSubscription(userID, sConnection); requestSubscription(userID, sConnection); break; case both: default: break; } } } }
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(); }
public void buildUserList() { final Collection<RosterEntry> roster = mRoster.getEntries(); for (final RosterEntry rosterEntry : roster) { getUser(rosterEntry.getUser(), true); } transportCheck(); }
public void updateUser(Presence presence) { boolean newUser = true; Contact removeC = null; for (Contact c : contactList) { if (c.getRosterEntry().getUser().equals(StringUtils.parseBareAddress(presence.getFrom()))) { newUser = false; if (!(presence.isAvailable() || presence.isAway())) { removeC = c; } break; } } if (removeC != null) { contactList.remove(removeC); } if (newUser) { RosterEntry re = roster.getEntry(StringUtils.parseBareAddress(presence.getFrom())); Contact c = new Contact(); if (re.getName() == null || re.getName().trim().equals("")) c.setName(re.getUser()); else c.setName(re.getName()); c.setStatus(presence.getStatus()); c.setRosterEntry(re); contactList.add(c); } }
@Override public void onItemClick(AdapterView<?> parent, View v, int position, long id) { RosterItem item = (RosterItem) parent.getItemAtPosition(position); String name = item.getName(); String account = item.getAccount(); if (item.isGroup() || item.isAccount()) { if (item.isCollapsed()) { while (service.getCollapsedGroups().contains(name)) service.getCollapsedGroups().remove(name); item.setCollapsed(false); } else { service.getCollapsedGroups().add(name); item.setCollapsed(true); } updateList(); } else if (item.isEntry() || item.isSelf()) { RosterEntry re = item.getEntry(); String jid = re.getUser(); Intent i = new Intent(this, Chat.class); i.putExtra("account", account); i.putExtra("jid", jid); startActivity(i); } else if (item.isMuc()) { Intent i = new Intent(this, Chat.class); i.putExtra("account", account); i.putExtra("jid", item.getName()); startActivity(i); } }
public void renameRosterItem(String user, String newName) throws YaximXMPPException { RosterEntry rosterEntry = mRoster.getEntry(user); if (!(newName.length() > 0) || (rosterEntry == null)) { throw new YaximXMPPException("JabberID to rename is invalid!"); } rosterEntry.setName(newName); }
public void renameRosterItem(String user, String newName) throws ClientException { RosterEntry rosterEntry = roster.getEntry(user); if (!(newName.length() > 0) || (rosterEntry == null)) { throw new ClientException("ID is invalid!"); } rosterEntry.setName(newName); }
/** 更改用户状态 */ public void setPresence(int code) { if (connection == null) return; Presence presence; switch (code) { case 0: presence = new Presence(Presence.Type.available); connection.sendPacket(presence); Log.v("state", "设置在线"); break; case 1: presence = new Presence(Presence.Type.available); presence.setMode(Presence.Mode.chat); connection.sendPacket(presence); Log.v("state", "设置Q我吧"); System.out.println(presence.toXML()); break; case 2: presence = new Presence(Presence.Type.available); presence.setMode(Presence.Mode.dnd); connection.sendPacket(presence); Log.v("state", "设置忙碌"); System.out.println(presence.toXML()); break; case 3: presence = new Presence(Presence.Type.available); presence.setMode(Presence.Mode.away); connection.sendPacket(presence); Log.v("state", "设置离开"); System.out.println(presence.toXML()); break; case 4: Roster roster = connection.getRoster(); Collection<RosterEntry> entries = roster.getEntries(); for (RosterEntry entry : entries) { presence = new Presence(Presence.Type.unavailable); presence.setPacketID(Packet.ID_NOT_AVAILABLE); presence.setFrom(connection.getUser()); presence.setTo(entry.getUser()); connection.sendPacket(presence); System.out.println(presence.toXML()); } // 向同一用户的其他客户端发送隐身状态 presence = new Presence(Presence.Type.unavailable); presence.setPacketID(Packet.ID_NOT_AVAILABLE); presence.setFrom(connection.getUser()); presence.setTo(StringUtils.parseBareAddress(connection.getUser())); connection.sendPacket(presence); Log.v("state", "设置隐身"); break; case 5: presence = new Presence(Presence.Type.unavailable); connection.sendPacket(presence); Log.v("state", "设置离线"); break; default: break; } }
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); } }
private String getCurrentJabberID(User user, RosterEntry rosterEntry) { Presence presence = _getPresence(user); String jabberId = null; if (presence != null) { jabberId = presence.getFrom(); } if (jabberId == null) jabberId = rosterEntry.getUser(); if (jabberId == null) jabberId = rosterEntry.getName(); return jabberId; }
public boolean renameFriend(String userID, String name) { if (sConnection != null && sConnection.isConnected()) { Roster roster = sConnection.getRoster(); if (roster.contains(userID)) { RosterEntry entry = roster.getEntry(userID); entry.setName(name); } } return false; }
private String getName(RosterEntry rosterEntry) { String name = rosterEntry.getName(); if (name != null && name.length() > 0) { return name; } name = StringUtils.parseName(rosterEntry.getUser()); if (name.length() > 0) { return name; } return rosterEntry.getUser(); }
public static String toString(RosterEntry entry) { StringBuilder sb = new StringBuilder(); String name = entry.getName(); if (name != null && name.trim().length() > 0) { sb.append(Messages.DeleteContactAction_name_begin_deco) .append(name) .append(Messages.DeleteContactAction_name_end_deco); } sb.append(entry.getUser()); return sb.toString(); }
@Override public List<String> GetUsers() { if (connection == null) return users; Roster roster = connection.getRoster(); Collection<RosterEntry> entries = roster.getEntries(); users = new ArrayList<String>(); for (RosterEntry entry : entries) { users.add(entry.getUser()); System.out.println(entry); } return users; }
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; }
/** * @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); } }
private void removeOldRosterEntries() { Collection<RosterEntry> rosterEntries = roster.getEntries(); StringBuilder exclusion = new StringBuilder(RosterConstants.JID + " NOT IN ("); boolean first = true; for (RosterEntry rosterEntry : rosterEntries) { updateRosterEntryInDB(rosterEntry); if (first) first = false; else exclusion.append(","); exclusion.append("'").append(rosterEntry.getUser()).append("'"); } exclusion.append(")"); int count = contentResolver.delete(RosterProvider.CONTENT_URI, exclusion.toString(), null); }
private User addJabberUserToUserModelOrUpdateInfo(RosterEntry rosterEntry) { // System.out.println("rosterEntry.getName() = " + rosterEntry.getName()); // System.out.println("rosterEntry.getUser() = " + rosterEntry.getUser()); User user = myUserModel.createUser(getSimpleId(rosterEntry.getUser()), getName()); String newGroup = getUserGroup(rosterEntry); if (newGroup != null) { user.setGroup(newGroup, myUserModel); } user.setDisplayName(rosterEntry.getName(), myUserModel); myUserModel.addUser(user); String jabberId = getCurrentJabberID(user, rosterEntry); updateIsIDEtalkClient(jabberId, user); return user; }
public void runDeleteAction() { RosterEntry rosterEntry = null; List<RosterEntry> selectedRosterEntries = SelectionRetrieverFactory.getSelectionRetriever(RosterEntry.class).getSelection(); if (selectedRosterEntries.size() == 1) { rosterEntry = selectedRosterEntries.get(0); } if (rosterEntry == null) { LOG.error("RosterEntry should not be null at this point!"); // $NON-NLS-1$ return; } if (sessionManager != null) { // Is the chosen user currently in the session? ISarosSession sarosSession = sessionManager.getSarosSession(); String entryJid = rosterEntry.getUser(); if (sarosSession != null) { for (User p : sarosSession.getUsers()) { String pJid = p.getJID().getBase(); // If so, stop the deletion from completing if (entryJid.equals(pJid)) { MessageDialog.openError( null, Messages.DeleteContactAction_error_title, DELETE_ERROR_IN_SESSION); return; } } } } if (MessageDialog.openQuestion( null, Messages.DeleteContactAction_confirm_title, MessageFormat.format( Messages.DeleteContactAction_confirm_message, toString(rosterEntry)))) { try { XMPPUtils.removeFromRoster(connectionService.getConnection(), rosterEntry); } catch (XMPPException e) { LOG.error( "could not delete contact " + toString(rosterEntry) // $NON-NLS-1$ + ":", e); //$NON-NLS-1$ } } }
private void tryToRemoveRosterEntry(String user) throws ClientException { try { RosterEntry rosterEntry = roster.getEntry(user); if (rosterEntry != null) { Presence unsub = new Presence(Presence.Type.unsubscribed); unsub.setTo(rosterEntry.getUser()); extXMPPConnection.sendPacket(unsub); roster.removeEntry(rosterEntry); } } catch (XMPPException e) { throw new ClientException("tryToRemoveRosterEntry", e); } }
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; }
private void tryToRemoveRosterEntry(String user) throws YaximXMPPException { try { RosterEntry rosterEntry = mRoster.getEntry(user); if (rosterEntry != null) { // first, unsubscribe the user Presence unsub = new Presence(Presence.Type.unsubscribed); unsub.setTo(rosterEntry.getUser()); mXMPPConnection.sendPacket(unsub); // then, remove from roster mRoster.removeEntry(rosterEntry); } } catch (XMPPException e) { throw new YaximXMPPException("tryToRemoveRosterEntry", e); } }
private void removeRosterEntryFromGroups(RosterEntry rosterEntry) throws ClientException { Collection<RosterGroup> oldGroups = rosterEntry.getGroups(); for (RosterGroup group : oldGroups) { tryToRemoveUserFromGroup(group, rosterEntry); } }
// TODO: figure out what determines the presence of a RosterEntry's name field public void setActiveChatByName(String name) { Roster roster = connection.getRoster(); String activeUser = null; if (activeChat != null) { activeUser = activeChat.getParticipant(); int index = activeUser.indexOf("/"); // Log.d("Jane", "index: " + index); if (index >= 0) { activeUser = activeUser.substring(0, index); } if (!chatCache.containsKey(activeUser)) { Log.d("Jane", "Caching " + activeUser); chatCache.put(activeUser, activeChat); } } for (RosterEntry entry : roster.getEntries()) { String potentialName = entry.getName(); String email = entry.getUser(); Log.i("Chat", "Checking desired recipient: " + name + " against: " + potentialName); if (potentialName != null && potentialName.regionMatches(true, 0, name, 0, name.length())) { Log.i("Chat", "Setting active chat to " + potentialName + "/" + email); speak("Now talking to " + potentialName); if (chatCache.containsKey(email)) { activeChat = chatCache.get(email); } else { Log.d("Chat", "Chat cache did not contain key " + email); activeChat = connection.getChatManager().createChat(email, null); } return; } else if (email.contains(name)) { // maybe emails will be ok... Log.i("Chat", "Setting active chat to " + email); speak("Now talking to " + email); if (chatCache.containsKey(email)) { activeChat = chatCache.get(email); } else { activeChat = connection.getChatManager().createChat(email, null); } return; } } Log.i("Chat", "No friend matches " + name); speak("Sorry, but I couldn't find a friend named " + name); }
private void xmppRosterPost(XMPPConnection connection) { List<String> jidList = new LinkedList<String>(); System.err.println("INFO: Reading roster."); for (RosterEntry entry : connection.getRoster().getEntries()) { jidList.add(entry.getUser()); System.err.println("INFO: Got " + entry.getUser() + " from roster."); } System.err.println("INFO: Sending " + jidList.size() + " roster entries to server."); BuddylistIQ blIQ = new BuddylistIQ(); blIQ.setFrom(connection.getUser()); blIQ.setTo(this.androidbuddy); blIQ.setBuddies(jidList); blIQ.setIdentity(XMPPUtil.jidWithoutRessource(connection.getUser())); blIQ.setNetwork("roster"); blIQ.setType(IQ.Type.SET); connection.sendPacket(blIQ); }
@Nullable private static String getUserGroup(RosterEntry rosterEntry) { String group = null; for (RosterGroup rosterGroup : rosterEntry.getGroups()) { group = rosterGroup.getName(); } return group; }
public User setupUser(String uid, boolean addIfNotExists) { final RosterEntry re = mRoster.getEntry(StringUtils.parseBareAddress(uid)); if (re != null) { final User user = new User(re, mRoster.getPresence(re.getUser())); user.setAvatar(service.getAvatarService().getAvatar(user)); if (addIfNotExists) { setupUser(user); } return user; } else { Log.w(TAG, "creating Invalid user for: " + uid); final User u = new User(); u.setUserLogin(uid); u.setUserState(UserState.Invalid); return u; } }
/** * 根据RosterEntry创建一个User * * @param entry * @return */ public User transEntryToUser(RosterEntry entry, Roster roster) { User user = new User(); user.setJID(entry.getUser()); Presence presence = roster.getPresence(entry.getUser()); user.setFrom(presence.getFrom()); user.setStatus(presence.getStatus()); user.setAvailable(presence.isAvailable()); user.setType(entry.getType()); // user.setvCard(userManager.getUserVCard(entry.getUser())); if (entry.getName() == null) { // if(user.getvCard()==null) // user.setName(StringUtil.getUserNameByJid(entry.getUser())); // else { // user.setName(user.getvCard().getNickName()); // } user.setName(StringUtil.getUserNameByJid(entry.getUser())); } else { user.setName(entry.getName()); } String avatar = UserManager.saveAvatar(entry.getUser(), context); user.setAvatar_path(avatar); return user; }
/** * Returns a String that could be used by any user interacting modules for referring to this * contact. An alias is not necessarily unique but is often more human readable than an address * (or id). * * @return a String that can be used for referring to this contact when interacting with the user. */ public String getDisplayName() { if (isResolved) { String name = rosterEntry.getName(); if (name == null) name = getAddress(); return name; } else return tempId; }