/*
* Genoogle: Similar DNA Sequences Searching Engine and Tools. (http://genoogle.pih.bio.br)
* Copyright (C) 2008,2009,2010,2011,2012 Felipe Fernandes Albrecht (felipe.albrecht@gmail.com)
*
* For further information check the LICENSE file.
*/
package bio.pih.genoogle.search;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import com.google.common.collect.Lists;
public class IndexSearchResults {
private static Comparator<RetrievedSequenceAreas> AREAS_LENGTH_COMPARATOR = new Comparator<RetrievedSequenceAreas>() {
@Override
public int compare(final RetrievedSequenceAreas o1, final RetrievedSequenceAreas o2) {
return o2.getBiggestLength() - o1.getBiggestLength();
}
};
private final IndexSearcher[] searchers;
List<RetrievedSequenceAreas> results = Lists.newLinkedList();
boolean sorted = false;
public IndexSearchResults(IndexSearcher ... searcher) {
searchers = searcher;
}
public void add(RetrievedSequenceAreas areas) {
results.add(areas);
}
public RetrievedSequenceAreas get(int pos) {
if (!sorted) {
Collections.sort(results, AREAS_LENGTH_COMPARATOR);
sorted = true;
}
return results.get(pos);
}
public IndexSearcher[] getIndexSearchers() {
return searchers;
}
public int size() {
return results.size();
}
public void merge(IndexSearchResults indexSearchResults) {
this.results.addAll(indexSearchResults.results);
sorted = false;
}
}