Added support for querying without where(...) + formatting.

This commit is contained in:
Vesa Martilla 2010-12-30 09:24:20 +00:00
parent 4437ee8a87
commit 06e155e5bb
3 changed files with 23 additions and 19 deletions

View File

@ -9,6 +9,7 @@ import java.io.IOException;
import java.util.List;
import org.apache.lucene.document.Document;
import org.apache.lucene.search.MatchAllDocsQuery;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.Searcher;
@ -30,7 +31,7 @@ import com.mysema.query.types.Predicate;
/**
* LuceneQuery is a Querydsl query implementation for Lucene queries.
*
*
* @author vema
*/
public class LuceneQuery implements SimpleQuery<LuceneQuery>,
@ -52,7 +53,7 @@ public class LuceneQuery implements SimpleQuery<LuceneQuery>,
public LuceneQuery(final Searcher searcher) {
this(LuceneSerializer.DEFAULT, searcher);
}
private long innerCount(){
try {
final int maxDoc = searcher.maxDoc();
@ -62,22 +63,22 @@ public class LuceneQuery implements SimpleQuery<LuceneQuery>,
return searcher.search(createQuery(), maxDoc).totalHits;
} catch (final IOException e) {
throw new QueryException(e);
}
}
}
@Override
public long count() {
return innerCount();
return innerCount();
}
@Override
public long countDistinct() {
return innerCount();
return innerCount();
}
private Query createQuery() {
if (queryMixin.getMetadata().getWhere() == null) {
throw new QueryException("Where clause was null.");
return new MatchAllDocsQuery();
}
return serializer.toQuery(queryMixin.getMetadata().getWhere(),
queryMixin.getMetadata());
@ -131,14 +132,14 @@ public class LuceneQuery implements SimpleQuery<LuceneQuery>,
public CloseableIterator<Document> iterateDistinct() {
return iterate();
}
private List<Document> innerList(){
return new IteratorAdapter<Document>(iterate()).asList();
return new IteratorAdapter<Document>(iterate()).asList();
}
@Override
public List<Document> list() {
return innerList();
return innerList();
}
@Override

View File

@ -218,10 +218,10 @@ public class LuceneSerializerTest {
@Test
public void eq_Numeric() throws Exception{
testQuery(longField.eq(1l), "longField:" + LONG_PREFIX_CODED, 1);
testQuery(shortField.eq((short)1), "shortField:" + SHORT_PREFIX_CODED, 1);
testQuery(byteField.eq((byte)1), "byteField:" + BYTE_PREFIX_CODED, 1);
testQuery(floatField.eq((float)1.0), "floatField:" + FLOAT_PREFIX_CODED, 1);
testQuery(longField.eq(1l), "longField:" + LONG_PREFIX_CODED, 1);
testQuery(shortField.eq((short)1), "shortField:" + SHORT_PREFIX_CODED, 1);
testQuery(byteField.eq((byte)1), "byteField:" + BYTE_PREFIX_CODED, 1);
testQuery(floatField.eq((float)1.0), "floatField:" + FLOAT_PREFIX_CODED, 1);
}
@Test

View File

@ -47,9 +47,9 @@ import com.mysema.query.types.path.StringPath;
/**
* Tests for LuceneQuery
*
*
* @author vema
*
*
*/
public class LuceneQueryTest {
@ -131,9 +131,8 @@ public class LuceneQueryTest {
searcher.close();
}
@Test(expected = QueryException.class)
public void count_Empty_Where_Clause() {
query.count();
assertEquals(4, query.count());
}
@Test
@ -521,6 +520,10 @@ public class LuceneQueryTest {
++count;
}
assertEquals(4, count);
}
@Test
public void All_By_Excluding_Where() {
assertEquals(4, query.list().size());
}
}