/****************************** Constructor **********************************/
 public DataLoader(string dbPath) 
 {
     this.dbAdapter = new SQLiteAdapter(dbPath);
     long egoID = long.Parse(Path.GetFileNameWithoutExtension(dbPath));
     egoUser = new User(egoID);
     numOfFriend = 0;
 }
        /*******************************************************************************/
        /***************************** Primary Methods *********************************/
        /*******************************************************************************/
        // Ego User and Followee Inforamtion
        public void setEgoNetwork()
        {
            // Ego User Information
            egoUser.setFolloweeList(dbAdapter.getFolloweeList(egoUser));
            egoUser.setPublishedTweets(dbAdapter.getPublishedTweets(egoUser));
            egoUser.setRetweets(dbAdapter.getRetweetList(egoUser));
            egoUser.setQuotes(dbAdapter.getQuoteList(egoUser));
            egoUser.setFavorites(dbAdapter.getFavoriteList(egoUser));
            egoUser.updateLikedTweets();

            // Followee Information
            followeeTable = new Hashtable();
            HashSet<long> followeeList = egoUser.getFolloweeList();
            foreach (long followeeID in followeeList)
            {
                User followee = new User(followeeID);
                followee.setFolloweeList(dbAdapter.getFolloweeList(followee));
                followee.setPublishedTweets(dbAdapter.getPublishedTweets(followee));
                followee.setRetweets(dbAdapter.getRetweetList(followee));
                followee.setQuotes(dbAdapter.getQuoteList(followee));
                followee.setFavorites(dbAdapter.getFavoriteList(followee));
                followee.updateLikedTweets();

                if (Program.isOnlyFriendInEgoNetwork == true)
                {
                    // CASE 1: Only Friends
                    if (egoUser.isFriend(followee))
                    {
                        followeeTable.Add(followee.ID, followee);
                        this.numOfFriend++;
                    }
                }
                else
                {
                    // CASE 2: All of followees including friends
                    followeeTable.Add(followee.ID, followee);
                    if (egoUser.isFriend(followee))
                        this.numOfFriend++;
                }
            }

            // Member table: egoUser U followee
            memberTable = new Hashtable();
            memberTable.Add(egoUser.ID, egoUser);
            ICollection followees = followeeTable.Values;
            foreach(User followee in followees)
            {
                memberTable.Add(followee.ID, followee);
            }
        }
 // Tweets retweeted by 'userId'
 public HashSet<long> getRetweetList(User user)
 {
     HashSet<long> retweetList = new HashSet<long>();
     using (SQLiteCommand cmd = new SQLiteCommand(conn))
     {
         cmd.CommandText = "SELECT tweet FROM retweet WHERE user = " + user.ID;
         using (SQLiteDataReader reader = cmd.ExecuteReader())
         {
             while (reader.Read())
             {
                 long tweet = (long)reader.GetValue(0);
                 retweetList.Add(tweet);
             }
         }
     }
     return retweetList;
 }
 // Tweets published by 'user'
 public HashSet<long> getPublishedTweets(User user)
 {
     HashSet<long> publishedTweetList = new HashSet<long>();
     using (SQLiteCommand cmd = new SQLiteCommand(conn))
     {
         cmd.CommandText = "SELECT id FROM tweet WHERE author = " + user.ID;
         using (SQLiteDataReader reader = cmd.ExecuteReader())
         {
             while (reader.Read())
             {
                 long tweet = (long)reader.GetValue(0);
                 publishedTweetList.Add(tweet);
             }
         }
     }
     return publishedTweetList;
 }
 /*******************************************************************************/
 /***************************** Primary Methods *********************************/
 /*******************************************************************************/
 // Followee list of 'userId'
 public HashSet<long> getFolloweeList(User user)
 {
     HashSet<long> followeeList = new HashSet<long>();
     using (SQLiteCommand cmd = new SQLiteCommand(conn))
     {
         cmd.CommandText = "SELECT target FROM follow WHERE source = " + user.ID;
         using (SQLiteDataReader reader = cmd.ExecuteReader())
         {
             while (reader.Read())
             {
                 long followee = (long)reader.GetValue(0);
                 followeeList.Add(followee);
             }
         }
     }
     return followeeList;
 }
Example #6
0
 public bool isFriend(User otherUser)
 {
     return (this.followeeList.Contains(otherUser.ID) && otherUser.followeeList.Contains(this.ID));
 }