]> source.dussan.org Git - archiva.git/blob
e87a4a2bb9eea51cb5038f33f5399ddfc2713cbe
[archiva.git] /
1 package org.apache.maven.repository.indexing;\r
2 \r
3 /*\r
4  * Copyright 2005-2006 The Apache Software Foundation.\r
5  *\r
6  * Licensed under the Apache License, Version 2.0 (the "License");\r
7  * you may not use this file except in compliance with the License.\r
8  * You may obtain a copy of the License at\r
9  *\r
10  *      http://www.apache.org/licenses/LICENSE-2.0\r
11  *\r
12  * Unless required by applicable law or agreed to in writing, software\r
13  * distributed under the License is distributed on an "AS IS" BASIS,\r
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
15  * See the License for the specific language governing permissions and\r
16  * limitations under the License.\r
17  */\r
18 \r
19 import org.apache.maven.artifact.factory.ArtifactFactory;\r
20 import org.apache.maven.repository.indexing.query.CompoundQuery;\r
21 import org.apache.maven.repository.indexing.query.Query;\r
22 import org.apache.maven.repository.indexing.query.SinglePhraseQuery;\r
23 \r
24 import java.util.ArrayList;\r
25 import java.util.Iterator;\r
26 import java.util.List;\r
27 \r
28 /**\r
29  * @author Maria Odea Ching\r
30  *         <p/>\r
31  *         This class is for "query everything" search in the repository index.\r
32  *         It creates the Query object that will be passed to the DefaultRepositoryIndexSearcher\r
33  *         for searching through all the fields in the index.\r
34  */\r
35 public class GeneralRepositoryIndexSearcher\r
36 {\r
37     private RepositoryIndex index;\r
38 \r
39     private ArtifactFactory factory;\r
40 \r
41     /**\r
42      * Class constructor\r
43      *\r
44      * @param index\r
45      */\r
46     public GeneralRepositoryIndexSearcher( RepositoryIndex index, ArtifactFactory factory )\r
47     {\r
48         this.index = index;\r
49         this.factory = factory;\r
50     }\r
51 \r
52     /**\r
53      * Method for searching the keyword in all the fields in the index. The index fields will be retrieved\r
54      * and query objects will be constructed using the optional (OR) CompoundQuery.\r
55      *\r
56      * @param keyword\r
57      * @return\r
58      * @throws RepositoryIndexSearchException\r
59      */\r
60     public List search( String keyword )\r
61         throws RepositoryIndexSearchException\r
62     {\r
63         List qryList = new ArrayList();\r
64         for ( int i = 0; i < index.FIELDS.length; i++ )\r
65         {\r
66             Query qry = new SinglePhraseQuery( index.FIELDS[i], keyword );\r
67             qryList.add( qry );\r
68         }\r
69 \r
70         CompoundQuery cQry = new CompoundQuery();\r
71         for ( Iterator iter = qryList.iterator(); iter.hasNext(); )\r
72         {\r
73             cQry.or( (Query) iter.next() );\r
74         }\r
75         RepositoryIndexSearcher searcher = new DefaultRepositoryIndexSearcher( index, factory );\r
76 \r
77         return searcher.search( cQry );\r
78     }\r
79 \r
80 }\r