SearchQuery.java
- /*
- * SearchQuery
- */
- package gov.usgs.earthquake.indexer;
- /**
- * A search to execute against a ProductIndex, or ProductStorage.
- */
- public abstract class SearchQuery implements Comparable<SearchQuery> {
- /** The type of response that is expected. */
- private final SearchMethod type;
- /** The search parameters. */
- private final ProductIndexQuery query;
- /** Contains an error returned in a SearchResult if one occurred **/
- private String error;
- /**
- * Construct a new SearchQuery object.
- *
- * @param type
- * the type of search.
- * @param query
- * the query parameters.
- */
- protected SearchQuery(final SearchMethod type, final ProductIndexQuery query) {
- this.type = type;
- this.query = query;
- this.error = null;
- }
- /** @return type */
- public SearchMethod getType() {
- return this.type;
- }
- /** @return ProductIndexQuery */
- public ProductIndexQuery getProductIndexQuery() {
- return this.query;
- }
- /**
- * Get the result associated with a specific query type.
- *
- * @return the result, or null if the search has not yet executed.
- */
- public abstract Object getResult();
- /**
- * Create a SearchQuery object based on a SearchType.
- *
- * @param type
- * the search type to create
- * @param query
- * the associated query
- * @return a SearchQuery, or null if type is unknown.
- */
- public static SearchQuery getSearchQuery(final SearchMethod type,
- final ProductIndexQuery query) {
- if (type == null) {
- return null;
- } else if (type.equals(SearchMethod.EVENTS_SUMMARY)) {
- return new EventsSummaryQuery(query);
- } else if (type.equals(SearchMethod.EVENT_DETAIL)) {
- return new EventDetailQuery(query);
- } else if (type.equals(SearchMethod.PRODUCTS_SUMMARY)) {
- return new ProductsSummaryQuery(query);
- } else if (type.equals(SearchMethod.PRODUCT_DETAIL)) {
- return new ProductDetailQuery(query);
- } else {
- return null;
- }
- }
- @Override
- public boolean equals(Object that) {
- return (this.compareTo((SearchQuery) that)) == 0;
- }
- @Override
- public int compareTo(SearchQuery that) {
- int r;
- if ((r = this.type.compareTo(that.type)) != 0) {
- return r;
- }
- if ((r = this.query.compareTo(that.query)) != 0) {
- return r;
- }
- //both have results
- Object thatResult = that.getResult();
- Object thisResult = this.getResult();
- if (thisResult == null && thatResult == null) {
- return 0;
- } else if (thisResult != null && thatResult == null) {
- return -1;
- } else if (thisResult == null && thatResult != null) {
- return 1;
- }
- return 0;
- }
- /**
- * @param error the error to set
- */
- public void setError(String error) {
- this.error = error;
- }
- /**
- * @return the error or null if no error occurred.
- */
- public String getError() {
- return error;
- }
- }