src/com/beem/project/beem/BeemService.java
changeset 925 6a4029cc7882
parent 924 5aece2c91bef
child 926 7c079b0f146a
--- a/src/com/beem/project/beem/BeemService.java	Thu Dec 29 22:40:40 2011 +0100
+++ b/src/com/beem/project/beem/BeemService.java	Thu Jan 05 22:12:25 2012 +0100
@@ -43,14 +43,22 @@
  */
 package com.beem.project.beem;
 
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.jivesoftware.smack.Connection;
 import org.jivesoftware.smack.Roster;
 import org.jivesoftware.smack.Roster.SubscriptionMode;
+import org.jivesoftware.smack.SmackConfiguration;
 import org.jivesoftware.smack.XMPPConnection;
 import org.jivesoftware.smack.XMPPException;
 import org.jivesoftware.smack.provider.ProviderManager;
+import org.jivesoftware.smackx.PrivateDataManager;
+import org.jivesoftware.smackx.bookmark.BookmarkManager;
+import org.jivesoftware.smackx.bookmark.BookmarkedConference;
+import org.jivesoftware.smackx.muc.DiscussionHistory;
+import org.jivesoftware.smackx.muc.MultiUserChat;
 import org.jivesoftware.smackx.packet.ChatStateExtension;
 import org.jivesoftware.smackx.provider.DelayInfoProvider;
 import org.jivesoftware.smackx.provider.DiscoverInfoProvider;
@@ -285,43 +293,66 @@
 	//         pep.registerPEPParserExtension("urn:xmpp:avatar:metadata", avaMeta);
 	//         pm.addExtensionProvider("event", "http://jabber.org/protocol/pubsub#event", pep);
 
-	/*
-	 * // Private Data Storage pm.addIQProvider("query", "jabber:iq:private", new
-	 * PrivateDataManager.PrivateDataIQProvider()); // Time try { pm.addIQProvider("query", "jabber:iq:time",
-	 * Class.forName("org.jivesoftware.smackx.packet.Time")); } catch (ClassNotFoundException e) {
-	 * Log.w("TestClient", "Can't load class for org.jivesoftware.smackx.packet.Time"); } // Roster Exchange
-	 * pm.addExtensionProvider("x", "jabber:x:roster", new RosterExchangeProvider()); // Message Events
-	 * pm.addExtensionProvider("x", "jabber:x:event", new MessageEventProvider()); // XHTML
-	 * pm.addExtensionProvider("html", "http://jabber.org/protocol/xhtml-im", new XHTMLExtensionProvider()); //
-	 * Group Chat Invitations pm.addExtensionProvider("x", "jabber:x:conference", new
-	 * GroupChatInvitation.Provider()); // Data Forms pm.addExtensionProvider("x", "jabber:x:data", new
-	 * DataFormProvider()); // MUC User pm.addExtensionProvider("x", "http://jabber.org/protocol/muc#user", new
-	 * MUCUserProvider()); // MUC Admin pm.addIQProvider("query", "http://jabber.org/protocol/muc#admin", new
-	 * MUCAdminProvider()); // MUC Owner pm.addIQProvider("query", "http://jabber.org/protocol/muc#owner", new
-	 * MUCOwnerProvider()); // Version try { pm.addIQProvider("query", "jabber:iq:version",
-	 * Class.forName("org.jivesoftware.smackx.packet.Version")); } catch (ClassNotFoundException e) { // Not sure
-	 * what's happening here. Log.w("TestClient", "Can't load class for org.jivesoftware.smackx.packet.Version"); }
-	 * // VCard pm.addIQProvider("vCard", "vcard-temp", new VCardProvider()); // Offline Message Requests
-	 * pm.addIQProvider("offline", "http://jabber.org/protocol/offline", new OfflineMessageRequest.Provider()); //
-	 * Offline Message Indicator pm.addExtensionProvider("offline", "http://jabber.org/protocol/offline", new
-	 * OfflineMessageInfo.Provider()); // Last Activity pm.addIQProvider("query", "jabber:iq:last", new
-	 * LastActivity.Provider()); // User Search pm.addIQProvider("query", "jabber:iq:search", new
-	 * UserSearch.Provider()); // SharedGroupsInfo pm.addIQProvider("sharedgroup",
-	 * "http://www.jivesoftware.org/protocol/sharedgroup", new SharedGroupsInfo.Provider()); // JEP-33: Extended
-	 * Stanza Addressing pm.addExtensionProvider("addresses", "http://jabber.org/protocol/address", new
-	 * MultipleAddressesProvider()); // FileTransfer pm.addIQProvider("si", "http://jabber.org/protocol/si", new
-	 * StreamInitiationProvider()); pm.addIQProvider("query", "http://jabber.org/protocol/bytestreams", new
-	 * BytestreamsProvider()); pm.addIQProvider("open", "http://jabber.org/protocol/ibb", new IBBProviders.Open());
-	 * pm.addIQProvider("close", "http://jabber.org/protocol/ibb", new IBBProviders.Close());
-	 * pm.addExtensionProvider("data", "http://jabber.org/protocol/ibb", new IBBProviders.Data());
-	 * pm.addIQProvider("command", COMMAND_NAMESPACE, new AdHocCommandDataProvider());
-	 * pm.addExtensionProvider("malformed-action", COMMAND_NAMESPACE, new
-	 * AdHocCommandDataProvider.MalformedActionError()); pm.addExtensionProvider("bad-locale", COMMAND_NAMESPACE,
-	 * new AdHocCommandDataProvider.BadLocaleError()); pm.addExtensionProvider("bad-payload", COMMAND_NAMESPACE, new
-	 * AdHocCommandDataProvider.BadPayloadError()); pm.addExtensionProvider("bad-sessionid", COMMAND_NAMESPACE, new
-	 * AdHocCommandDataProvider.BadSessionIDError()); pm.addExtensionProvider("session-expired", COMMAND_NAMESPACE,
-	 * new AdHocCommandDataProvider.SessionExpiredError());
-	 */
+	// Private Data Storage for Bookmarks	
+	pm.addIQProvider("query", "jabber:iq:private", new PrivateDataManager.PrivateDataIQProvider());
+
+	// Time 
+	//	try {
+	//	    pm.addIQProvider("query", "jabber:iq:time", Class.forName("org.jivesoftware.smackx.packet.Time"));
+	//	} catch (ClassNotFoundException e) {
+	//	    Log.w("TestClient", "Can't load class for org.jivesoftware.smackx.packet.Time");
+	//	}
+	//	// Roster Exchange
+	//	pm.addExtensionProvider("x", "jabber:x:roster", new RosterExchangeProvider());
+	//	// Message Events
+	//	pm.addExtensionProvider("x", "jabber:x:event", new MessageEventProvider());
+	//	// XHTML
+	//	pm.addExtensionProvider("html", "http://jabber.org/protocol/xhtml-im", new XHTMLExtensionProvider());
+	//	//Group Chat Invitations 
+	//	pm.addExtensionProvider("x", "jabber:x:conference", new GroupChatInvitation.Provider());
+	//	// Data Forms 
+	//	pm.addExtensionProvider("x", "jabber:x:data", new DataFormProvider()); // MUC User 
+	//	pm.addExtensionProvider("x", "http://jabber.org/protocol/muc#user", new MUCUserProvider());
+	//	// MUC Admin 
+	//	pm.addIQProvider("query", "http://jabber.org/protocol/muc#admin", new MUCAdminProvider());
+	//	// MUC Owner 
+	//	pm.addIQProvider("query", "http://jabber.org/protocol/muc#owner", new MUCOwnerProvider());
+	//	// Version 
+	//	try {
+	//	    pm.addIQProvider("query", "jabber:iq:version", Class.forName("org.jivesoftware.smackx.packet.Version"));
+	//	} catch (ClassNotFoundException e) {
+	//	    // Not sure what's happening here. 
+	//	    Log.w("TestClient", "Can't load class for org.jivesoftware.smackx.packet.Version");
+	//	}
+	//	// VCard 
+	//	pm.addIQProvider("vCard", "vcard-temp", new VCardProvider());
+	//	// Offline Message Requests
+	//	pm.addIQProvider("offline", "http://jabber.org/protocol/offline", new OfflineMessageRequest.Provider());
+	//	// Offline Message Indicator 
+	//	pm.addExtensionProvider("offline", "http://jabber.org/protocol/offline", new OfflineMessageInfo.Provider());
+	//	// Last Activity 
+	//	pm.addIQProvider("query", "jabber:iq:last", new LastActivity.Provider());
+	//	// User Search 
+	//	pm.addIQProvider("query", "jabber:iq:search", new UserSearch.Provider());
+	//	// SharedGroupsInfo 
+	//	pm.addIQProvider("sharedgroup", "http://www.jivesoftware.org/protocol/sharedgroup",
+	//	    new SharedGroupsInfo.Provider());
+	//	// JEP-33: Extended  Stanza Addressing 
+	//	pm.addExtensionProvider("addresses", "http://jabber.org/protocol/address", new MultipleAddressesProvider());
+	// FileTransfer 
+	//	pm.addIQProvider("si", "http://jabber.org/protocol/si", new StreamInitiationProvider());
+	//	pm.addIQProvider("query", "http://jabber.org/protocol/bytestreams", new BytestreamsProvider());
+	//	pm.addIQProvider("open", "http://jabber.org/protocol/ibb", new IBBProviders.Open());
+	//	pm.addIQProvider("close", "http://jabber.org/protocol/ibb", new IBBProviders.Close());
+	//	pm.addExtensionProvider("data", "http://jabber.org/protocol/ibb", new IBBProviders.Data());
+	//	pm.addIQProvider("command", COMMAND_NAMESPACE, new AdHocCommandDataProvider());
+	//	pm.addExtensionProvider("malformed-action", COMMAND_NAMESPACE,
+	//	    new AdHocCommandDataProvider.MalformedActionError());
+	//	pm.addExtensionProvider("bad-locale", COMMAND_NAMESPACE, new AdHocCommandDataProvider.BadLocaleError());
+	//	pm.addExtensionProvider("bad-payload", COMMAND_NAMESPACE, new AdHocCommandDataProvider.BadPayloadError());
+	//	pm.addExtensionProvider("bad-sessionid", COMMAND_NAMESPACE, new AdHocCommandDataProvider.BadSessionIDError());
+	//	pm.addExtensionProvider("session-expired", COMMAND_NAMESPACE,
+	//	    new AdHocCommandDataProvider.SessionExpiredError());
     }
 
     /**
@@ -535,7 +566,32 @@
 
 	    }
 	}
-	//TODO: ADD MESSAGE TO CONFIRM CONNECTION OF THE ACCOUNT
+	if (mConnection.containsKey(accountName)) {
+	    Connection xmppCo = mConnection.get(accountName).getAdaptee();
+	    Collection<BookmarkedConference> list = null;
+	    try {		
+		BookmarkManager bm = BookmarkManager.getBookmarkManager(xmppCo);
+		list = bm.getBookmarkedConferences();
+	    } catch (XMPPException e) {
+		Log.e(TAG, "BookmarkManager", e);
+	    }
+	    for (BookmarkedConference bookmarkedConference : list) {
+		Log.e("TAG + BOOKMARK", bookmarkedConference.getName());
+		// Create a MultiUserChat using a Connection for a room
+		MultiUserChat muc2 = new MultiUserChat(xmppCo, bookmarkedConference.getJid());
+
+		// User2 joins the new room using a password and specifying
+		// the amount of history to receive. In this example we are requesting the last 5 messages.
+		DiscussionHistory history = new DiscussionHistory();
+		history.setMaxStanzas(5);
+		try {
+		    muc2.join(bookmarkedConference.getNickname(), bookmarkedConference.getPassword(), history, SmackConfiguration.getPacketReplyTimeout());
+		} catch (XMPPException e) {
+		    Log.e(TAG, "MUC Join Problem", e);
+		}
+	    }
+	}
+	//TODO: ADD MESSAGE || TOAST TO CONFIRM CONNECTION OF THE ACCOUNT
 	sendBroadcast(res);
     }