package cl.monsoon.s1next.data.api.model;
import android.os.Parcel;
import android.os.Parcelable;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Objects;
import org.apache.commons.lang3.StringEscapeUtils;
/**
* Ambiguity in naming due to {@link java.lang.Thread}.
*/
@SuppressWarnings("UnusedDeclaration")
@JsonIgnoreProperties(ignoreUnknown = true)
public final class Thread implements Parcelable {
public static final Parcelable.Creator<Thread> CREATOR = new Parcelable.Creator<Thread>() {
@Override
public Thread createFromParcel(Parcel source) {
return new Thread(source);
}
@Override
public Thread[] newArray(int i) {
return new Thread[i];
}
};
@JsonProperty("tid")
private String id;
@JsonProperty("subject")
private String title;
@JsonProperty("replies")
private int replies;
@JsonProperty("readperm")
private int permission;
public Thread() {}
private Thread(Parcel source) {
id = source.readString();
title = source.readString();
replies = source.readInt();
permission = source.readInt();
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
// unescape some basic XML entities
this.title = StringEscapeUtils.unescapeXml(title);
}
public int getReplies() {
return replies;
}
public void setReplies(int replies) {
this.replies = replies;
}
public int getPermission() {
return permission;
}
public void setPermission(int permission) {
this.permission = permission;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(id);
dest.writeString(title);
dest.writeInt(replies);
dest.writeInt(permission);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Thread thread = (Thread) o;
return Objects.equal(replies, thread.replies) &&
Objects.equal(permission, thread.permission) &&
Objects.equal(id, thread.id) &&
Objects.equal(title, thread.title);
}
@Override
public int hashCode() {
return Objects.hashCode(id, title, replies, permission);
}
@JsonIgnoreProperties(ignoreUnknown = true)
public static final class ThreadListInfo {
@JsonProperty("threads")
private int threads;
public int getThreads() {
return threads;
}
public void setThreads(int threads) {
this.threads = threads;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ThreadListInfo that = (ThreadListInfo) o;
return Objects.equal(threads, that.threads);
}
@Override
public int hashCode() {
return Objects.hashCode(threads);
}
}
}