SearchRequest.java

package gov.usgs.earthquake.indexer;

import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

/**
 * A search request, which is one or more {@link SearchQuery}s.
 */
public class SearchRequest implements Comparable<SearchRequest> {

  private final List<SearchQuery> queries = new LinkedList<SearchQuery>();

  /** Construct a new SearchRequest. */
  public SearchRequest() {
  }

  /**
   * Add another query to this request.
   *
   * @param query the query to add
   */
  public void addQuery(final SearchQuery query) {
    this.queries.add(query);
  }

  /**
   * @return The list of queries that are part of this request.
   */
  public List<SearchQuery> getQueries() {
    return this.queries;
  }

  @Override
  public boolean equals(Object that) {
    return (this.compareTo((SearchRequest) that)) == 0;
  }

  @Override
  public int compareTo(SearchRequest that) {
    int r;

    // test list size first
    if ((r = (this.queries.size() - that.queries.size())) != 0) {
      return r;
    }

    Iterator<SearchQuery> thisIter = this.queries.iterator();
    Iterator<SearchQuery> thatIter = that.queries.iterator();

    while (thisIter.hasNext() && thatIter.hasNext()) {
      r = thisIter.next().compareTo(thatIter.next());
      if (r != 0) {
        return r;
      }
    }

    return 0;
  }

}