package yuku.alkitab.model; import android.os.Parcel; import android.os.Parcelable; import yuku.alkitab.util.IntArrayList; public class Book implements Parcelable { // Make sure to update parcelable methods public int bookId; public String shortName; public int chapter_count; public int[] verse_counts; public String abbreviation; @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(this.bookId); dest.writeString(this.shortName); dest.writeInt(this.chapter_count); dest.writeIntArray(this.verse_counts); dest.writeString(this.abbreviation); } public Book() { } private Book(Parcel in) { this.bookId = in.readInt(); this.shortName = in.readString(); this.chapter_count = in.readInt(); this.verse_counts = in.createIntArray(); this.abbreviation = in.readString(); } public static final Parcelable.Creator<Book> CREATOR = new Parcelable.Creator<Book>() { public Book createFromParcel(Parcel source) { return new Book(source); } public Book[] newArray(int size) { return new Book[size]; } }; public String reference(int chapter_1) { return reference(this.shortName, chapter_1); } public String reference(int chapter_1, int verse_1) { return reference(this.shortName, chapter_1, verse_1); } public static String reference(CharSequence bookName, int chapter_1) { return bookName + " " + chapter_1; } public static String reference(CharSequence bookName, int chapter_1, int verse_1) { return bookName + " " + chapter_1 + ":" + verse_1; } public CharSequence reference(int chapter_1, IntArrayList verses_1) { StringBuilder sb = new StringBuilder(this.shortName); sb.append(' ').append(chapter_1); if (verses_1 == null || verses_1.size() == 0) { return sb; } sb.append(':'); writeVerseRange(verses_1, sb); return sb; } public static void writeVerseRange(IntArrayList verses_1, StringBuilder sb) { int origLen = sb.length(); int lastVerse_1 = 0; int beginVerse_1 = 0; for (int i = 0; i < verses_1.size(); i++) { int verse_1 = verses_1.get(i); if (lastVerse_1 == 0) { // not exist yet, pass } else if (lastVerse_1 == verse_1 - 1) { // still continuation, store the beginning if (beginVerse_1 == 0) beginVerse_1 = lastVerse_1; } else { // just jumped if (beginVerse_1 != 0) { sb.append(origLen == sb.length()? "": ", ").append(beginVerse_1).append('-').append(lastVerse_1); beginVerse_1 = 0; } else { sb.append(origLen == sb.length()? "": ", ").append(lastVerse_1); } } lastVerse_1 = verses_1.get(i); } // drain the remainings if (beginVerse_1 != 0) { sb.append(origLen == sb.length()? "": ", ").append(beginVerse_1).append('-').append(lastVerse_1); //noinspection UnusedAssignment beginVerse_1 = 0; // no need, only to make it consitent with above } else { sb.append(origLen == sb.length()? "": ", ").append(lastVerse_1); } } @Override public String toString() { return "Book{" + "bookId=" + bookId + ", shortName='" + shortName + '\'' + '}'; } }