| package org.apache.maven.index; |
| |
| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| import org.apache.lucene.search.Query; |
| import org.apache.maven.index.context.IndexingContext; |
| |
| public class AbstractSearchRequest |
| { |
| /** |
| * Constant for denoting undefined value for result count. |
| */ |
| public static final int UNDEFINED = -1; |
| |
| private Query query; |
| |
| private List<IndexingContext> contexts; |
| |
| /** |
| * The maximum count of results expected to have delivered, actually count of items (AIs). More precisely, with this |
| * setting we LIMIT the number of Lucene Documents for total set of hits to be processed. If set to anything other |
| * than {@link #UNDEFINED}, search will stop upon processing this count of AIs (that correspond to Lucene Document). |
| */ |
| private int count; |
| |
| /** |
| * The filter to be used while executing the search request. |
| */ |
| private ArtifactInfoFilter artifactInfoFilter; |
| |
| /** |
| * The postprocessor to apply to hits while returning the, |
| */ |
| private ArtifactInfoPostprocessor artifactInfoPostprocessor; |
| |
| /** |
| * The highlighting requests, if any. |
| */ |
| private List<MatchHighlightRequest> matchHighlightRequests; |
| |
| /** |
| * Should Lucene Explanations be added to resulting ArtifactInfo's attributes (keyed as |
| * org.apache.lucene.search.Explanation.class.getName())? Warning: calculating these are costly operation, and |
| * should not be used in production systems (maybe on some "debug" like UI or so). |
| */ |
| private boolean luceneExplain = false; |
| |
| public AbstractSearchRequest( Query query ) |
| { |
| this( query, null ); |
| } |
| |
| public AbstractSearchRequest( Query query, List<IndexingContext> contexts ) |
| { |
| this.query = query; |
| |
| if ( contexts != null ) |
| { |
| getContexts().addAll( contexts ); |
| } |
| |
| this.count = UNDEFINED; |
| } |
| |
| public Query getQuery() |
| { |
| return query; |
| } |
| |
| public void setQuery( Query query ) |
| { |
| this.query = query; |
| } |
| |
| public List<IndexingContext> getContexts() |
| { |
| if ( contexts == null ) |
| { |
| contexts = new ArrayList<>(); |
| } |
| |
| return contexts; |
| } |
| |
| public void setContexts( List<IndexingContext> contexts ) |
| { |
| this.contexts = contexts; |
| } |
| |
| /** |
| * Returns the "count" of wanted results. See {@link #UNDEFINED} and {@link #count}. |
| * |
| * @return |
| */ |
| public int getCount() |
| { |
| return count; |
| } |
| |
| /** |
| * Sets the "count" of wanted results. See {@link #UNDEFINED} and {@link #count}. |
| * |
| * @param count |
| */ |
| public void setCount( int count ) |
| { |
| if ( UNDEFINED != count && count < 1 ) |
| { |
| throw new IllegalArgumentException( "Count cannot be less than 1!" ); |
| } |
| |
| this.count = count; |
| } |
| |
| /** |
| * Returns true if hits are limited. |
| * |
| * @return |
| * @deprecated always returns false, since 4.1.0 there is no notion of hit limit |
| * @see http://jira.codehaus.org/browse/MINDEXER-14 |
| */ |
| public boolean isHitLimited() |
| { |
| return false; |
| } |
| |
| /** |
| * Gets the hit limit. Since 4.1.0 does nothing, always returns -1 (was "no hit limit"). |
| * |
| * @return |
| * @deprecated always returns -1 (no hit limit), since 4.1.0 there is no notion of hit limit |
| * @see http://jira.codehaus.org/browse/MINDEXER-14 |
| */ |
| public int getResultHitLimit() |
| { |
| return -1; |
| } |
| |
| /** |
| * Sets the hit limit. Since 4.1.0 does nothing. |
| * |
| * @param resultHitLimit |
| * @deprecated does nothing, since 4.1.0 there is no notion of hit limit |
| * @see http://jira.codehaus.org/browse/MINDEXER-14 |
| */ |
| public void setResultHitLimit( int resultHitLimit ) |
| { |
| // noop |
| } |
| |
| public ArtifactInfoFilter getArtifactInfoFilter() |
| { |
| return artifactInfoFilter; |
| } |
| |
| public void setArtifactInfoFilter( ArtifactInfoFilter artifactInfoFilter ) |
| { |
| this.artifactInfoFilter = artifactInfoFilter; |
| } |
| |
| public ArtifactInfoPostprocessor getArtifactInfoPostprocessor() |
| { |
| return artifactInfoPostprocessor; |
| } |
| |
| public void setArtifactInfoPostprocessor( ArtifactInfoPostprocessor artifactInfoPostprocessor ) |
| { |
| this.artifactInfoPostprocessor = artifactInfoPostprocessor; |
| } |
| |
| public List<MatchHighlightRequest> getMatchHighlightRequests() |
| { |
| if ( matchHighlightRequests == null ) |
| { |
| matchHighlightRequests = new ArrayList<>(); |
| } |
| |
| return matchHighlightRequests; |
| } |
| |
| public void setMatchHighlightRequests( List<MatchHighlightRequest> matchHighlightRequests ) |
| { |
| this.matchHighlightRequests = matchHighlightRequests; |
| } |
| |
| public boolean isLuceneExplain() |
| { |
| return luceneExplain; |
| } |
| |
| public void setLuceneExplain( boolean luceneExplain ) |
| { |
| this.luceneExplain = luceneExplain; |
| } |
| } |