package com.venky.swf.plugins.lucene.index;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Fieldable;
import org.apache.lucene.search.Query;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.venky.swf.db.Database;
import com.venky.swf.plugins.lucene.index.common.ResultCollector;
import com.venky.swf.routing.Router;
import com.venky.swf.test.db.model.Sample;
public class LuceneIndexerTest {
@Before
public void setUp(){
Router.instance().setLoader(getClass().getClassLoader());
truncateSample();
createSample("Jack");
createSample("Venky");
commitAndWaitLucene();
}
private int truncateSample(){
return Database.getTable(Sample.class).truncate();
}
private void commitAndWaitLucene(){
Database.getInstance().getCurrentTransaction().commit();
sleep(5000);
}
private void sleep(long time){
try {
Thread.sleep(time);
} catch (InterruptedException e) {
//Simple sleep.
}
}
@After
public void tearDown(){
truncateSample();
commitAndWaitLucene();
}
private void createSample(String name){
Sample sample = Database.getTable(Sample.class).newRecord();
sample.setName(name);
sample.save();
}
@Test
public void test() {
Database db = null ;
try {
db = Database.getInstance();
db.open(null);
LuceneIndexer indexer = LuceneIndexer.instance(Sample.class);
Query q = indexer.constructQuery("j*");
indexer.fire(q, 10, new ResultCollector() {
int i =1;
public void found(Document doc) {
System.out.println("Document #"+ i);
for (Fieldable f:doc.getFields()){
System.out.println(f.name() +":" + f.stringValue());
}
}
});
Database.getInstance().getCurrentTransaction().commit();
}finally{
Database.getInstance().close();
}
}
}