From 445f0489dca5f263c410419244dc20f2954a9c40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Wed, 24 Mar 2010 19:44:54 +0000 Subject: [PATCH] moved toSort from LuceneQuery to LuceneSerializer --- .../com/mysema/query/lucene/LuceneQuery.java | 19 +++++-------------- .../mysema/query/lucene/LuceneSerializer.java | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/querydsl-lucene/src/main/java/com/mysema/query/lucene/LuceneQuery.java b/querydsl-lucene/src/main/java/com/mysema/query/lucene/LuceneQuery.java index b449f5139..966242c24 100644 --- a/querydsl-lucene/src/main/java/com/mysema/query/lucene/LuceneQuery.java +++ b/querydsl-lucene/src/main/java/com/mysema/query/lucene/LuceneQuery.java @@ -126,27 +126,18 @@ public class LuceneQuery implements SimpleQuery, SimpleProjectable< return documents; } - private List listSorted(List> orderBys, int limit, int offset) { - List sortFields = new ArrayList(orderBys.size()); - for (OrderSpecifier orderSpecifier : orderBys) { - if (!(orderSpecifier.getTarget() instanceof Path)) { - throw new IllegalArgumentException("argument was not of type Path."); - } - sortFields.add(new SortField(serializer.toField((Path)orderSpecifier.getTarget()), Locale.ENGLISH, !orderSpecifier.isAscending())); - } - Sort sort = new Sort(); - sort.setSort(sortFields.toArray(new SortField[sortFields.size()])); - List documents = null; + private List listSorted(List> orderBys, int limit, int offset) { try { + Sort sort = serializer.toSort(orderBys); ScoreDoc[] scoreDocs = searcher.search(createQuery(), null, limit + offset, sort).scoreDocs; - documents = new ArrayList(scoreDocs.length - offset); + List documents = new ArrayList(scoreDocs.length - offset); for (int i = offset; i < scoreDocs.length; ++i) { documents.add(searcher.doc(scoreDocs[i].doc)); } + return documents; } catch (IOException e) { throw new QueryException(e); - } - return documents; + } } @Override diff --git a/querydsl-lucene/src/main/java/com/mysema/query/lucene/LuceneSerializer.java b/querydsl-lucene/src/main/java/com/mysema/query/lucene/LuceneSerializer.java index a2e090c5e..d018dbffb 100644 --- a/querydsl-lucene/src/main/java/com/mysema/query/lucene/LuceneSerializer.java +++ b/querydsl-lucene/src/main/java/com/mysema/query/lucene/LuceneSerializer.java @@ -5,6 +5,7 @@ */ package com.mysema.query.lucene; +import java.util.ArrayList; import java.util.List; import java.util.Locale; @@ -16,6 +17,8 @@ import org.apache.lucene.search.BooleanQuery; import org.apache.lucene.search.PhraseQuery; import org.apache.lucene.search.PrefixQuery; import org.apache.lucene.search.Query; +import org.apache.lucene.search.Sort; +import org.apache.lucene.search.SortField; import org.apache.lucene.search.TermQuery; import org.apache.lucene.search.TermRangeQuery; import org.apache.lucene.search.WildcardQuery; @@ -26,6 +29,7 @@ import com.mysema.query.types.Expr; import com.mysema.query.types.Operation; import com.mysema.query.types.Operator; import com.mysema.query.types.Ops; +import com.mysema.query.types.OrderSpecifier; import com.mysema.query.types.Path; /** @@ -191,4 +195,19 @@ public class LuceneSerializer { throw new IllegalArgumentException("expr was not of type Operation"); } + public Sort toSort(List> orderBys){ + List sortFields = new ArrayList(orderBys.size()); + for (OrderSpecifier orderSpecifier : orderBys) { + if (!(orderSpecifier.getTarget() instanceof Path)) { + throw new IllegalArgumentException("argument was not of type Path."); + } + sortFields.add(new SortField(toField((Path)orderSpecifier.getTarget()), + Locale.ENGLISH, + !orderSpecifier.isAscending())); + } + Sort sort = new Sort(); + sort.setSort(sortFields.toArray(new SortField[sortFields.size()])); + return sort; + } + }