/** Return the verse in the required versification, mapping if necessary */ public Verse convert(Verse verse, Versification toVersification) { Verse mappedVerse = convertVerseStrictly(verse, toVersification); if (mappedVerse != null) return mappedVerse; // just try to retain information by forcing creation of a similar verse with the new v11n return new Verse(toVersification, verse.getBook(), verse.getChapter(), verse.getVerse()); }
public int indexOf(Key that) { if (this.equals(that)) { return 0; } return -1; }
/** * Get percentage value of reading progress of the verse within its biblebook. */ public int getPercentOfBook(@NotNull Verse verse) { Versification v11n = verse.getVersification(); BibleBook bibleBook = verse.getBook(); int lastChapterNumber = v11n.getLastChapter(bibleBook); int lastVerseNumber = v11n.getLastVerse(bibleBook, lastChapterNumber); Verse lastVerse = new Verse(v11n, bibleBook, lastChapterNumber, lastVerseNumber); Verse firstVerse = new Verse(v11n, bibleBook, 1, 1); return (int)((((double)(verse.getOrdinal() - firstVerse.getOrdinal())) / (lastVerse.getOrdinal() - firstVerse.getOrdinal())) * 100.0); } }
public ConvertibleVerse(Verse verse) { this(verse.getVersification(), verse.getBook(), verse.getChapter(), verse.getVerse()); }
/** * The start of a book is indicated by * a chapter number of 0 or 1 and * a verse number of 0 or 1. * * @param verse the verse to test * @return true or false ... */ public boolean isStartOfBook(Verse verse) { int v = verse.getVerse(); int c = verse.getChapter(); return v <= 1 && c <= 1; }
/** * Two verses are in the same chapter if both * the book and chapter agree. * * @param first * The verse to compare to * @param second * The verse to compare to * @return true or false ... */ public boolean isSameChapter(Verse first, Verse second) { return first.getBook() == second.getBook() && first.getChapter() == second.getChapter(); }
/** * The end of the chapter is indicated by * the verse number matching the last in the chapter. * * @param verse the verse to test * @return true or false ... */ public boolean isEndOfChapter(Verse verse) { BibleBook b = verse.getBook(); int v = verse.getVerse(); int c = verse.getChapter(); return v == getLastVerse(b, c); }
@Override public Verse createEndVerse(Versification v11n, Verse verseBasis, String[] endParts) throws NoSuchVerseException { // Very similar to the start verse but use the verse as a basis // and it gets the end of the chapter BibleBook book = verseBasis.getBook(); int chapter = getChapter(v11n, book, endParts[0]); return new Verse(v11n, book, chapter, v11n.getLastVerse(book, chapter)); } },
@Override public Verse createStartVerse(Versification v11n, VerseRange verseRangeBasis, String[] parts) throws NoSuchVerseException { BibleBook book = v11n.getBook(parts[0]); int chapter = 0; // v11n.getLastChapter(book) > 0 ? 1 : 0; // 0 ? int verse = 0; // v11n.getLastVerse(book, chapter) > 0 ? 1 : 0; // 0 ? return new Verse(v11n, book, chapter, verse); }
public String getOsisRef() { BibleBook startBook = start.getBook(); BibleBook endBook = end.getBook(); int startChapter = start.getChapter(); int endChapter = end.getChapter(); buf.append(startChapter); } else { buf.append(start.getOsisRef()); buf.append(endChapter); } else { buf.append(end.getOsisRef()); buf.append(startChapter); } else { buf.append(start.getOsisRef()); buf.append(endChapter); } else { buf.append(end.getOsisRef()); if (start.getVerse() != end.getVerse()) { StringBuilder buf = new StringBuilder(); buf.append(start.getOsisRef()); buf.append(VerseRange.RANGE_PREF_DELIM); buf.append(end.getOsisRef()); return buf.toString(); return start.getOsisRef();
@Override public Verse createEndVerse(Versification v11n, Verse verseBasis, String[] endParts) throws NoSuchVerseException { // Very similar to the start verse but use the verse as a basis // and it gets the end of the chapter BibleBook book = verseBasis.getBook(); int chapter = verseBasis.getChapter(); int verse = getVerse(v11n, book, chapter, endParts[0]); return new Verse(v11n, book, chapter, verse, getSubIdentifier(endParts)); } };
public String getOsisID() { // This range is exactly a whole book if (isWholeBook()) { // Just report the name of the book, we don't need to worry // about the base since we start at the start of a book, and // should have been recently normalized() return start.getBook().getOSIS(); } // If this range is exactly a whole chapter if (isWholeChapter()) { // Just report the name of the book and the chapter return start.getBook().getOSIS() + Verse.VERSE_OSIS_DELIM + start.getChapter(); } int startOrdinal = start.getOrdinal(); int endOrdinal = end.getOrdinal(); // to see if it is wholly contained in the range and output it if it is. // Estimate the size of the buffer: book.dd.dd (where book is 3-5, 3 typical) StringBuilder buf = new StringBuilder((endOrdinal - startOrdinal + 1) * 10); buf.append(start.getOsisID()); for (int i = startOrdinal + 1; i < endOrdinal; i++) { buf.append(AbstractPassage.REF_OSIS_DELIM); buf.append(v11n.decodeOrdinal(i).getOsisID()); } // It just might be a single verse range! if (startOrdinal != endOrdinal) { buf.append(AbstractPassage.REF_OSIS_DELIM); buf.append(end.getOsisID()); } return buf.toString(); }
public void setChapterVerse(ChapterVerse chapterVerse) { mainVerse = new Verse(mainVerse.getVersification(), mainVerse.getBook(), chapterVerse.getChapter(), chapterVerse.getVerse()); } public ChapterVerse getChapterVerse() {
/** * Determine the later of the two verses. * If first == second then return first. * * @param first the first verse to compare * @param second the second verse to compare * @return The later of the two verses */ public Verse max(Verse first, Verse second) { return first.getOrdinal() > second.getOrdinal() ? first : second; }
/** * The start of a chapter is indicated by * a verse number of 0 or 1 * * @param verse the verse to test * @return true or false ... */ public boolean isStartOfChapter(Verse verse) { int v = verse.getVerse(); return v <= 1; }
private boolean isStartOrEndOfBook(Key key) { boolean isStartOrEnd = false; try { if (key instanceof VerseKey) { Verse verse = KeyUtil.getVerse(key); int chapter = verse.getChapter(); BibleBook book = verse.getBook(); isStartOrEnd = chapter == 1 || chapter == verse.getVersification().getLastChapter(book); } } catch (Exception e) { Log.e(TAG, "Verse error", e); isStartOrEnd = false; } return isStartOrEnd; } }
Verse previousVerse = new Verse(currentVerse.getVersification(), currentVerse.getOrdinal() - 1); contentsByOsisID.put(previousVerse, contents); contents = new ArrayList<Content>();
public Map<Integer, Set<BookmarkStyle>> getVerseBookmarkStylesInPassage(Key passage) { BibleBook book = firstVerse.getBook(); Versification requiredVersification = firstVerse.getVersification(); for (BookmarkDto bookmarkDto : bookmarkList) { VerseRange bookmarkVerseRange = bookmarkDto.getVerseRange(requiredVersification); Set<BookmarkStyle> stylesSet = bookmarkStylesByVerseNoInPassage.get(verse.getVerse()); if(stylesSet != null) { stylesSet.addAll(bookmarkStyles); bookmarkStylesByVerseNoInPassage.put(verse.getVerse(), stylesSet);
/** * Convert the verse correctly to the v11n or return null */ @Nullable private Verse convertVerseStrictly(Verse verse, Versification toVersification) { try { Key key = versificationsMapper.mapVerse(verse, toVersification); Verse mappedVerse = KeyUtil.getVerse(key); // If target v11n does not contain mapped verse then an exception normally occurs and the ordinal is set to 0 if (mappedVerse.getOrdinal()>0) { return mappedVerse; } } catch (Exception e) { // unexpected problem during mapping Log.e(TAG, "JSword Versification mapper failed to map "+verse.getOsisID()+" from "+verse.getVersification().getName()+" to "+toVersification.getName(), e); } return null; } }
Verse verse = (Verse) key; String raw = bible.getRawText(verse); String osisID = verse.getOsisID(); String currentBookName = verse.getBook().getOSIS(); int currentChapter = verse.getChapter();