package org.onebrick.android.models;
import android.database.Cursor;
import android.provider.BaseColumns;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import com.activeandroid.Model;
import com.activeandroid.annotation.Column;
import com.activeandroid.annotation.Table;
import com.activeandroid.query.Select;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import java.lang.reflect.Type;
@Table(name = "chapter", id = BaseColumns._ID)
public class Chapter extends Model {
public static final String NAME = "name";
public static final String CHAPTER_ID = "chapter_id";
@Column(name = CHAPTER_ID, unique = true, onUniqueConflict = Column.ConflictAction.REPLACE)
private int chapterId;
@Column(name = NAME)
private String name;
@Override
public String toString() {
return name + " " + chapterId;
}
public int getChapterId() {
return chapterId;
}
public String getChapterName() {
return name;
}
public static Chapter fromCursor(@NonNull Cursor cursor) {
final Chapter ch = new Chapter();
ch.loadFromCursor(cursor);
return ch;
}
@Nullable
public static Chapter findById(long chapterId) {
return new Select().from(Chapter.class).where("chapter_id=?",
chapterId).executeSingle();
}
public static class ChapterJsonDeserializer implements JsonDeserializer<Chapter> {
@Override
public Chapter deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
throws JsonParseException {
final JsonObject jsonObject = json.getAsJsonObject();
final Chapter chapter = new Chapter();
chapter.name = jsonObject.get("title").getAsString();
chapter.chapterId = jsonObject.get("nid").getAsInt();
return chapter;
}
}
}