]> source.dussan.org Git - archiva.git/blob
b45f5727a25d41eca03977cef10c5cef56941a07
[archiva.git] /
1 package org.apache.maven.archiva.indexer;
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 org.apache.lucene.analysis.Analyzer;
23 import org.apache.lucene.queryParser.QueryParser;
24 import org.apache.lucene.search.Searchable;
25 import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
26 import org.apache.maven.archiva.indexer.lucene.LuceneEntryConverter;
27 import org.apache.maven.archiva.indexer.lucene.LuceneRepositoryContentRecord;
28
29 import java.io.File;
30 import java.util.Collection;
31
32 /**
33  * Common access methods for a Repository Content index.
34  *
35  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
36  */
37 public interface RepositoryContentIndex
38 {
39     /**
40      * Indexes the records.
41      *
42      * @param records list of {@link LuceneRepositoryContentRecord} objects.
43      * @throws RepositoryIndexException if there is a problem indexing the records.
44      */
45     void indexRecords( Collection records )
46         throws RepositoryIndexException;
47
48     /**
49      * Modify (potentially) existing records in the index.
50      * 
51      * @param records the collection of {@link LuceneRepositoryContentRecord} objects to modify in the index.
52      * @throws RepositoryIndexException if there is a problem modifying the records.
53      */
54     public void modifyRecords( Collection records )
55         throws RepositoryIndexException;
56
57     /**
58      * Modify an existing (potential) record in the index.
59      *  
60      * @param record the record to modify.
61      * @throws RepositoryIndexException if there is a problem modifying the record.
62      */
63     public void modifyRecord( LuceneRepositoryContentRecord record )
64         throws RepositoryIndexException;
65
66     /**
67      * Check if the index already exists.
68      *
69      * @return true if the index already exists
70      * @throws RepositoryIndexException if the index location is not valid
71      */
72     boolean exists()
73         throws RepositoryIndexException;
74
75     /**
76      * Delete records from the index. Simply ignore the request any did not exist.
77      *
78      * @param records the records to delete
79      * @throws RepositoryIndexException if there is a problem removing the record
80      */
81     void deleteRecords( Collection records )
82         throws RepositoryIndexException;
83
84     /**
85      * Retrieve all primary keys of records in the index.
86      *
87      * @return the keys
88      * @throws RepositoryIndexException if there was an error searching the index
89      */
90     Collection getAllRecordKeys()
91         throws RepositoryIndexException;
92
93     /**
94      * Get the index directory.
95      * 
96      * @return the index directory.
97      */
98     File getIndexDirectory();
99
100     /**
101      * Get the {@link QueryParser} appropriate for searches within this index.
102      * 
103      * @return the query parser;
104      */
105     QueryParser getQueryParser();
106
107     /**
108      * Get the id of index.
109      * 
110      * @return the id of index.
111      */
112     String getId();
113
114     /**
115      * Get the repository that this index belongs to.
116      * 
117      * @return the repository that this index belongs to.
118      */
119     ManagedRepositoryConfiguration getRepository();
120
121     /**
122      * Get the analyzer in use for this index.
123      * 
124      * @return the analyzer in use.
125      */
126     Analyzer getAnalyzer();
127
128     /**
129      * Get the document to record (and back again) converter.
130      * 
131      * @return the converter in use.
132      */
133     LuceneEntryConverter getEntryConverter();
134
135     /**
136      * Create a Searchable for this index.
137      * 
138      * @return the Searchable.
139      * @throws RepositoryIndexSearchException if there was a problem creating the searchable.
140      */
141     Searchable getSearchable()
142         throws RepositoryIndexSearchException;
143 }