void Wall::parseWall(string input) { int i = 0; string token; struct tm timeStruct; WallPost temp = WallPost(); istringstream iss(input); while (getline(iss, token)) { if ((i % 3) == 0) { temp.setPost(token); } else if ((i % 3) == 1) { strptime(token.c_str(), "%a %b %d %T %Y", &timeStruct); time_t _postTime = mktime(&timeStruct); temp.setTime(_postTime); } else if ((i % 3) == 2) { temp.setMood(token); addPost(temp); } i++; } }
WallPost Wall::DeletePost(int idx_del) { WallPost copy = wall_posts.get(idx_del); if (copy.IsResponse()) { WallPost* parent = copy.GetParent(); parent->DeleteResponse(copy); } wall_posts.remove(idx_del); return copy; }
void Wall::ConstructPostResponseRelationship(User* user) { DoublyLinkedList<WallPost>::iterator it; WallPost* parent = NULL; for (it = wall_posts.begin(); it != wall_posts.end(); it++) { if ((*it).IsResponse()) { (*it).SetParent(parent); parent->AddResponse(&(*it)); } else { parent = &(*it); } if ((*it).GetAuthorUsername() != user->GetUserName()) { User* ptr = user->QueryFriend((*it).GetAuthorUsername()); ptr->Remember(user->GetUserName(), *it); } } }
std::string WallPost::getIthResponseString(int i) { std::string ret; char s[1000]; if( (i<0) || (i>(responseList.size()-1))) { throw -1; } WallPost wp = responseList[i]; ret += wp.getAuthor(); time_t postTime = wp.getPostTime(); struct tm * p = localtime(&postTime); strftime(s, 1000, "%A, %B %d %Y", p); ret += " [" + std::string(s) + "]: "; ret += wp.getPostText(); return ret; }
void Wall::AddResponseToPost(int post_index, WallPost& post) { WallPost* parent = &(wall_posts.get(post_index - 1)); if (parent->IsResponse()){ parent = parent->GetParent(); } post.SetParent(parent); post.SetDomainName(username); parent->AddResponse(&post); wall_posts.insert(post_index, post); }
void Wall::CreateWallFromString(string data) { size_t cur_pos = data.find("DOMAIN_NAME", 0); if (cur_pos == string::npos) { cout << "No post data found." << endl; return; } size_t next_pos = data.find("DOMAIN_NAME", cur_pos+1); string post_data; while (next_pos != string::npos) { post_data = data.substr(cur_pos, next_pos - cur_pos); WallPost post = WallPost(); post.SetAuthorUsername(username); post.ConstructFromString(post_data); wall_posts.insert(wall_posts.size(), post); cur_pos = next_pos; next_pos = data.find("DOMAIN_NAME", cur_pos + 1); } post_data = data.substr(cur_pos, data.length()); WallPost post = WallPost(); post.SetAuthorUsername(username); post.ConstructFromString(post_data); wall_posts.insert(wall_posts.size(),post); }
void Wall::AddPost(int pos, WallPost wall_post) { wall_post.SetDomainName(username); wall_posts.insert(pos, wall_post); }
void Wall::AddPost(WallPost wall_post) { wall_post.SetDomainName(username); wall_posts.insert(wall_posts.size(), wall_post); }
bool operator==(const WallPost& left, const WallPost& right) { return (left.getContent() == right.getContent() && left.getAuthor() == right.getAuthor() && left.getTimePosted() == right.getTimePosted()); }