package com.xda.one.api.model.response; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; import com.xda.one.api.model.interfaces.UnifiedThread; import android.os.Parcel; @JsonIgnoreProperties(ignoreUnknown = true) public class ResponseUnifiedThread implements UnifiedThread { public static final Creator<ResponseUnifiedThread> CREATOR = new Creator<ResponseUnifiedThread>() { @Override public ResponseUnifiedThread createFromParcel(Parcel source) { return new ResponseUnifiedThread(source); } @Override public ResponseUnifiedThread[] newArray(int size) { return new ResponseUnifiedThread[size]; } }; private final ResponseAvatar mResponseAvatar; @JsonProperty(value = "threadid") private String mThreadId; @JsonProperty(value = "lastpost") private long mLastPost; @JsonProperty(value = "lastposter") private String mLastPoster; @JsonProperty(value = "lastpostid") private int mLastPostId; @JsonProperty(value = "replycount") private int mReplyCount; @JsonProperty(value = "firstpostid") private int mFirstPostId; @JsonProperty(value = "threadslug") private String mThreadSlug; @JsonProperty(value = "forumtitle") private String mForumTitle; @JsonProperty(value = "forumid") private int mForumId; @JsonProperty(value = "views") private int mViews; @JsonProperty(value = "title") private String mTitle; @JsonProperty(value = "pagetext") private String mPageText; @JsonProperty(value = "postusername") private String mPostUsername; @JsonProperty(value = "sticky") private int mSticky; @JsonProperty(value = "attach") private int mAttach; @JsonProperty(value = "has_attachment") private int mHasAttachment; @JsonProperty(value = "subscribed") private int mIsSubscribed; @JsonProperty(value = "total_posts") private int mTotalPosts; @JsonProperty(value = "unread") private int mUnread; @JsonProperty(value = "open") private int mOpen; @JsonProperty(value = "web_uri") private String mWebUri; public ResponseUnifiedThread() { mResponseAvatar = new ResponseAvatar(); } public ResponseUnifiedThread(final Parcel in) { mResponseAvatar = new ResponseAvatar(in); mThreadId = in.readString(); mLastPost = in.readLong(); mLastPoster = in.readString(); mLastPostId = in.readInt(); mFirstPostId = in.readInt(); mReplyCount = in.readInt(); mThreadSlug = in.readString(); mForumTitle = in.readString(); mForumId = in.readInt(); mViews = in.readInt(); mTitle = in.readString(); mPageText = in.readString(); mPostUsername = in.readString(); mSticky = in.readInt(); mAttach = in.readInt(); mHasAttachment = in.readInt(); mIsSubscribed = in.readInt(); mTotalPosts = in.readInt(); mOpen = in.readInt(); mWebUri = in.readString(); } @Override public String getThreadId() { return mThreadId; } @Override public int getLastPostId() { return mLastPostId; } @Override public String getLastPoster() { return mLastPoster; } @Override public int getFirstPostId() { return mFirstPostId; } @Override public String getThreadSlug() { return mThreadSlug; } @Override public String getForumTitle() { return mForumTitle; } @Override public int getForumId() { return mForumId; } @Override public int getReplyCount() { return mReplyCount; } @Override public boolean isSubscribed() { return mIsSubscribed != 0; } @Override public boolean isAttach() { return mAttach != 0; } @Override public boolean hasAttachment() { return mHasAttachment != 0; } @Override public int getViews() { return mViews; } @Override public long getLastPost() { return mLastPost * 1000; } @Override public String getTitle() { return mTitle; } @Override public String getFirstPostContent() { return mPageText; } @Override public String getPostUsername() { return mPostUsername; } @Override public boolean isSticky() { return mSticky != 0; } @Override public int getTotalPosts() { return mTotalPosts; } @Override public String getAvatarUrl() { return mResponseAvatar.getAvatarUrl(); } // Avatar delegate @JsonProperty(value = "avatar_url") private void setAvatarUrl(final String avatarUrl) { mResponseAvatar.setAvatarUrl(avatarUrl); } @Override public boolean isUnread() { return mUnread != 0; } @Override public boolean isOpen() { return mOpen != 0; } @Override public String getWebUri() { return mWebUri; } // Parcelable interface @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { mResponseAvatar.writeToParcel(dest, flags); dest.writeString(mThreadId); dest.writeLong(mLastPost); dest.writeString(mLastPoster); dest.writeInt(mLastPostId); dest.writeInt(mFirstPostId); dest.writeString(mThreadSlug); dest.writeString(mForumTitle); dest.writeInt(mForumId); dest.writeInt(mReplyCount); dest.writeInt(mViews); dest.writeString(mTitle); dest.writeString(mPageText); dest.writeString(mPostUsername); dest.writeInt(mSticky); dest.writeInt(mAttach); dest.writeInt(mHasAttachment); dest.writeInt(mIsSubscribed); dest.writeInt(mTotalPosts); dest.writeInt(mOpen); dest.writeString(mWebUri); } @Override public boolean equals(final Object o) { if (this == o) { return true; } else if (o == null || getClass() != o.getClass()) { return false; } final ResponseUnifiedThread that = (ResponseUnifiedThread) o; return mThreadId.equals(that.mThreadId); } @Override public int hashCode() { return mThreadId.hashCode(); } }