From 0c5353e0cda4057539310d6d2b985c667e2b42da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Thu, 17 Sep 2015 22:46:28 +0300 Subject: [PATCH] Improve in serialization --- .../java/com/querydsl/lucene3/LuceneSerializer.java | 13 ++++++++++--- .../java/com/querydsl/lucene3/LuceneQueryTest.java | 10 ++++++++++ .../java/com/querydsl/lucene4/LuceneSerializer.java | 13 ++++++++++--- .../java/com/querydsl/lucene4/LuceneQueryTest.java | 10 ++++++++++ .../java/com/querydsl/lucene5/LuceneSerializer.java | 13 ++++++++++--- .../java/com/querydsl/lucene5/LuceneQueryTest.java | 10 ++++++++++ 6 files changed, 60 insertions(+), 9 deletions(-) diff --git a/querydsl-lucene3/src/main/java/com/querydsl/lucene3/LuceneSerializer.java b/querydsl-lucene3/src/main/java/com/querydsl/lucene3/LuceneSerializer.java index a58c6d108..43c676778 100644 --- a/querydsl-lucene3/src/main/java/com/querydsl/lucene3/LuceneSerializer.java +++ b/querydsl-lucene3/src/main/java/com/querydsl/lucene3/LuceneSerializer.java @@ -219,9 +219,16 @@ public class LuceneSerializer { Constant> collConstant = (Constant>) operation.getArg(1); Collection values = collConstant.getConstant(); BooleanQuery bq = new BooleanQuery(); - for (Object value : values) { - String[] str = convert(path, value); - bq.add(eq(field, str, ignoreCase), Occur.SHOULD); + if (Number.class.isAssignableFrom(path.getType())) { + for (Object value : values) { + TermQuery eq = new TermQuery(new Term(field, convertNumber((Number) value))); + bq.add(eq, Occur.SHOULD); + } + } else { + for (Object value : values) { + String[] str = convert(path, value); + bq.add(eq(field, str, ignoreCase), Occur.SHOULD); + } } return bq; } diff --git a/querydsl-lucene3/src/test/java/com/querydsl/lucene3/LuceneQueryTest.java b/querydsl-lucene3/src/test/java/com/querydsl/lucene3/LuceneQueryTest.java index 0ea2f6d5d..7a908c778 100644 --- a/querydsl-lucene3/src/test/java/com/querydsl/lucene3/LuceneQueryTest.java +++ b/querydsl-lucene3/src/test/java/com/querydsl/lucene3/LuceneQueryTest.java @@ -179,6 +179,16 @@ public class LuceneQueryTest { assertEquals(3, query.distinct().fetchCount()); } + @Test + public void In() { + assertEquals(2, query.where(title.in("Jurassic Park", "Nummisuutarit")).fetchCount()); + } + + @Test + public void In2() { + assertEquals(3, query.where(year.in(1990, 1864)).fetchCount()); + } + @Test public void List_Sorted_By_Year_Ascending() { query.where(year.between(1800, 2000)); diff --git a/querydsl-lucene4/src/main/java/com/querydsl/lucene4/LuceneSerializer.java b/querydsl-lucene4/src/main/java/com/querydsl/lucene4/LuceneSerializer.java index 34128b27b..a052b6414 100644 --- a/querydsl-lucene4/src/main/java/com/querydsl/lucene4/LuceneSerializer.java +++ b/querydsl-lucene4/src/main/java/com/querydsl/lucene4/LuceneSerializer.java @@ -222,9 +222,16 @@ public class LuceneSerializer { Constant> expectedConstant = (Constant>) operation.getArg(1); Collection values = expectedConstant.getConstant(); BooleanQuery bq = new BooleanQuery(); - for (Object value : values) { - String[] str = convert(path, value); - bq.add(eq(field, str, ignoreCase), Occur.SHOULD); + if (Number.class.isAssignableFrom(path.getType())) { + for (Object value : values) { + TermQuery eq = new TermQuery(new Term(field, convertNumber((Number) value))); + bq.add(eq, Occur.SHOULD); + } + } else { + for (Object value : values) { + String[] str = convert(path, value); + bq.add(eq(field, str, ignoreCase), Occur.SHOULD); + } } return bq; } diff --git a/querydsl-lucene4/src/test/java/com/querydsl/lucene4/LuceneQueryTest.java b/querydsl-lucene4/src/test/java/com/querydsl/lucene4/LuceneQueryTest.java index 5cd3fc5d5..02ea1f680 100644 --- a/querydsl-lucene4/src/test/java/com/querydsl/lucene4/LuceneQueryTest.java +++ b/querydsl-lucene4/src/test/java/com/querydsl/lucene4/LuceneQueryTest.java @@ -177,6 +177,16 @@ public class LuceneQueryTest { assertEquals(3, query.distinct().fetchCount()); } + @Test + public void In() { + assertEquals(2, query.where(title.in("Jurassic Park", "Nummisuutarit")).fetchCount()); + } + + @Test + public void In2() { + assertEquals(3, query.where(year.in(1990, 1864)).fetchCount()); + } + @Test public void List_Sorted_By_Year_Ascending() { query.where(year.between(1800, 2000)); diff --git a/querydsl-lucene5/src/main/java/com/querydsl/lucene5/LuceneSerializer.java b/querydsl-lucene5/src/main/java/com/querydsl/lucene5/LuceneSerializer.java index b483fdccd..e8c7548e6 100644 --- a/querydsl-lucene5/src/main/java/com/querydsl/lucene5/LuceneSerializer.java +++ b/querydsl-lucene5/src/main/java/com/querydsl/lucene5/LuceneSerializer.java @@ -269,9 +269,16 @@ public class LuceneSerializer { .getArg(1); Collection values = expectedConstant.getConstant(); BooleanQuery bq = new BooleanQuery(); - for (Object value : values) { - String[] str = convert(path, value); - bq.add(eq(field, str, ignoreCase), Occur.SHOULD); + if (Number.class.isAssignableFrom(path.getType())) { + for (Object value : values) { + TermQuery eq = new TermQuery(new Term(field, convertNumber((Number) value))); + bq.add(eq, Occur.SHOULD); + } + } else { + for (Object value : values) { + String[] str = convert(path, value); + bq.add(eq(field, str, ignoreCase), Occur.SHOULD); + } } return bq; } diff --git a/querydsl-lucene5/src/test/java/com/querydsl/lucene5/LuceneQueryTest.java b/querydsl-lucene5/src/test/java/com/querydsl/lucene5/LuceneQueryTest.java index 28b809135..0cd54bff0 100644 --- a/querydsl-lucene5/src/test/java/com/querydsl/lucene5/LuceneQueryTest.java +++ b/querydsl-lucene5/src/test/java/com/querydsl/lucene5/LuceneQueryTest.java @@ -253,6 +253,16 @@ public class LuceneQueryTest { assertEquals(3, query.distinct().fetchCount()); } + @Test + public void In() { + assertEquals(2, query.where(title.in("Jurassic Park", "Nummisuutarit")).fetchCount()); + } + + @Test + public void In2() { + assertEquals(3, query.where(year.in(1990, 1864)).fetchCount()); + } + @Test public void List_Sorted_By_Year_Ascending() { query.where(year.between(1800, 2000));