package org.apache.solr.spelling.suggest; import java.util.ArrayList; import java.util.List; import org.apache.solr.util.TermFreqIterator; /** * This wrapper buffers incoming elements. */ public class BufferingTermFreqIteratorWrapper implements TermFreqIterator { /** Entry in the buffer. */ public static final class Entry implements Comparable<Entry> { String word; float freq; public Entry(String word, float freq) { this.word = word; this.freq = freq; } @Override public int compareTo(Entry o) { return word.compareTo(o.word); } } protected ArrayList<Entry> entries = new ArrayList<Entry>(); protected int curPos; protected Entry curEntry; public BufferingTermFreqIteratorWrapper(TermFreqIterator source) { // read all source data into buffer while (source.hasNext()) { String w = source.next(); Entry e = new Entry(w, source.freq()); entries.add(e); } curPos = 0; } @Override public float freq() { return curEntry.freq; } @Override public boolean hasNext() { return curPos < entries.size(); } @Override public String next() { curEntry = entries.get(curPos); curPos++; return curEntry.word; } @Override public void remove() { throw new UnsupportedOperationException("remove is not supported"); } public List<Entry> entries() { return entries; } }