Author: jerome
Date: 2009-05-25 14:45:53 +0200 (Mon, 25 May 2009)
New Revision: 4663

Modified:
   
software_suite_v2/software/gadgets/tuxdroid-gadget-facebook/trunk/tuxdroid-gadget-facebook/src/FacebookFunctions.java
   
software_suite_v2/software/gadgets/tuxdroid-gadget-facebook/trunk/tuxdroid-gadget-facebook/src/FacebookGadget.java
Log:
* Retrieving user notifications.

Modified: 
software_suite_v2/software/gadgets/tuxdroid-gadget-facebook/trunk/tuxdroid-gadget-facebook/src/FacebookFunctions.java
===================================================================
--- 
software_suite_v2/software/gadgets/tuxdroid-gadget-facebook/trunk/tuxdroid-gadget-facebook/src/FacebookFunctions.java
       2009-05-25 12:00:06 UTC (rev 4662)
+++ 
software_suite_v2/software/gadgets/tuxdroid-gadget-facebook/trunk/tuxdroid-gadget-facebook/src/FacebookFunctions.java
       2009-05-25 12:45:53 UTC (rev 4663)
@@ -1,10 +1,13 @@
 import java.io.IOException;
 import java.util.EnumSet;
+import java.util.Hashtable;
 import java.util.List;
 import java.util.Vector;
 
 import com.facebook.api.FacebookException;
 import com.facebook.api.ProfileField;
+import com.facebook.api.schema.Event;
+import com.facebook.api.schema.EventsGetResponse;
 import com.facebook.api.schema.FriendsGetResponse;
 import com.facebook.api.schema.User;
 import com.facebook.api.schema.UsersGetInfoResponse;
@@ -34,6 +37,7 @@
 public class FacebookFunctions {
 
        private FacebookConnection connection;
+       private Hashtable<String, Vector<String>> notifications = new 
Hashtable<String, Vector<String>>();
        
        /**
         * Class constructor.
@@ -42,6 +46,7 @@
        public FacebookFunctions(FacebookConnection connection)
        {
                this.connection = connection;
+               this.notifications = this.getUserNotification();
        }
        
        
@@ -49,7 +54,7 @@
         * Return the user friend list as Vector<String>.
         * @return
         */
-       private Vector<String> getFriends()
+       public Vector<String> getFriends()
        {
                Vector<String> friendsList = new Vector<String>();
                
@@ -83,4 +88,273 @@
                
                return friendsList;
        }
+       
+       
+       /**
+        * Gets all notifications.
+        */
+       private Hashtable<String, Vector<String>> getUserNotification() 
+       {
+               //Will contain all availables notifications.
+               //availables notifications : messages, pokes, shares, 
friends_requests, group_invites, event_invites
+               Hashtable<String, Vector<String>> notifications = new 
Hashtable<String, Vector<String>>();
+               
+               try
+               {
+                       connection.getClient().notifications_get();
+                       String notifs = connection.getClient().getRawResponse();
+                       
+                       /**
+                        * Getting messages notifications.
+                        */
+                       if(notifs.contains("<messages"))
+                       {
+                               String messagesString = notifs.substring(
+                                                               
notifs.indexOf("<messages"), 
+                                                               
notifs.indexOf("</messages>"));
+                               
+                               Vector<String> msDatas = new Vector<String>();
+                               
+                               String unreaded = messagesString.substring(
+                                                         
messagesString.indexOf("<unread>") + "<unread>".length(), 
+                                                         
messagesString.indexOf("</unread>"));
+                               
+                               msDatas.add(unreaded);
+                               
+                               
+                               if(Integer.valueOf(unreaded).intValue() > 0)
+                               {
+                                       notifications.put("messages", msDatas);
+                               }
+                       }
+                       
+                       /**
+                        * Getting pokes notifications.
+                        */
+                       if(notifs.contains("<pokes"))
+                       {
+                               String pokesString;
+                               
+                               try
+                               {
+                                       pokesString = 
notifs.substring(notifs.indexOf("<pokes"), notifs.indexOf("</pokes>"));
+                               }
+                               catch(IndexOutOfBoundsException indexError)
+                               {
+                                       pokesString = 
notifs.substring(notifs.indexOf("<pokes"), notifs.indexOf("/>"));
+                               }
+                               
+                               Vector<String> pkDatas = new Vector<String>();
+                               
+                               String unreaded = pokesString.substring(
+                                                         
pokesString.indexOf("<unread>") + "<unread>".length(), 
+                                                         
pokesString.indexOf("</unread>"));
+                               
+                               pkDatas.add(unreaded);
+                               
+                               if(Integer.valueOf(unreaded).intValue() > 0 )
+                               {
+                                       notifications.put("pokes", pkDatas);
+                               }
+                       }
+                       
+                       /**
+                        * Getting shares notifications.
+                        */
+                       if(notifs.contains("<shares"))
+                       {
+                               String sharesString;
+                               
+                               try
+                               {
+                                       sharesString = 
notifs.substring(notifs.indexOf("<shares"), notifs.indexOf("</shares>"));
+                               }
+                               catch(IndexOutOfBoundsException indexError)
+                               {
+                                       sharesString = 
notifs.substring(notifs.indexOf("<shares"), notifs.indexOf("/>"));
+                               }
+                               
+                               Vector<String> shDatas = new Vector<String>();
+                               
+                               String unreaded = sharesString.substring(
+                                                         
sharesString.indexOf("<unread>") + "<unread>".length(), 
+                                                         
sharesString.indexOf("</unread>"));
+                               
+                               shDatas.add(unreaded);
+                               
+                               if(Integer.valueOf(unreaded).intValue() > 0)
+                               {
+                                       notifications.put("shares", shDatas);
+                               }
+                       }
+                       
+                       /**
+                        * Get the friend_requests notifications.
+                        */
+                       if(notifs.contains("<friend_requests"))
+                       {
+                               String friendsString = 
notifs.substring(notifs.indexOf("<friend_requests"), 
notifs.indexOf("</friend_requests>"));
+                               Vector<String> friendsDatas = new 
Vector<String>();
+                               Vector<Long> friendsDatasAsLong = new 
Vector<Long>();
+                               
+                               //Getting friends uid that ask for friends.
+                               if(friendsString.contains("<uid>"))
+                               {
+                                       while(friendsString.contains("<uid>"))
+                                       {
+                                               String friend = 
friendsString.substring(
+                                                                       
friendsString.indexOf("<uid>") + "<uid>".length(), 
+                                                                       
friendsString.indexOf("</uid>"));
+                                               
+                                               friendsString = 
friendsString.replace("<uid>" + friend + "</uid>", "");
+                                               
+                                               
friendsDatasAsLong.add(Long.valueOf(friend).longValue());
+                                       }
+                               
+                               
+                                       // Go fetch the information for the 
user list of user ids
+                                       
connection.getClient().users_getInfo(friendsDatasAsLong, 
EnumSet.of(ProfileField.NAME));
+       
+                                       UsersGetInfoResponse userResponse = 
(UsersGetInfoResponse) connection.getClient().getResponsePOJO();
+       
+                                       // Print out the user information
+                                       List<User> users = 
userResponse.getUser();
+                                       for (User user : users) 
+                                       {
+                                               
friendsDatas.add(user.getName());
+                                       }
+                                       
+                                       notifications.put("friend_requests", 
friendsDatas);
+                               }
+                       }
+                       
+                       /**
+                        * Getting new groups invitations.
+                        */
+                       if(notifs.contains("<group_invites"))
+                       {
+                               String groupString;
+                               
+                               try
+                               {
+                                       groupString = 
notifs.substring(notifs.indexOf("<group_invites"), 
notifs.indexOf("</group_invites>"));
+                               }
+                               catch(IndexOutOfBoundsException indexError)
+                               {
+                                       groupString = 
notifs.substring(notifs.indexOf("<group_invites"), notifs.indexOf("/>", 
notifs.indexOf("<group_invites")));
+                               }
+                               
+                               Vector<Long> groupsDatasAsLong = new 
Vector<Long>();
+                               Vector<String> groupsDatas = new 
Vector<String>();
+                               
+                               //Getting friends uid that ask for friends.
+                               if(groupString.contains("<gid>"))
+                               {
+                                       while(groupString.contains("<gid>"))
+                                       {
+                                               String friend = 
groupString.substring(
+                                                                       
groupString.indexOf("<gid>") + "<gid>".length(), 
+                                                                       
groupString.indexOf("</gid>"));
+                                               
+                                               groupString = 
groupString.replace("<gid>" + friend + "</gid>", "");
+                                               
+                                               
groupsDatasAsLong.add(Long.valueOf(friend).longValue());
+                                       }
+                                       
+                                       
groupsDatas.add(String.valueOf(groupsDatasAsLong.size()));
+                                       
+                                       for(Long gid : groupsDatasAsLong)
+                                       {
+                                               try
+                                               {
+                                                       
connection.getClient().fql_query("Select name from group WHERE gid=" + 
gid.longValue());
+                                                       String response = 
connection.getClient().getRawResponse();
+                                                       
if(response.contains("<group>") && response.contains("<name>"))
+                                                       {
+                                                               String 
groupName = response.substring(
+                                                                               
           response.indexOf("<name>") + "<name>".length(),
+                                                                               
           response.indexOf("</name>", response.indexOf("<name>")));
+                                                               
groupsDatas.add(groupName);
+                                                       }
+                                               }
+                                               catch(Exception fqlError)
+                                               {
+                                                       
groupsDatas.add("Unknown group");
+                                               }
+                                       }
+                                       
+                                       //Only if they have some group invites.
+                                       if(groupsDatasAsLong.size() > 0)
+                                       {
+                                               
notifications.put("group_invites", groupsDatas);
+                                       }
+                               }
+                       }
+                       
+                       /**
+                        * Getting new events invitations.
+                        */
+                       if(notifs.contains("<event_invites"))
+                       {
+                               String eventString = "";
+                               try
+                               {
+                                       eventString = 
notifs.substring(notifs.indexOf("<event_invites"), notifs.indexOf("/>", 
notifs.indexOf("<event_invites")));
+                               }
+                               catch(IndexOutOfBoundsException indexError)
+                               {
+                                       eventString = 
notifs.substring(notifs.indexOf("<event_invites"), 
notifs.indexOf("</event_invites>"));
+                               }
+                               
+                               Vector<Long> eventsDatasAsLong = new 
Vector<Long>();
+                               Vector<String> eventsDatas = new 
Vector<String>();
+                               
+                               //Getting friends uid that ask for friends.
+                               if(eventString.contains("<eid>"))
+                               {
+                                       while(eventString.contains("<eid>"))
+                                       {
+                                               String friend = 
eventString.substring(
+                                                                       
eventString.indexOf("<eid>") + "<eid>".length(), 
+                                                                       
eventString.indexOf("</eid>"));
+                                               
+                                               eventString = 
eventString.replace("<eid>" + friend + "</eid>", "");
+                                               
+                                               
eventsDatasAsLong.add(Long.valueOf(friend).longValue());
+                                       }
+                                       
+                                       //Getting events names.
+                                       
connection.getClient().events_get(connection.getFacebookUserId(), 
eventsDatasAsLong, Long.valueOf(0), Long.valueOf(0));
+                                       EventsGetResponse response = 
(EventsGetResponse) connection.getClient().getResponsePOJO();
+                                       List<Event> events = 
response.getEvent();
+                                       
+                                       //Adding the number of event invites.
+                                       
eventsDatas.add(String.valueOf(eventsDatasAsLong.size()));
+                                       
+                                       for(Event event : events)
+                                       {
+                                               
if(eventsDatasAsLong.contains(event.getEid()))
+                                               {
+                                                       
eventsDatas.add(event.getName());
+                                               }
+                                       }
+                                       
+                                       if(eventsDatasAsLong.size() > 0)
+                                       {
+                                               
notifications.put("event_invites", eventsDatas);
+                                       }
+                               }
+                       }
+               }
+               catch (FacebookException e) 
+               {
+                       e.printStackTrace();
+               } 
+               catch (IOException e) 
+               {
+                       e.printStackTrace();
+               }
+               
+               return notifications;
+       }
 }

Modified: 
software_suite_v2/software/gadgets/tuxdroid-gadget-facebook/trunk/tuxdroid-gadget-facebook/src/FacebookGadget.java
===================================================================
--- 
software_suite_v2/software/gadgets/tuxdroid-gadget-facebook/trunk/tuxdroid-gadget-facebook/src/FacebookGadget.java
  2009-05-25 12:00:06 UTC (rev 4662)
+++ 
software_suite_v2/software/gadgets/tuxdroid-gadget-facebook/trunk/tuxdroid-gadget-facebook/src/FacebookGadget.java
  2009-05-25 12:45:53 UTC (rev 4663)
@@ -41,6 +41,11 @@
         */
        public static class Configuration extends SimpleGadgetConfiguration{
                
+               private boolean showFriendRequests = true;
+               private boolean showGroupsInvites = true;
+               private boolean showEventsInvites = true;
+               private boolean showPokes = true;
+               private boolean notifyEmail = true;
        }
 
        /**


------------------------------------------------------------------------------
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
is a gathering of tech-side developers & brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing, & 
iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian
Group, R/GA, & Big Spaceship. http://www.creativitycat.com 
_______________________________________________
Tux-droid-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tux-droid-svn

Reply via email to