View Javadoc

1   package org.apache.maven.index;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *   http://www.apache.org/licenses/LICENSE-2.0    
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import java.util.ArrayList;
23  import java.util.List;
24  
25  import org.apache.lucene.search.Query;
26  import org.apache.maven.index.context.IndexingContext;
27  
28  public class AbstractSearchRequest
29  {
30      /**
31       * Constant for denoting undefined value for result count.
32       */
33      public static final int UNDEFINED = -1;
34  
35      private Query query;
36  
37      private List<IndexingContext> contexts;
38  
39      /**
40       * The maximum count of results expected to have delivered, actually count of items (AIs). More precisely, with this
41       * setting we LIMIT the number of Lucene Documents for total set of hits to be processed. If set to anything other
42       * than {@link #UNDEFINED}, search will stop upon processing this count of AIs (that correspond to Lucene Document).
43       */
44      private int count;
45  
46      /**
47       * The filter to be used while executing the search request.
48       */
49      private ArtifactInfoFilter artifactInfoFilter;
50  
51      /**
52       * The postprocessor to apply to hits while returning the,
53       */
54      private ArtifactInfoPostprocessor artifactInfoPostprocessor;
55  
56      /**
57       * The highlighting requests, if any.
58       */
59      private List<MatchHighlightRequest> matchHighlightRequests;
60  
61      /**
62       * Should Lucene Explanations be added to resulting ArtifactInfo's attributes (keyed as
63       * org.apache.lucene.search.Explanation.class.getName())? Warning: calculating these are costly operation, and
64       * should not be used in production systems (maybe on some "debug" like UI or so).
65       */
66      private boolean luceneExplain = false;
67  
68      public AbstractSearchRequest( Query query )
69      {
70          this( query, null );
71      }
72  
73      public AbstractSearchRequest( Query query, List<IndexingContext> contexts )
74      {
75          this.query = query;
76  
77          if ( contexts != null )
78          {
79              getContexts().addAll( contexts );
80          }
81  
82          this.count = UNDEFINED;
83      }
84  
85      public Query getQuery()
86      {
87          return query;
88      }
89  
90      public void setQuery( Query query )
91      {
92          this.query = query;
93      }
94  
95      public List<IndexingContext> getContexts()
96      {
97          if ( contexts == null )
98          {
99              contexts = new ArrayList<IndexingContext>();
100         }
101 
102         return contexts;
103     }
104 
105     public void setContexts( List<IndexingContext> contexts )
106     {
107         this.contexts = contexts;
108     }
109 
110     /**
111      * Returns the "count" of wanted results. See {@link #UNDEFINED} and {@link #count}.
112      * 
113      * @return
114      */
115     public int getCount()
116     {
117         return count;
118     }
119 
120     /**
121      * Sets the "count" of wanted results. See {@link #UNDEFINED} and {@link #count}.
122      * 
123      * @param count
124      */
125     public void setCount( int count )
126     {
127         if ( UNDEFINED != count && count < 1 )
128         {
129             throw new IllegalArgumentException( "Count cannot be less than 1!" );
130         }
131 
132         this.count = count;
133     }
134 
135     /**
136      * Returns true if hits are limited.
137      * 
138      * @return
139      * @deprecated always returns false, since 4.1.0 there is no notion of hit limit
140      * @see http://jira.codehaus.org/browse/MINDEXER-14
141      */
142     public boolean isHitLimited()
143     {
144         return false;
145     }
146 
147     /**
148      * Gets the hit limit. Since 4.1.0 does nothing, always returns -1 (was "no hit limit").
149      * 
150      * @return
151      * @deprecated always returns -1 (no hit limit), since 4.1.0 there is no notion of hit limit
152      * @see http://jira.codehaus.org/browse/MINDEXER-14
153      */
154     public int getResultHitLimit()
155     {
156         return -1;
157     }
158 
159     /**
160      * Sets the hit limit. Since 4.1.0 does nothing.
161      * 
162      * @param resultHitLimit
163      * @deprecated does nothing, since 4.1.0 there is no notion of hit limit
164      * @see http://jira.codehaus.org/browse/MINDEXER-14
165      */
166     public void setResultHitLimit( int resultHitLimit )
167     {
168         // noop
169     }
170 
171     public ArtifactInfoFilter getArtifactInfoFilter()
172     {
173         return artifactInfoFilter;
174     }
175 
176     public void setArtifactInfoFilter( ArtifactInfoFilter artifactInfoFilter )
177     {
178         this.artifactInfoFilter = artifactInfoFilter;
179     }
180 
181     public ArtifactInfoPostprocessor getArtifactInfoPostprocessor()
182     {
183         return artifactInfoPostprocessor;
184     }
185 
186     public void setArtifactInfoPostprocessor( ArtifactInfoPostprocessor artifactInfoPostprocessor )
187     {
188         this.artifactInfoPostprocessor = artifactInfoPostprocessor;
189     }
190 
191     public List<MatchHighlightRequest> getMatchHighlightRequests()
192     {
193         if ( matchHighlightRequests == null )
194         {
195             matchHighlightRequests = new ArrayList<MatchHighlightRequest>();
196         }
197 
198         return matchHighlightRequests;
199     }
200 
201     public void setMatchHighlightRequests( List<MatchHighlightRequest> matchHighlightRequests )
202     {
203         this.matchHighlightRequests = matchHighlightRequests;
204     }
205 
206     public boolean isLuceneExplain()
207     {
208         return luceneExplain;
209     }
210 
211     public void setLuceneExplain( boolean luceneExplain )
212     {
213         this.luceneExplain = luceneExplain;
214     }
215 }