You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
2.8 KiB
107 lines
2.8 KiB
package com.github.jreddit.parser.entity;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
import org.json.simple.JSONArray;
|
|
import org.json.simple.JSONObject;
|
|
|
|
import com.github.jreddit.parser.entity.imaginary.CommentTreeElement;
|
|
import com.github.jreddit.parser.util.JsonUtils;
|
|
|
|
/**
|
|
* MORE entity. Can only exist in a comment tree, and thus
|
|
* implements the <i>CommenTreeElement</i> interface.
|
|
*
|
|
* @author Simon Kassing
|
|
*/
|
|
public class More extends Thing implements CommentTreeElement {
|
|
|
|
/** List of comment identifiers (ID36) that are his children. */
|
|
private List<String> children;
|
|
|
|
/** Counting number assigned by reddit (does not tell much in a comment tree). */
|
|
private Long count;
|
|
|
|
/** Parent comment fullname. */
|
|
private String parentId;
|
|
|
|
/**
|
|
* Construct a "More" thing.
|
|
*
|
|
* @param obj JSON object
|
|
*/
|
|
public More(JSONObject obj) {
|
|
super(Kind.MORE.value() + "_NONE");
|
|
|
|
// The obj.get("name") and obj.get("id") are neglected, as these
|
|
// are already implicitly included in the children array.
|
|
|
|
// Retrieve count from JSON
|
|
this.count = JsonUtils.safeJsonToLong(obj.get("count"));
|
|
|
|
// Retrieve parent identifier from JSON
|
|
this.parentId = JsonUtils.safeJsonToString(obj.get("parent_id"));
|
|
|
|
// Iterate over children
|
|
this.children = new ArrayList<String>();
|
|
JSONArray jsonChildren = (JSONArray) obj.get("children");
|
|
for (Object child : jsonChildren) {
|
|
this.children.add(JsonUtils.safeJsonToString(child));
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* Retrieve the children ID36 comment identifiers.
|
|
*
|
|
* @return The children (e.g. ["dja241", "dsfjak24"])
|
|
*/
|
|
public List<String> getChildren() {
|
|
return children;
|
|
}
|
|
|
|
/**
|
|
* Retrieve the counting number assigned by reddit (does not tell much in this case).
|
|
*
|
|
* @return The counting number
|
|
*/
|
|
public Long getCount() {
|
|
return count;
|
|
}
|
|
|
|
/**
|
|
* Retrieve how many children (comments) the MORE hides.
|
|
*
|
|
* @return How many comments the more hides ({@link #getChildren()}'s size)
|
|
*/
|
|
public int getChildrenSize() {
|
|
return children.size();
|
|
}
|
|
|
|
/**
|
|
* Retrieve the parent fullname comment identifier.
|
|
*
|
|
* @return The parent identifier (e.g. "t1_38942f")
|
|
*/
|
|
public String getParentId() {
|
|
return parentId;
|
|
}
|
|
|
|
@Override
|
|
public int compareTo(Thing o) {
|
|
if (!(o instanceof More)) {
|
|
return 1;
|
|
} else {
|
|
return ((More) o).getChildren().equals(this.getChildren()) ? 0 : -1;
|
|
}
|
|
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return "More()<" + this.getChildrenSize() + " more directly underneath>";
|
|
}
|
|
|
|
}
|