/*
* Genoogle: Similar DNA Sequences Searching Engine and Tools. (http://genoogle.pih.bio.br)
* Copyright (C) 2008,2009 Felipe Fernandes Albrecht (felipe.albrecht@gmail.com)
*
* For further information check the LICENSE file.
*/
package bio.pih.genoogle.search.results;
import java.util.Collections;
import java.util.List;
import bio.pih.genoogle.search.SearchParams;
import com.google.common.collect.Lists;
/**
* Class that stores the results and the fails of a search
*
* @author albrecht
*/
public class SearchResults {
private final SearchParams params;
private final List<Hit> hits;
private List<Throwable> fails = null;
/**
* @param params
*/
public SearchResults(SearchParams params) {
this.params = params;
List<Hit> l = Lists.newLinkedList();
this.hits = Collections.synchronizedList(l);
}
/**
* @return parameters of this search.
*/
public SearchParams getParams() {
return params;
}
/**
* @return {@link List} of {@link Hit} of this search.
*/
public List<Hit> getHits() {
return hits;
}
public void addHit(Hit hit) {
hits.add(hit);
}
/**
* Merge another hits {@link List} into this search results.
*
* @param newHits
*/
public void addAllHits(List<Hit> newHits) {
this.hits.addAll(newHits);
}
/**
* Check if the search had problems.
*
* @return <code>true</code> if happened a exception during the search process.
*/
public boolean hasFail() {
return fails != null;
}
/**
* Add a {@link List} of {@link Exception} that happened during the execution.
*
* @param fail
*/
public void addAllFails(List<Throwable> fail) {
if (fails == null) {
fails = Lists.newArrayList();
}
fails.addAll(fail);
}
/**
* Add a {@link Exception} that happened during the execution.
*
* @param fail
*/
public synchronized void addFail(Throwable fail) {
if (fails == null) {
List<Throwable> f = Lists.newArrayList();
fails = Collections.synchronizedList(f);
}
fails.add(fail);
}
/**
* @return {@link List} of {@link Exception} that happened during the execution.
*/
public List<Throwable> getFails() {
return fails;
}
}