| package org.wordpress.android.models; |
| |
| import org.json.JSONArray; |
| import org.json.JSONObject; |
| import org.wordpress.android.ui.reader.models.ReaderBlogIdPostId; |
| |
| import java.util.ArrayList; |
| |
| public class ReaderPostList extends ArrayList<ReaderPost> { |
| |
| public static ReaderPostList fromJson(JSONObject json) { |
| if (json == null) { |
| throw new IllegalArgumentException("null json post list"); |
| } |
| |
| ReaderPostList posts = new ReaderPostList(); |
| JSONArray jsonPosts = json.optJSONArray("posts"); |
| if (jsonPosts != null) { |
| for (int i = 0; i < jsonPosts.length(); i++) { |
| posts.add(ReaderPost.fromJson(jsonPosts.optJSONObject(i))); |
| } |
| } |
| |
| return posts; |
| } |
| |
| @Override |
| public Object clone() { |
| return super.clone(); |
| } |
| |
| public int indexOfPost(ReaderPost post) { |
| if (post == null) { |
| return -1; |
| } |
| for (int i = 0; i < size(); i++) { |
| if (this.get(i).postId == post.postId) { |
| if (post.isExternal && post.feedId == this.get(i).feedId) { |
| return i; |
| } else if (!post.isExternal && post.blogId == this.get(i).blogId) { |
| return i; |
| } |
| } |
| } |
| return -1; |
| } |
| |
| public int indexOfIds(ReaderBlogIdPostId ids) { |
| if (ids == null) { |
| return -1; |
| } |
| for (int i = 0; i < size(); i++) { |
| if (this.get(i).hasIds(ids)) { |
| return i; |
| } |
| } |
| return -1; |
| } |
| |
| /* |
| * does passed list contain the same posts as this list? |
| */ |
| public boolean isSameList(ReaderPostList posts) { |
| if (posts == null || posts.size() != this.size()) { |
| return false; |
| } |
| |
| for (ReaderPost post: posts) { |
| int index = indexOfPost(post); |
| if (index == -1 || !post.isSamePost(this.get(index))) { |
| return false; |
| } |
| } |
| |
| return true; |
| } |
| |
| /* |
| * returns posts in this list which are in the passed blog |
| */ |
| public ReaderPostList getPostsInBlog(long blogId) { |
| ReaderPostList postsInBlog = new ReaderPostList(); |
| for (ReaderPost post: this) { |
| if (post.blogId == blogId) { |
| postsInBlog.add(post); |
| } |
| } |
| return postsInBlog; |
| } |
| } |