public Boolean isBookLoaded(Book book) { if (!bookSet.containsKey(book.getID())) { android.util.Log.i( TAG, String.format( "Book %1$s was not loaded to a book repository", book == null ? "" : book.getID())); return false; } return true; }
public Chapter loadChapter(Book book, Integer chapterNumber, BufferedReader bReader) { ArrayList<Integer> verseNumbers = new ArrayList<Integer>(); ArrayList<Verse> verseList = new ArrayList<Verse>(); ArrayList<String> lines = new ArrayList<String>(); try { String str; int currentChapter = book.getModule().ChapterZero ? 0 : 1; String chapterSign = book.getModule().ChapterSign; boolean chapterFind = false; while ((str = bReader.readLine()) != null) { if (str.toLowerCase().contains(chapterSign)) { if (chapterFind) { // Тег начала главы может быть не вначале строки. // Возьмем то, что есть до теги начала главы и добавим // к найденным строкам str = str.substring(0, str.toLowerCase().indexOf(chapterSign)); if (str.trim().length() > 0) { lines.add(str); } break; } else if (currentChapter++ == chapterNumber) { chapterFind = true; // Тег начала главы может быть не вначале строки. // Обрежем все, что есть до теги начала главы и добавим // к найденным строкам str = str.substring(str.toLowerCase().indexOf(chapterSign)); } } if (!chapterFind) { continue; } lines.add(str); } } catch (IOException e) { Log.e(TAG, String.format("loadChapter(%1$s, %2$s)", book.getID(), chapterNumber), e); return null; } String verseSign = book.getModule().VerseSign; int i = -1; for (String currLine : lines) { if (currLine.toLowerCase().contains(verseSign)) { i++; verseList.add(new Verse(i, currLine)); verseNumbers.add(i); } else if (verseList.size() > 0) { verseList.set(i, new Verse(i, verseList.get(i).getText() + " " + currLine)); } } return new Chapter(book, chapterNumber, verseNumbers, verseList); }