package fr.ydelouis.selfoss.entity;
import android.content.Context;
import android.os.Parcel;
import android.os.Parcelable;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import fr.ydelouis.selfoss.R;
import fr.ydelouis.selfoss.model.TagDao;
import fr.ydelouis.selfoss.util.ColorUtil;
@DatabaseTable(daoClass = TagDao.class)
@JsonIgnoreProperties(ignoreUnknown = true)
public class Tag implements Parcelable {
public static final Tag ALL = new Tag(R.string.allTags);
public static final Comparator<Tag> COMPARATOR_UNREAD_INVERSE = new Comparator<Tag>() {
@Override
public int compare(Tag lhs, Tag rhs) {
return - Integer.valueOf(lhs.getUnread()).compareTo(rhs.getUnread());
}
};
public static List<Integer> colorsOfTags(List<Tag> tags) {
List<Integer> colors = new ArrayList<Integer>();
for (Tag tag : tags) {
colors.add(tag.getColor());
}
return colors;
}
@DatabaseField(id = true, columnName = TagDao.COLUMN_NAME)
@JsonProperty("tag")
private String name;
private int nameId;
@DatabaseField
private int color;
@DatabaseField
private int unread;
public Tag() {
}
private Tag(int nameId) {
this.nameId = nameId;
}
public String getName(Context context) {
if (nameId != 0)
return context.getString(nameId);
return name;
}
public void setName(String name) {
this.name = name;
}
public int getColor() {
return color;
}
@JsonProperty("color")
public void setColor(String color) {
this.color = ColorUtil.parseColor(color);
}
public int getUnread() {
return unread;
}
public void setUnread(int unread) {
this.unread = unread;
}
@Override
public boolean equals(Object o) {
if (!(o instanceof Tag))
return false;
Tag oTag = (Tag) o;
if (name == null)
return nameId == oTag.nameId;
return name.equals(oTag.name);
}
@Override
public String toString() {
if (name == null)
return "All";
return name;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.name);
dest.writeInt(this.nameId);
dest.writeInt(this.color);
dest.writeInt(this.unread);
}
private Tag(Parcel in) {
this.name = in.readString();
this.nameId = in.readInt();
this.color = in.readInt();
this.unread = in.readInt();
}
public static Parcelable.Creator<Tag> CREATOR = new Parcelable.Creator<Tag>() {
public Tag createFromParcel(Parcel source) {
return new Tag(source);
}
public Tag[] newArray(int size) {
return new Tag[size];
}
};
}