/****************************** 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; }
public bool isFriend(User otherUser) { return (this.followeeList.Contains(otherUser.ID) && otherUser.followeeList.Contains(this.ID)); }