aboutsummaryrefslogtreecommitdiff
path: root/WordPress/src/main/java/org/wordpress/android/models/CommentList.java
diff options
context:
space:
mode:
Diffstat (limited to 'WordPress/src/main/java/org/wordpress/android/models/CommentList.java')
-rw-r--r--WordPress/src/main/java/org/wordpress/android/models/CommentList.java107
1 files changed, 107 insertions, 0 deletions
diff --git a/WordPress/src/main/java/org/wordpress/android/models/CommentList.java b/WordPress/src/main/java/org/wordpress/android/models/CommentList.java
new file mode 100644
index 000000000..6942e3f86
--- /dev/null
+++ b/WordPress/src/main/java/org/wordpress/android/models/CommentList.java
@@ -0,0 +1,107 @@
+package org.wordpress.android.models;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.ArrayList;
+
+public class CommentList extends ArrayList<Comment> {
+ public int indexOfCommentId(long commentId) {
+ for (int i=0; i < this.size(); i++) {
+ if (commentId==this.get(i).commentID)
+ return i;
+ }
+ return -1;
+ }
+
+ /*
+ * replace comments in this list that match the passed list
+ */
+ public void replaceComments(final CommentList comments) {
+ if (comments == null || comments.size() == 0)
+ return;
+ for (Comment comment: comments) {
+ int index = indexOfCommentId(comment.commentID);
+ if (index > -1)
+ set(index, comment);
+ }
+ }
+
+ /*
+ * delete comments in this list that match the passed list
+ */
+ public void deleteComments(final CommentList comments) {
+ if (comments == null || comments.size() == 0)
+ return;
+ for (Comment comment: comments) {
+ int index = indexOfCommentId(comment.commentID);
+ if (index > -1)
+ remove(index);
+ }
+ }
+
+ /*
+ * returns true if any comments in this list have the passed status
+ */
+ public boolean hasAnyWithStatus(CommentStatus status) {
+ for (Comment comment: this) {
+ if (comment.getStatusEnum().equals(status))
+ return true;
+ }
+ return false;
+ }
+
+ /*
+ * returns true if any comments in this list do NOT have the passed status
+ */
+ public boolean hasAnyWithoutStatus(CommentStatus status) {
+ for (Comment comment: this) {
+ if (!comment.getStatusEnum().equals(status))
+ return true;
+ }
+ return false;
+ }
+
+ /*
+ * does passed list contain the same comments as this list?
+ */
+ public boolean isSameList(CommentList comments) {
+ if (comments == null || comments.size() != this.size())
+ return false;
+
+ for (final Comment comment: comments) {
+ int index = this.indexOfCommentId(comment.commentID);
+ if (index == -1)
+ return false;
+ final Comment thisComment = this.get(index);
+ if (!thisComment.getStatus().equals(comment.getStatus()))
+ return false;
+ if (!thisComment.getCommentText().equals(comment.getCommentText()))
+ return false;
+ if (!thisComment.getAuthorName().equals(comment.getAuthorName()))
+ return false;
+ if (!thisComment.getAuthorEmail().equals(comment.getAuthorEmail()))
+ return false;
+ if (!thisComment.getAuthorUrl().equals(comment.getAuthorUrl()))
+ return false;
+
+ }
+
+ return true;
+ }
+
+ public static CommentList fromJSONV1_1(JSONObject object) throws JSONException {
+ CommentList commentList = new CommentList();
+ if (object == null) {
+ return null;
+ } else {
+ JSONArray comments = object.getJSONArray("comments");
+ for (int i=0; i < comments.length(); i++){
+ JSONObject commentJson = comments.getJSONObject(i);
+ commentList.add(Comment.fromJSON(commentJson));
+ }
+ return commentList;
+ }
+ }
+}