package org.softeg.slartus.forpdaapi.devdb;

import android.os.Parcel;
import android.os.Parcelable;

import org.softeg.slartus.forpdaapi.ICatalogItem;

/**
 * Created by slartus on 06.03.14.
 */
public class DevCatalog implements ICatalogItem, Parcelable {
    public static final int ROOT = -1;
    public static final int DEVICE_TYPE = 0;
    public static final int DEVICE_BRAND = 1;
    private String mId;
    private String mTitle;
    private String mImageUrl;
    private String description;
    private int type;
    private ICatalogItem parent;

    public DevCatalog(String id, String title) {
        mId = id;
        mTitle = title;
    }

    @Override
    public CharSequence getId() {
        return mId;
    }

    @Override
    public CharSequence getTitle() {
        return mTitle;
    }

    @Override
    public CharSequence getSubTitle() {
        return description;
    }


    @Override
    public ICatalogItem getParent() {
        return parent;
    }

    @Override
    public void setParent(ICatalogItem catalogItem) {
        this.parent = catalogItem;
    }

    @Override
    public ICatalogItem clone() {
        DevCatalog clone = new DevCatalog(mId, mTitle);
        clone.setType(type);
        clone.setDescription(description);
        clone.setImageUrl(mImageUrl);
        clone.setParent(parent == null ? null : parent.clone());
        return clone;
    }

    public String getImageUrl() {
        return mImageUrl;
    }

    public void setImageUrl(String imageUrl) {
        this.mImageUrl = imageUrl;
    }

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

    public int getType() {
        return type;
    }


    public DevCatalog setType(int type) {
        this.type = type;
        return this;
    }

    public static final Parcelable.Creator<DevCatalog> CREATOR = new Parcelable.Creator<DevCatalog>() {
        // распаковываем объект из Parcel
        public DevCatalog createFromParcel(Parcel in) {

            return new DevCatalog(in);
        }

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

    private DevCatalog(Parcel parcel) {
        mId = parcel.readString();
        mTitle = parcel.readString();
        description = parcel.readString();
        mImageUrl = parcel.readString();
        type = parcel.readInt();
        Boolean hasParent = parcel.readByte() == 1;
        if (hasParent)
            parent = new DevCatalog(parcel);
    }

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

    @Override
    public void writeToParcel(Parcel parcel, int i) {
        parcel.writeString(mId);
        parcel.writeString(mTitle);
        parcel.writeString(description);
        parcel.writeString(mImageUrl);
        parcel.writeInt(type);
        if (parent == null) {
            parcel.writeByte((byte) 0);
        } else {
            parcel.writeByte((byte) 1);
            ((DevCatalog) parent).writeToParcel(parcel, i);
        }
    }
}