package org.wordpress.android.ui.stats.models; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import org.wordpress.android.ui.stats.StatsConstants; import java.util.ArrayList; import java.util.List; public class CommentsModel extends BaseStatsModel { private String mDate; private long mBlogID; private int mMonthlyComments; private int mTotalComments; private String mMostActiveDay; private String mMostActiveTime; private SingleItemModel mMostCommentedPost; private List<StatsPostModel> mPosts; private List<AuthorModel> mAuthors; public CommentsModel(long blogID, JSONObject response) throws JSONException { this.mBlogID = blogID; this.mDate = response.getString("date"); this.mMonthlyComments = response.getInt("monthly_comments"); this.mTotalComments = response.getInt("total_comments"); this.mMostActiveDay = response.getString("most_active_day"); this.mMostActiveTime = response.getString("most_active_time"); JSONArray postsJSONArray = response.optJSONArray("posts"); if (postsJSONArray != null) { mPosts = new ArrayList<>(postsJSONArray.length()); for (int i = 0; i < postsJSONArray.length(); i++) { JSONObject currentPostJSON = postsJSONArray.getJSONObject(i); String itemID = String.valueOf(currentPostJSON.getInt("id")); String name = currentPostJSON.getString("name"); int totals = currentPostJSON.getInt("comments"); String link = currentPostJSON.getString("link"); StatsPostModel currentPost = new StatsPostModel(blogID, mDate, itemID, name, totals, link, StatsConstants.ITEM_TYPE_POST); mPosts.add(currentPost); } } JSONArray authorsJSONArray = response.optJSONArray("authors"); if (authorsJSONArray != null) { mAuthors = new ArrayList<>(authorsJSONArray.length()); for (int i = 0; i < authorsJSONArray.length(); i++) { JSONObject currentAuthorJSON = authorsJSONArray.getJSONObject(i); String name = currentAuthorJSON.getString("name"); int comments = currentAuthorJSON.getInt("comments"); String url = currentAuthorJSON.getString("link"); String gravatar = currentAuthorJSON.getString("gravatar"); JSONObject followData = currentAuthorJSON.optJSONObject("follow_data"); AuthorModel currentAuthor = new AuthorModel(blogID, mDate, url, name, gravatar, comments, followData); mAuthors.add(currentAuthor); } } } public long getBlogID() { return mBlogID; } public void setBlogID(long blogID) { this.mBlogID = blogID; } public String getDate() { return mDate; } public void setDate(String date) { this.mDate = date; } public List<StatsPostModel> getPosts() { return this.mPosts; } public List<AuthorModel> getAuthors() { return this.mAuthors; } public int getTotalComments() { return mTotalComments; } public int getMonthlyComments() { return mMonthlyComments; } public String getMostActiveDay() { return mMostActiveDay; } public String getMostActiveTime() { return mMostActiveTime; } public SingleItemModel getMostCommentedPost() { return mMostCommentedPost; } }