public Key next() throws NoSuchElementException { if (next >= board.length) { throw new NoSuchElementException(); } Key retcode = getVersification().decodeOrdinal(next); calculateNext(); return retcode; }
/** * Iterate through the verse elements in the current sort order * * @return A verse Iterator */ public Iterator<Key> iterator() { if (order == Order.BIBLICAL) { return new VerseIterator(); } return new OrderedVerseIterator(getVersification(), board); }
@Override public Iterator<VerseRange> rangeIterator(RestrictionType restrict) { if (order == Order.BIBLICAL) { return new VerseRangeIterator(getVersification(), iterator(), restrict); } return new OrderedVerseRangeIterator(getVersification(), iterator(), board); }
/** * A Human readable version of the PassageTally. Uses short books names, and * the shortest possible rendering eg "Mat 3:1-4" * * @param cnt * The number of matches to return, 0 gives all matches * @return a String containing a description of the verses */ public String getNameAndTally(int cnt) { int maxCount = cnt; StringBuilder retcode = new StringBuilder(); if (maxCount == 0) { maxCount = Integer.MAX_VALUE; } OrderedVerseIterator it = new OrderedVerseIterator(getVersification(), board); int count = 0; while (it.hasNext() && count < maxCount) { Key verse = it.next(); retcode.append(verse.getName()); retcode.append(" ("); retcode.append(100 * it.lastRank() / max); retcode.append("%)"); count++; if (it.hasNext() && count < maxCount) { retcode.append(AbstractPassage.REF_PREF_DELIM); } } return retcode.toString(); }
Iterator<Key> it = new OrderedVerseIterator(getVersification(), board); Key current = null; int count = 0;
@Override public void removeAll(Key key) { optimizeWrites(); if (key instanceof PassageTally) { PassageTally tally = (PassageTally) key; int vib = getVersification().maximumOrdinal(); for (int i = 0; i <= vib; i++) { if (tally.board[i] != 0) { kill(i); } } } else { for (Key aKey : key) { Verse verse = (Verse) aKey; kill(verse.getOrdinal()); } } fireIntervalRemoved(this, null, null); // Just because we've decremented some doesn't // change the max. So we don't need to do: // incrementMax(-1); }
/** * Remove/Decrement these verses in the rankings * * @param that * The verses to remove/decrement */ public void unAddAll(Passage that) { optimizeWrites(); if (that instanceof PassageTally) { PassageTally tally = (PassageTally) that; int vib = getVersification().maximumOrdinal(); for (int i = 0; i <= vib; i++) { increment(i, -tally.board[i]); } } else { for (Key aKey : that) { Verse verse = (Verse) aKey; increment(verse.getOrdinal(), -1); } } fireIntervalRemoved(this, null, null); // Just because we've decremented some doesn't // change the max. So we don't need to do: // incrementMax(-1); }
VerseRange range = it.next(); for (int i = 0; i <= verses; i++) { add(restrict.blur(getVersification(), range, i, i));
@Override public void addAll(Key that) { optimizeWrites(); if (that instanceof PassageTally) { PassageTally tally = (PassageTally) that; int vib = getVersification().maximumOrdinal(); for (int i = 0; i <= vib; i++) { increment(i, tally.board[i]); } incrementMax(tally.max); } else { for (Key aKey : that) { Verse verse = (Verse) aKey; increment(verse.getOrdinal(), 1); } incrementMax(1); } fireIntervalAdded(this, null, null); }