Revision ece6cbb6
Added by Cherian Mathew about 11 years ago
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/search/CdmMassIndexer.java | ||
---|---|---|
12 | 12 |
import java.io.IOException; |
13 | 13 |
import java.lang.reflect.Field; |
14 | 14 |
import java.util.ArrayList; |
15 |
import java.util.HashSet; |
|
15 | 16 |
import java.util.Iterator; |
16 | 17 |
import java.util.List; |
18 |
import java.util.Set; |
|
17 | 19 |
|
18 | 20 |
import org.apache.log4j.Logger; |
19 | 21 |
import org.apache.lucene.index.IndexReader; |
... | ... | |
61 | 63 |
@Transactional |
62 | 64 |
public class CdmMassIndexer implements ICdmMassIndexer { |
63 | 65 |
|
66 |
private Set<Class<? extends CdmBase>> indexedClasses = new HashSet<Class<? extends CdmBase>>(); |
|
64 | 67 |
public static final Logger logger = Logger.getLogger(CdmMassIndexer.class); |
65 | 68 |
|
66 | 69 |
/* |
... | ... | |
257 | 260 |
} |
258 | 261 |
|
259 | 262 |
monitor.setTaskName("CdmMassIndexer"); |
260 |
int steps = indexedClasses().length + 1; // +1 for optimize
|
|
261 |
monitor.beginTask("Reindexing " + indexedClasses().length + " classes", steps);
|
|
263 |
int steps = indexedClasses().size() + 1; // +1 for optimize
|
|
264 |
monitor.beginTask("Reindexing " + indexedClasses().size() + " classes", steps);
|
|
262 | 265 |
|
263 | 266 |
for(Class<? extends CdmBase> type : indexedClasses()){ |
264 | 267 |
reindex(type, monitor); |
265 | 268 |
} |
266 | 269 |
|
267 |
optimize(); |
|
268 |
monitor.worked(1); |
|
269 |
|
|
270 |
monitor.subTask("Optimizing Index"); |
|
271 |
SubProgressMonitor subMonitor = new SubProgressMonitor(monitor, 1); |
|
272 |
subMonitor.beginTask("Optimizing Index",1); |
|
273 |
optimize(); |
|
274 |
subMonitor.worked(1); |
|
275 |
logger.info("end index optimization"); |
|
276 |
subMonitor.done(); |
|
277 |
|
|
278 |
//monitor.worked(1); |
|
270 | 279 |
monitor.done(); |
271 | 280 |
} |
272 | 281 |
|
... | ... | |
317 | 326 |
} |
318 | 327 |
|
319 | 328 |
monitor.setTaskName("CdmMassIndexer"); |
320 |
int steps = indexedClasses().length + 1; // +1 for optimize
|
|
321 |
monitor.beginTask("Purging " + indexedClasses().length + " classes", steps);
|
|
329 |
int steps = indexedClasses().size() + 1; // +1 for optimize
|
|
330 |
monitor.beginTask("Purging " + indexedClasses().size() + " classes", steps);
|
|
322 | 331 |
|
323 | 332 |
for(Class<? extends CdmBase> type : indexedClasses()){ |
324 | 333 |
purge(type, monitor); |
... | ... | |
364 | 373 |
*/ |
365 | 374 |
@SuppressWarnings("unchecked") |
366 | 375 |
@Override |
367 |
public Class<? extends CdmBase>[] indexedClasses() { |
|
368 |
return new Class[] { |
|
369 |
TaxonBase.class, |
|
370 |
DescriptionElementBase.class, |
|
371 |
Classification.class, |
|
372 |
TaxonNameBase.class, |
|
373 |
SpecimenOrObservationBase.class |
|
374 |
}; |
|
376 |
public Set<Class<? extends CdmBase>> indexedClasses() { |
|
377 |
// indexedClasses.clear(); |
|
378 |
// indexedClasses.add(DescriptionElementBase.class); |
|
379 |
// indexedClasses.add(TaxonBase.class); |
|
380 |
// indexedClasses.add(DescriptionElementBase.class); |
|
381 |
// indexedClasses.add(Classification.class); |
|
382 |
// indexedClasses.add(TaxonNameBase.class); |
|
383 |
// indexedClasses.add(SpecimenOrObservationBase.class); |
|
384 |
return indexedClasses; |
|
375 | 385 |
} |
376 | 386 |
|
377 | 387 |
/** |
... | ... | |
384 | 394 |
}; |
385 | 395 |
} |
386 | 396 |
|
397 |
@Override |
|
398 |
public void addToIndexedClasses(Class<? extends CdmBase> cdmBaseClass) { |
|
399 |
indexedClasses.add(cdmBaseClass); |
|
400 |
|
|
401 |
} |
|
402 |
|
|
403 |
@Override |
|
404 |
public void clearIndexedClasses() { |
|
405 |
indexedClasses.clear(); |
|
406 |
} |
|
407 |
|
|
387 | 408 |
|
388 | 409 |
} |
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/search/ICdmMassIndexer.java | ||
---|---|---|
1 | 1 |
package eu.etaxonomy.cdm.api.service.search; |
2 | 2 |
|
3 |
import java.util.Set; |
|
4 |
|
|
3 | 5 |
import eu.etaxonomy.cdm.common.monitor.IProgressMonitor; |
6 |
import eu.etaxonomy.cdm.model.common.CdmBase; |
|
4 | 7 |
|
5 | 8 |
/** |
6 | 9 |
* @author andreas |
... | ... | |
22 | 25 |
*/ |
23 | 26 |
public abstract void purge(IProgressMonitor monitor); |
24 | 27 |
|
25 |
public Class[] indexedClasses(); |
|
28 |
/** |
|
29 |
* Returns a list of (sub-classes of CdmBase) classes to be indexed. |
|
30 |
* |
|
31 |
* @return a List of {@link CdmBase} sub classes |
|
32 |
*/ |
|
33 |
public Set<Class<? extends CdmBase>> indexedClasses(); |
|
34 |
|
|
35 |
/** |
|
36 |
* Adds to the current list of (sub-classes of CdmBase) classes to be indexed. |
|
37 |
* |
|
38 |
* @param cdmBaseClass sub-class of CdmBase class to add |
|
39 |
*/ |
|
40 |
public void addToIndexedClasses(Class<? extends CdmBase> cdmBaseClass); |
|
26 | 41 |
|
42 |
/** |
|
43 |
* Clears the current list of (sub-classes of CdmBase) classes to be indexed. |
|
44 |
*/ |
|
45 |
public void clearIndexedClasses(); |
|
27 | 46 |
/** |
28 | 47 |
* Create (spell-checking) dictionary listed in {@link ICdmMassIndexer#dictionaryClasses()}. |
29 | 48 |
* This action will not purge the dictionary. |
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/TaxonServiceSearchTest.java | ||
---|---|---|
27 | 27 |
import org.apache.lucene.index.CorruptIndexException; |
28 | 28 |
import org.apache.lucene.queryParser.ParseException; |
29 | 29 |
import org.junit.Assert; |
30 |
import org.junit.Before; |
|
30 | 31 |
import org.junit.Ignore; |
31 | 32 |
import org.junit.Test; |
32 | 33 |
import org.unitils.dbunit.annotation.DataSet; |
... | ... | |
106 | 107 |
|
107 | 108 |
private static final int BENCHMARK_ROUNDS = 300; |
108 | 109 |
|
110 |
/** |
|
111 |
* @throws java.lang.Exception |
|
112 |
*/ |
|
113 |
@Before |
|
114 |
public void setUp() throws Exception { |
|
115 |
indexer.clearIndexedClasses(); |
|
116 |
indexer.addToIndexedClasses(DescriptionElementBase.class); |
|
117 |
indexer.addToIndexedClasses(TaxonBase.class); |
|
118 |
} |
|
109 | 119 |
@Test |
110 | 120 |
public void testDbUnitUsageTest() throws Exception { |
111 | 121 |
assertNotNull("taxonService should exist", taxonService); |
Also available in: Unified diff
ICdmMassIndexer : added methods to clear and add classes to the list of indexed classes
CdmMassIndexer : implemented the new methods in ICdmMassIndexer
TaxonServiceSearchTest : updated test to initialise the list of indexed classes