package com.kymjs.model;

import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;

import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamImplicit;

import java.util.ArrayList;

/**
 * 开源实验室博客
 *
 * @author kymjs (http://www.kymjs.com/) on 12/2/15.
 */
@XStreamAlias("item")
public class Blog implements Parcelable {
    @XStreamAlias("title")
    private String title;
    @XStreamAlias("description")
    private String description;
    @XStreamAlias("pubDate")
    private String pubDate;
    @XStreamAlias("link")
    private String link;
    @XStreamAlias("recommend")
    private String recommend;
    @XStreamAlias("image")
    private String image;
    @XStreamAlias("content")
    private String content;

    private String author;

    public String getAuthor() {
        if (TextUtils.isEmpty(author)) author = "kymjs张涛";
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    @XStreamImplicit
    private ArrayList<String> tag = new ArrayList<>();
    @XStreamImplicit
    private ArrayList<String> category = new ArrayList<>();

    public String getTitle() {
        return title;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getPubDate() {
        return pubDate;
    }

    public void setPubDate(String pubDate) {
        this.pubDate = pubDate;
    }

    public String getLink() {
        return link;
    }

    public void setLink(String link) {
        this.link = link;
    }

    public String getRecommend() {
        return recommend;
    }

    public void setRecommend(String recommend) {
        this.recommend = recommend;
    }

    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }

    public ArrayList<String> getTag() {
        return tag;
    }

    public void setTag(ArrayList<String> tag) {
        this.tag = tag;
    }

    public ArrayList<String> getCategory() {
        return category;
    }

    public void setCategory(ArrayList<String> category) {
        this.category = category;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(this.title);
        dest.writeString(this.description);
        dest.writeString(this.pubDate);
        dest.writeString(this.link);
        dest.writeString(this.recommend);
        dest.writeString(this.image);
        dest.writeString(this.content);
        dest.writeString(this.author);
        dest.writeStringList(this.tag);
        dest.writeStringList(this.category);
    }

    public Blog() {
    }

    protected Blog(Parcel in) {
        this.title = in.readString();
        this.description = in.readString();
        this.pubDate = in.readString();
        this.link = in.readString();
        this.recommend = in.readString();
        this.image = in.readString();
        this.content = in.readString();
        this.author = in.readString();
        this.tag = in.createStringArrayList();
        this.category = in.createStringArrayList();
    }

    public static final Parcelable.Creator<Blog> CREATOR = new Parcelable.Creator<Blog>() {
        public Blog createFromParcel(Parcel source) {
            return new Blog(source);
        }

        public Blog[] newArray(int size) {
            return new Blog[size];
        }
    };

    @Override
    public boolean equals(Object o) {
        if (o instanceof Blog) {
            Blog data = (Blog) o;
            if (data.link != null) return data.link.equals(link);
            else return link == null;
        } else {
            return super.equals(o);
        }
    }

    @Override
    public int hashCode() {
        return link.hashCode();
    }
}