You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2011/04/15 19:20:35 UTC

svn commit: r1092767 - in /james/mailbox/trunk: api/src/main/java/org/apache/james/mailbox/ store/ store/src/main/java/org/apache/james/mailbox/store/ store/src/main/java/org/apache/james/mailbox/store/lucene/ store/src/test/java/org/apache/james/mailb...

Author: norman
Date: Fri Apr 15 17:20:35 2011
New Revision: 1092767

URL: http://svn.apache.org/viewvc?rev=1092767&view=rev
Log:
SearchQuery should support to search by different Date resolutions. See MAILBOX-55

Modified:
    james/mailbox/trunk/api/src/main/java/org/apache/james/mailbox/SearchQuery.java
    james/mailbox/trunk/store/pom.xml
    james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MessageSearches.java
    james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/lucene/LuceneMessageSearchIndex.java
    james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/SearchUtilsTest.java
    james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/lucene/LuceneMessageSearchIndexTest.java

Modified: james/mailbox/trunk/api/src/main/java/org/apache/james/mailbox/SearchQuery.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/api/src/main/java/org/apache/james/mailbox/SearchQuery.java?rev=1092767&r1=1092766&r2=1092767&view=diff
==============================================================================
--- james/mailbox/trunk/api/src/main/java/org/apache/james/mailbox/SearchQuery.java (original)
+++ james/mailbox/trunk/api/src/main/java/org/apache/james/mailbox/SearchQuery.java Fri Apr 15 17:20:35 2011
@@ -21,7 +21,9 @@ package org.apache.james.mailbox;
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Calendar;
 import java.util.Collection;
+import java.util.Date;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -43,6 +45,50 @@ import javax.mail.Flags.Flag;
 public class SearchQuery {
 
     /**
+     * The Resolution which should get used for {@link Date} searches
+     * 
+     *
+     */
+    public static enum DateResolution {
+        Second,
+        Minute,
+        Hour,
+        Day,
+        Month,
+        Year
+        
+        
+    }
+
+    public static int toCalendarType(DateResolution res) {
+        int type;
+        switch (res) {
+        case Year:
+            type = Calendar.YEAR;
+            break;
+        case Month:
+            type = Calendar.MONTH;
+            break;
+        case Day:
+            type = Calendar.DAY_OF_MONTH;
+            break;
+        case Hour:
+            type = Calendar.HOUR_OF_DAY;
+            break;
+        case Minute:
+            type = Calendar.MINUTE;
+            break;
+        case Second:
+            type = Calendar.SECOND;
+            break;
+        default:
+            type = Calendar.MILLISECOND;
+            break;
+        }
+        return type;
+    }
+    
+    /**
      * Creates a filter for message size less than the given value
      * 
      * @param value
@@ -90,8 +136,8 @@ public class SearchQuery {
      *            year
      * @return <code>Criterion</code>, not null
      */
-    public static final Criterion internalDateAfter(int day, int month, int year) {
-        return new InternalDateCriterion(new DateOperator(DateComparator.AFTER, day, month, year));
+    public static final Criterion internalDateAfter(Date date, DateResolution res) {
+        return new InternalDateCriterion(new DateOperator(DateComparator.AFTER, date, res));
     }
 
     /**
@@ -105,8 +151,8 @@ public class SearchQuery {
      *            year
      * @return <code>Criterion</code>, not null
      */
-    public static final Criterion internalDateOn(int day, int month, int year) {
-        return new InternalDateCriterion(new DateOperator(DateComparator.ON, day, month, year));
+    public static final Criterion internalDateOn(Date date, DateResolution res) {
+        return new InternalDateCriterion(new DateOperator(DateComparator.ON, date, res));
     }
 
     /**
@@ -121,8 +167,8 @@ public class SearchQuery {
      *            year
      * @return <code>Criterion</code>, not null
      */
-    public static final Criterion internalDateBefore(int day, int month, int year) {
-        return new InternalDateCriterion(new DateOperator(DateComparator.BEFORE, day, month, year));
+    public static final Criterion internalDateBefore(Date date, DateResolution res) {
+        return new InternalDateCriterion(new DateOperator(DateComparator.BEFORE, date, res));
     }
 
     /**
@@ -140,8 +186,8 @@ public class SearchQuery {
      *            year
      * @return <code>Criterion</code>, not null
      */
-    public static final Criterion headerDateAfter(String headerName, int day, int month, int year) {
-        return new HeaderCriterion(headerName, new DateOperator(DateComparator.AFTER, day, month, year));
+    public static final Criterion headerDateAfter(String headerName, Date date, DateResolution res) {
+        return new HeaderCriterion(headerName, new DateOperator(DateComparator.AFTER, date, res));
     }
 
     /**
@@ -159,8 +205,8 @@ public class SearchQuery {
      *            year
      * @return <code>Criterion</code>, not null
      */
-    public static final Criterion headerDateOn(String headerName, int day, int month, int year) {
-        return new HeaderCriterion(headerName, new DateOperator(DateComparator.ON, day, month, year));
+    public static final Criterion headerDateOn(String headerName, Date date, DateResolution res) {
+        return new HeaderCriterion(headerName, new DateOperator(DateComparator.ON, date, res));
     }
 
     /**
@@ -178,8 +224,8 @@ public class SearchQuery {
      *            year
      * @return <code>Criterion</code>, not null
      */
-    public static final Criterion headerDateBefore(String headerName, int day, int month, int year) {
-        return new HeaderCriterion(headerName, new DateOperator(DateComparator.BEFORE, day, month, year));
+    public static final Criterion headerDateBefore(String headerName, Date date, DateResolution res) {
+        return new HeaderCriterion(headerName, new DateOperator(DateComparator.BEFORE, date, res));
     }
 
     /**
@@ -1540,38 +1586,24 @@ public class SearchQuery {
 
         private final DateComparator type;
 
-        private final int day;
+        private final Date date;
 
-        private final int month;
+        private final DateResolution res;
 
-        private final int year;
-
-        public DateOperator(final DateComparator type, final int day, final int month, final int year) {
+        public DateOperator(final DateComparator type, final Date date, final DateResolution res) {
             super();
             this.type = type;
-            this.day = day;
-            this.month = month;
-            this.year = year;
+            this.date = date;
+            this.res = res;
         }
 
-        /**
-         * Gets the day-of-the-month.
-         * 
-         * @return the day, one based
-         */
-        public int getDay() {
-            return day;
+        public Date getDate() {
+            return date;
         }
-
-        /**
-         * Gets the month-of-the-year.
-         * 
-         * @return the month, one based
-         */
-        public int getMonth() {
-            return month;
+        
+        public DateResolution getDateResultion() {
+            return res;
         }
-
         /**
          * Gets the operator type.
          * 
@@ -1583,24 +1615,14 @@ public class SearchQuery {
         }
 
         /**
-         * Gets the year.
-         * 
-         * @return the year
-         */
-        public int getYear() {
-            return year;
-        }
-
-        /**
          * @see java.lang.Object#hashCode()
          */
         @Override
         public int hashCode() {
             final int PRIME = 31;
             int result = 1;
-            result = PRIME * result + day;
-            result = PRIME * result + month;
-            result = PRIME * result + year;
+            result = PRIME * result + (int)date.getTime();
+            result = PRIME * result + type.hashCode();
             return result;
         }
 
@@ -1616,14 +1638,12 @@ public class SearchQuery {
             if (getClass() != obj.getClass())
                 return false;
             final DateOperator other = (DateOperator) obj;
-            if (day != other.day)
+            if (date != other.date)
                 return false;
-            if (month != other.month)
+            if (res != other.res)
                 return false;
             if (type != other.type)
                 return false;
-            if (year != other.year)
-                return false;
             return true;
         }
 
@@ -1638,7 +1658,7 @@ public class SearchQuery {
 
             StringBuffer retValue = new StringBuffer();
 
-            retValue.append("DateOperator ( ").append("day = ").append(this.day).append(TAB).append("month = ").append(this.month).append(TAB).append("type = ").append(this.type).append(TAB).append("year = ").append(this.year).append(TAB).append(" )");
+            retValue.append("DateOperator ( ").append("date = ").append(date.toString()).append(TAB).append("res = ").append(this.res.name()).append(TAB).append("type = ").append(this.type).append(TAB).append(TAB).append(" )");
 
             return retValue.toString();
         }

Modified: james/mailbox/trunk/store/pom.xml
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/pom.xml?rev=1092767&r1=1092766&r2=1092767&view=diff
==============================================================================
--- james/mailbox/trunk/store/pom.xml (original)
+++ james/mailbox/trunk/store/pom.xml Fri Apr 15 17:20:35 2011
@@ -53,6 +53,10 @@
       <artifactId>lucene-analyzers</artifactId>
     </dependency>
     <dependency>
+      <groupId>commons-lang</groupId>
+      <artifactId>commons-lang</artifactId>
+    </dependency>
+    <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <scope>test</scope>

Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MessageSearches.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MessageSearches.java?rev=1092767&r1=1092766&r2=1092767&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MessageSearches.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MessageSearches.java Fri Apr 15 17:20:35 2011
@@ -32,8 +32,10 @@ import java.util.TimeZone;
 
 import javax.mail.Flags;
 
+import org.apache.commons.lang.time.DateUtils;
 import org.apache.james.mailbox.MailboxException;
 import org.apache.james.mailbox.SearchQuery;
+import org.apache.james.mailbox.SearchQuery.DateResolution;
 import org.apache.james.mailbox.UnsupportedSearchException;
 import org.apache.james.mailbox.SearchQuery.NumericRange;
 import org.apache.james.mailbox.store.mail.model.Header;
@@ -324,24 +326,23 @@ public class MessageSearches {
 
     private boolean matches(final SearchQuery.DateOperator operator,
             final String headerName, final MailboxMembership<?> message) throws UnsupportedSearchException {
-        final int day = operator.getDay();
-        final int month = operator.getMonth();
-        final int year = operator.getYear();
-        final int iso = toISODate(day, month, year);
+       
+        final Date date = operator.getDate();
+        final DateResolution res = operator.getDateResultion();
         final String value = headerValue(headerName, message);
         if (value == null) {
             return false;
         } else {
             try {
-                final int isoFieldValue = toISODate(value);
+                final Date isoFieldValue = toISODate(value);
                 final SearchQuery.DateComparator type = operator.getType();
                 switch (type) {
                     case AFTER:
-                        return iso < isoFieldValue;
+                        return after(isoFieldValue, date, res);
                     case BEFORE:
-                        return iso > isoFieldValue;
+                        return before(isoFieldValue, date, res);
                     case ON:
-                        return iso == isoFieldValue;
+                        return on(isoFieldValue, date, res);
                     default:
                         throw new UnsupportedSearchException();
                 }
@@ -364,12 +365,10 @@ public class MessageSearches {
         return value;
     }
 
-    private int toISODate(String value) throws ParseException {
+    private Date toISODate(String value) throws ParseException {
         final StringReader reader = new StringReader(value);
         final DateTime dateTime = new DateTimeParser(reader).parseAll();
-        final int isoFieldValue = toISODate(dateTime.getDay(), dateTime
-                .getMonth(), dateTime.getYear());
-        return isoFieldValue;
+        return dateTime.getDate();
     }
 
     private boolean matches(SearchQuery.SizeCriterion criterion, MailboxMembership<?> message)
@@ -399,58 +398,60 @@ public class MessageSearches {
     private boolean matchesInternalDate(
             final SearchQuery.DateOperator operator, final MailboxMembership<?> message)
             throws UnsupportedSearchException {
-        final int day = operator.getDay();
-        final int month = operator.getMonth();
-        final int year = operator.getYear();
+        final Date date = operator.getDate();
+        final DateResolution res = operator.getDateResultion();
         final Date internalDate = message.getInternalDate();
         final SearchQuery.DateComparator type = operator.getType();
         switch (type) {
             case ON:
-                return on(day, month, year, internalDate);
+                return on(internalDate, date, res);
             case BEFORE:
-                return before(day, month, year, internalDate);
+                return before(internalDate, date, res);
             case AFTER:
-                return after(day, month, year, internalDate);
+                return after(internalDate, date, res);
             default:
                 throw new UnsupportedSearchException();
         }
     }
 
-    private boolean on(final int day, final int month, final int year,
-            final Date date) {
-        final Calendar gmt = getGMT();
-        gmt.setTime(date);
-        return day == gmt.get(Calendar.DAY_OF_MONTH)
-                && month == (gmt.get(Calendar.MONTH) + 1)
-                && year == gmt.get(Calendar.YEAR);
-    }
-
-    private boolean before(final int day, final int month, final int year,
-            final Date date) {
-        return toISODate(date) < toISODate(day, month, year);
-    }
-
-    private boolean after(final int day, final int month, final int year,
-            final Date date) {
-        return toISODate(date) > toISODate(day, month, year);
-    }
-
-    private int toISODate(final Date date) {
-        final Calendar gmt = getGMT();
-        gmt.setTime(date);
-        final int day = gmt.get(Calendar.DAY_OF_MONTH);
-        final int month = (gmt.get(Calendar.MONTH) + 1);
-        final int year = gmt.get(Calendar.YEAR);
-        final int result = toISODate(day, month, year);
-        return result;
+    private boolean on(Date date1,
+            final Date date2, DateResolution res) {
+        int type = SearchQuery.toCalendarType(res);
+        final Calendar gmt1 = getGMT();
+        gmt1.setTime(date1);
+        
+        final Calendar gmt2 = getGMT();
+        gmt2.setTime(date2);
+        
+        return DateUtils.truncate(gmt1, type).getTimeInMillis() == (DateUtils.truncate(gmt2, type)).getTimeInMillis();
+    }
+
+    private boolean before(Date date1,
+            final Date date2, DateResolution res) {
+        int type = SearchQuery.toCalendarType(res);
+        final Calendar gmt1 = getGMT();
+        gmt1.setTime(date1);
+        
+        final Calendar gmt2 = getGMT();
+        gmt2.setTime(date2);
+        
+        return DateUtils.truncate(gmt1, type).before(DateUtils.truncate(gmt2, type));
+    }
+
+    private boolean after(Date date1,
+            final Date date2, DateResolution res) {
+        int type = SearchQuery.toCalendarType(res);
+        final Calendar gmt1 = getGMT();
+        gmt1.setTime(date1);
+        
+        final Calendar gmt2 = getGMT();
+        gmt2.setTime(date2);
+        
+        return DateUtils.truncate(gmt1, type).after(DateUtils.truncate(gmt2, type));
     }
 
+
     private Calendar getGMT() {
         return Calendar.getInstance(TimeZone.getTimeZone("GMT"), Locale.UK);
     }
-
-    private static int toISODate(final int day, final int month, final int year) {
-        final int result = (year * 10000) + (month * 100) + day;
-        return result;
-    }
 }

Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/lucene/LuceneMessageSearchIndex.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/lucene/LuceneMessageSearchIndex.java?rev=1092767&r1=1092766&r2=1092767&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/lucene/LuceneMessageSearchIndex.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/lucene/LuceneMessageSearchIndex.java Fri Apr 15 17:20:35 2011
@@ -23,6 +23,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Calendar;
+import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
@@ -30,6 +31,7 @@ import java.util.Locale;
 import javax.mail.Flags;
 import javax.mail.Flags.Flag;
 
+import org.apache.commons.lang.time.DateUtils;
 import org.apache.james.mailbox.MailboxException;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageRange;
@@ -38,6 +40,7 @@ import org.apache.james.mailbox.SearchQu
 import org.apache.james.mailbox.SearchQuery.ContainsOperator;
 import org.apache.james.mailbox.SearchQuery.Criterion;
 import org.apache.james.mailbox.SearchQuery.DateOperator;
+import org.apache.james.mailbox.SearchQuery.DateResolution;
 import org.apache.james.mailbox.SearchQuery.FlagCriterion;
 import org.apache.james.mailbox.SearchQuery.HeaderCriterion;
 import org.apache.james.mailbox.SearchQuery.HeaderOperator;
@@ -54,7 +57,6 @@ import org.apache.james.mime4j.message.S
 import org.apache.james.mime4j.parser.MimeStreamParser;
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.PerFieldAnalyzerWrapper;
-import org.apache.lucene.document.DateTools;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.document.Field.Index;
@@ -123,11 +125,16 @@ public class LuceneMessageSearchIndex<Id
      */
     public final static String HEADERS_FIELD ="headers";
     
-    /**
-     * {@link Field} which will contain the internalDate of the {@link MailboxMembership}
-     */
-    public final static String INTERNAL_DATE_FIELD ="internaldate";
+
+    public final static String INTERNAL_DATE_FIELD_YEAR_RESOLUTION ="internaldateYearResolution";
  
+    public final static String INTERNAL_DATE_FIELD_MONTH_RESOLUTION ="internaldateMonthResolution";
+    public final static String INTERNAL_DATE_FIELD_DAY_RESOLUTION ="internaldateDayResolution";
+    public final static String INTERNAL_DATE_FIELD_HOUR_RESOLUTION ="internaldateHourResolution";
+    public final static String INTERNAL_DATE_FIELD_MINUTE_RESOLUTION ="internaldateMinuteResolution";
+    public final static String INTERNAL_DATE_FIELD_SECOND_RESOLUTION ="internaldateSecondResolution";
+    public final static String INTERNAL_DATE_FIELD_MILLISECOND_RESOLUTION ="internaldateMillisecondResolution";
+
     /**
      * {@link Field} which will contain the id of the {@link Mailbox}
      */
@@ -225,8 +232,14 @@ public class LuceneMessageSearchIndex<Id
         // add flags
         indexFlags(membership.createFlags(), doc);
 
-        // store the internal date with resulution of a DAY
-        doc.add(new NumericField(INTERNAL_DATE_FIELD,Store.NO, true).setLongValue(DateTools.round(membership.getInternalDate().getTime(),DateTools.Resolution.DAY)));
+        doc.add(new NumericField(INTERNAL_DATE_FIELD_YEAR_RESOLUTION,Store.NO, true).setLongValue(DateUtils.truncate(membership.getInternalDate(),Calendar.YEAR).getTime()));
+        doc.add(new NumericField(INTERNAL_DATE_FIELD_MONTH_RESOLUTION,Store.NO, true).setLongValue(DateUtils.truncate(membership.getInternalDate(),Calendar.MONTH).getTime()));
+        doc.add(new NumericField(INTERNAL_DATE_FIELD_DAY_RESOLUTION,Store.NO, true).setLongValue(DateUtils.truncate(membership.getInternalDate(),Calendar.DAY_OF_MONTH).getTime()));
+        doc.add(new NumericField(INTERNAL_DATE_FIELD_HOUR_RESOLUTION,Store.NO, true).setLongValue(DateUtils.truncate(membership.getInternalDate(),Calendar.HOUR_OF_DAY).getTime()));
+        doc.add(new NumericField(INTERNAL_DATE_FIELD_MINUTE_RESOLUTION,Store.NO, true).setLongValue(DateUtils.truncate(membership.getInternalDate(),Calendar.MINUTE).getTime()));
+        doc.add(new NumericField(INTERNAL_DATE_FIELD_SECOND_RESOLUTION,Store.NO, true).setLongValue(DateUtils.truncate(membership.getInternalDate(),Calendar.SECOND).getTime()));
+        doc.add(new NumericField(INTERNAL_DATE_FIELD_MILLISECOND_RESOLUTION,Store.NO, true).setLongValue(DateUtils.truncate(membership.getInternalDate(),Calendar.MILLISECOND).getTime()));
+
         doc.add(new NumericField(SIZE_FIELD,Store.NO, true).setLongValue(membership.getMessage().getFullContentOctets()));
         
         // content handler which will index the headers and the body of the message
@@ -273,7 +286,7 @@ public class LuceneMessageSearchIndex<Id
         MimeStreamParser parser = new MimeStreamParser();
         parser.setContentHandler(handler);
         try {
-            // paese the message to index headers and body
+            // parse the message to index headers and body
             parser.parse(membership.getMessage().getFullContent());
         } catch (MimeException e) {
             // This should never happen as it was parsed before too without problems.            
@@ -305,6 +318,34 @@ public class LuceneMessageSearchIndex<Id
 
     }
 
+
+    private static String toInteralDateField(DateResolution res) {
+        String field;
+        switch (res) {
+        case Year:
+            field = INTERNAL_DATE_FIELD_YEAR_RESOLUTION;
+            break;
+        case Month:
+            field = INTERNAL_DATE_FIELD_MONTH_RESOLUTION;
+            break;
+        case Day:
+            field = INTERNAL_DATE_FIELD_DAY_RESOLUTION;
+            break;
+        case Hour:
+            field = INTERNAL_DATE_FIELD_HOUR_RESOLUTION;
+            break;
+        case Minute:
+            field = INTERNAL_DATE_FIELD_MINUTE_RESOLUTION;
+            break;
+        case Second:
+            field = INTERNAL_DATE_FIELD_SECOND_RESOLUTION;
+            break;
+        default:
+            field = INTERNAL_DATE_FIELD_MILLISECOND_RESOLUTION;
+            break;
+        }
+        return field;
+    }
     
     /**
      * Return a {@link Query} which is build based on the given {@link SearchQuery.InternalDateCriterion}
@@ -315,17 +356,18 @@ public class LuceneMessageSearchIndex<Id
      */
     public static Query createInternalDateQuery(SearchQuery.InternalDateCriterion crit) throws UnsupportedSearchException {
         DateOperator op = crit.getOperator();
-        Calendar cal = Calendar.getInstance();
-        cal.set(op.getYear(), op.getMonth() - 1, op.getDay());         
-        long value = DateTools.round(cal.getTimeInMillis(), DateTools.Resolution.DAY);
+        DateResolution res = op.getDateResultion();
+        Date date = op.getDate();
+        long value = DateUtils.truncate(date, SearchQuery.toCalendarType(res)).getTime();
+        String field = toInteralDateField(res);
         
         switch(op.getType()) {
         case ON:
-            return NumericRangeQuery.newLongRange(INTERNAL_DATE_FIELD ,value, value, true, true);
+            return NumericRangeQuery.newLongRange(field ,value, value, true, true);
         case BEFORE: 
-            return NumericRangeQuery.newLongRange(INTERNAL_DATE_FIELD ,0L, value, true, false);
+            return NumericRangeQuery.newLongRange(field ,0L, value, true, false);
         case AFTER: 
-            return NumericRangeQuery.newLongRange(INTERNAL_DATE_FIELD ,value, Long.MAX_VALUE, false, true);
+            return NumericRangeQuery.newLongRange(field ,value, Long.MAX_VALUE, false, true);
         default:
             throw new UnsupportedSearchException();
         }

Modified: james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/SearchUtilsTest.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/SearchUtilsTest.java?rev=1092767&r1=1092766&r2=1092767&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/SearchUtilsTest.java (original)
+++ james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/SearchUtilsTest.java Fri Apr 15 17:20:35 2011
@@ -22,12 +22,16 @@ package org.apache.james.mailbox.store;
 import static org.junit.Assert.*;
 
 import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.Collection;
 import java.util.Date;
+import java.util.Locale;
+import java.util.TimeZone;
 
 import javax.mail.Flags;
 
 import org.apache.james.mailbox.SearchQuery;
+import org.apache.james.mailbox.SearchQuery.DateResolution;
 import org.apache.james.mailbox.store.MessageSearches;
 import org.apache.james.mailbox.store.mail.model.MailboxMembership;
 import org.junit.Before;
@@ -57,6 +61,15 @@ public class SearchUtilsTest {
 
     Collection<Long> recent;
 
+    private Calendar getGMT() {
+        return Calendar.getInstance(TimeZone.getTimeZone("GMT"), Locale.UK);
+    }
+    
+    private Date getDate(int day, int month, int year) {
+        Calendar cal = getGMT();
+        cal.set(year, month -1, day);
+        return cal.getTime();
+    }
     @Before
     public void setUp() throws Exception {
         recent = new ArrayList<Long>();
@@ -110,31 +123,32 @@ public class SearchUtilsTest {
     public void testMatchInternalDateEquals() throws Exception {
         builder.internalDate = SUN_SEP_9TH_2001;
         MailboxMembership<Long> row = builder.build();
-        assertFalse(searches.isMatch(SearchQuery.internalDateOn(9, 9, 2000),
+        assertFalse(searches.isMatch(SearchQuery.internalDateOn(getDate(9, 9, 2000), DateResolution.Day),
                 row, recent));
-        assertFalse(searches.isMatch(SearchQuery.internalDateOn(8, 9, 2001),
+        assertFalse(searches.isMatch(SearchQuery.internalDateOn(getDate(8, 9, 2001), DateResolution.Day),
                 row, recent));
-        assertTrue(searches.isMatch(SearchQuery.internalDateOn(9, 9, 2001),
+        assertTrue(searches.isMatch(SearchQuery.internalDateOn(getDate(9, 9, 2001), DateResolution.Day),
                 row, recent));
-        assertFalse(searches.isMatch(SearchQuery.internalDateOn(10, 9, 2001),
+        assertFalse(searches.isMatch(SearchQuery.internalDateOn(getDate(10, 9, 2001), DateResolution.Day),
                 row, recent));
-        assertFalse(searches.isMatch(SearchQuery.internalDateOn(9, 9, 2002),
+        assertFalse(searches.isMatch(SearchQuery.internalDateOn(getDate(9, 9, 2002), DateResolution.Day),
                 row, recent));
     }
 
+    
     @Test
     public void testMatchInternalDateBefore() throws Exception {
         builder.internalDate = SUN_SEP_9TH_2001;
         MailboxMembership<Long> row = builder.build();
         assertFalse(searches.isMatch(
-                SearchQuery.internalDateBefore(9, 9, 2000), row, recent));
+                SearchQuery.internalDateBefore(getDate(9, 9, 2000), DateResolution.Day), row, recent));
         assertFalse(searches.isMatch(
-                SearchQuery.internalDateBefore(8, 9, 2001), row, recent));
+                SearchQuery.internalDateBefore(getDate(8, 9, 2001), DateResolution.Day), row, recent));
         assertFalse(searches.isMatch(
-                SearchQuery.internalDateBefore(9, 9, 2001), row, recent));
+                SearchQuery.internalDateBefore(getDate(9, 9, 2001), DateResolution.Day), row, recent));
         assertTrue(searches.isMatch(
-                SearchQuery.internalDateBefore(10, 9, 2001), row, recent));
-        assertTrue(searches.isMatch(SearchQuery.internalDateBefore(9, 9, 2002),
+                SearchQuery.internalDateBefore(getDate(10, 9, 2001), DateResolution.Day), row, recent));
+        assertTrue(searches.isMatch(SearchQuery.internalDateBefore(getDate(9, 9, 2002), DateResolution.Day),
                 row, recent));
     }
 
@@ -142,15 +156,15 @@ public class SearchUtilsTest {
     public void testMatchInternalDateAfter() throws Exception {
         builder.internalDate = SUN_SEP_9TH_2001;
         MailboxMembership<Long> row = builder.build();
-        assertTrue(searches.isMatch(SearchQuery.internalDateAfter(9, 9, 2000),
+        assertTrue(searches.isMatch(SearchQuery.internalDateAfter(getDate(9, 9, 2000), DateResolution.Day),
                 row, recent));
-        assertTrue(searches.isMatch(SearchQuery.internalDateAfter(8, 9, 2001),
+        assertTrue(searches.isMatch(SearchQuery.internalDateAfter(getDate(8, 9, 2001), DateResolution.Day),
                 row, recent));
-        assertFalse(searches.isMatch(SearchQuery.internalDateAfter(9, 9, 2001),
+        assertFalse(searches.isMatch(SearchQuery.internalDateAfter(getDate(9, 9, 2001), DateResolution.Day),
                 row, recent));
         assertFalse(searches.isMatch(
-                SearchQuery.internalDateAfter(10, 9, 2001), row, recent));
-        assertFalse(searches.isMatch(SearchQuery.internalDateAfter(9, 9, 2002),
+                SearchQuery.internalDateAfter(getDate(10, 9, 2001), DateResolution.Day), row, recent));
+        assertFalse(searches.isMatch(SearchQuery.internalDateAfter(getDate(9, 9, 2002), DateResolution.Day),
                 row, recent));
     }
 
@@ -158,108 +172,108 @@ public class SearchUtilsTest {
     public void testMatchHeaderDateAfter() throws Exception {
         builder.header(DATE_FIELD, RFC822_SUN_SEP_9TH_2001);
         MailboxMembership<Long> row = builder.build();
-        assertTrue(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD, 9,
-                9, 2000), row, recent));
-        assertTrue(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD, 8,
-                9, 2001), row, recent));
-        assertFalse(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD, 9,
-                9, 2001), row, recent));
+        assertTrue(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD, getDate(9,
+                9, 2000), DateResolution.Day), row, recent));
+        assertTrue(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD, getDate(8,
+                9, 2001), DateResolution.Day), row, recent));
+        assertFalse(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD, getDate(9,
+                9, 2001), DateResolution.Day), row, recent));
         assertFalse(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD,
-                10, 9, 2001), row, recent));
-        assertFalse(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD, 9,
-                9, 2002), row, recent));
-        assertFalse(searches.isMatch(SearchQuery.headerDateAfter("BOGUS", 9, 9,
-                2001), row, recent));
+                getDate(10, 9, 2001), DateResolution.Day), row, recent));
+        assertFalse(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD, getDate(9,
+                9, 2002), DateResolution.Day), row, recent));
+        assertFalse(searches.isMatch(SearchQuery.headerDateAfter("BOGUS", getDate(9, 9,
+                2001), DateResolution.Day), row, recent));
     }
 
     @Test
     public void testShouldMatchCapsHeaderDateAfter() throws Exception {
         builder.header(DATE_FIELD.toUpperCase(), RFC822_SUN_SEP_9TH_2001);
         MailboxMembership<Long> row = builder.build();
-        assertTrue(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD, 9,
-                9, 2000), row, recent));
-        assertTrue(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD, 8,
-                9, 2001), row, recent));
-        assertFalse(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD, 9,
-                9, 2001), row, recent));
+        assertTrue(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD, getDate(9,
+                9, 2000), DateResolution.Day), row, recent));
+        assertTrue(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD, getDate(8,
+                9, 2001), DateResolution.Day), row, recent));
+        assertFalse(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD, getDate(9,
+                9, 2001), DateResolution.Day), row, recent));
         assertFalse(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD,
-                10, 9, 2001), row, recent));
-        assertFalse(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD, 9,
-                9, 2002), row, recent));
-        assertFalse(searches.isMatch(SearchQuery.headerDateAfter("BOGUS", 9, 9,
-                2001), row, recent));
+                getDate(10, 9, 2001), DateResolution.Day), row, recent));
+        assertFalse(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD, getDate(9,
+                9, 2002), DateResolution.Day), row, recent));
+        assertFalse(searches.isMatch(SearchQuery.headerDateAfter("BOGUS", getDate(9, 9,
+                2001), DateResolution.Day), row, recent));
     }
 
     @Test
     public void testShouldMatchLowersHeaderDateAfter() throws Exception {
         builder.header(DATE_FIELD.toLowerCase(), RFC822_SUN_SEP_9TH_2001);
         MailboxMembership<Long> row = builder.build();
-        assertTrue(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD, 9,
-                9, 2000), row, recent));
-        assertTrue(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD, 8,
-                9, 2001), row, recent));
-        assertFalse(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD, 9,
-                9, 2001), row, recent));
+        assertTrue(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD, getDate(9,
+                9, 2000), DateResolution.Day), row, recent));
+        assertTrue(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD, getDate(8,
+                9, 2001),DateResolution.Day), row, recent));
+        assertFalse(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD, getDate(9,
+                9, 2001), DateResolution.Day),row, recent));
         assertFalse(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD,
-                10, 9, 2001), row, recent));
-        assertFalse(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD, 9,
-                9, 2002), row, recent));
-        assertFalse(searches.isMatch(SearchQuery.headerDateAfter("BOGUS", 9, 9,
-                2001), row, recent));
+                getDate(10, 9, 2001), DateResolution.Day),row, recent));
+        assertFalse(searches.isMatch(SearchQuery.headerDateAfter(DATE_FIELD, getDate(9,
+                9, 2002), DateResolution.Day),row, recent));
+        assertFalse(searches.isMatch(SearchQuery.headerDateAfter("BOGUS", getDate(9, 9,
+                2001), DateResolution.Day),row, recent));
     }
 
     @Test
     public void testMatchHeaderDateOn() throws Exception {
         builder.header(DATE_FIELD, RFC822_SUN_SEP_9TH_2001);
         MailboxMembership<Long> row = builder.build();
-        assertFalse(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, 9, 9,
-                2000), row, recent));
-        assertFalse(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, 8, 9,
-                2001), row, recent));
-        assertTrue(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, 9, 9,
-                2001), row, recent));
-        assertFalse(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, 10,
-                9, 2001), row, recent));
-        assertFalse(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, 9, 9,
-                2002), row, recent));
-        assertFalse(searches.isMatch(SearchQuery.headerDateOn("BOGUS", 9, 9,
-                2001), row, recent));
+        assertFalse(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, getDate(9, 9,
+                2000), DateResolution.Day),row, recent));
+        assertFalse(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, getDate(8, 9,
+                2001), DateResolution.Day),row, recent));
+        assertTrue(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, getDate(9, 9,
+                2001), DateResolution.Day),row, recent));
+        assertFalse(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, getDate(10,
+                9, 2001), DateResolution.Day),row, recent));
+        assertFalse(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, getDate(9, 9,
+                2002), DateResolution.Day), row, recent));
+        assertFalse(searches.isMatch(SearchQuery.headerDateOn("BOGUS", getDate(9, 9,
+                2001), DateResolution.Day), row, recent));
     }
 
     @Test
     public void testShouldMatchCapsHeaderDateOn() throws Exception {
         builder.header(DATE_FIELD.toUpperCase(), RFC822_SUN_SEP_9TH_2001);
         MailboxMembership<Long> row = builder.build();
-        assertFalse(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, 9, 9,
-                2000), row, recent));
-        assertFalse(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, 8, 9,
-                2001), row, recent));
-        assertTrue(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, 9, 9,
-                2001), row, recent));
-        assertFalse(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, 10,
-                9, 2001), row, recent));
-        assertFalse(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, 9, 9,
-                2002), row, recent));
-        assertFalse(searches.isMatch(SearchQuery.headerDateOn("BOGUS", 9, 9,
-                2001), row, recent));
+        assertFalse(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, getDate(9, 9,
+                2000), DateResolution.Day),row, recent));
+        assertFalse(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, getDate(8, 9,
+                2001), DateResolution.Day),row, recent));
+        assertTrue(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, getDate(9, 9,
+                2001), DateResolution.Day),row, recent));
+        assertFalse(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, getDate(10,
+                9, 2001), DateResolution.Day),row, recent));
+        assertFalse(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, getDate(9, 9,
+                2002), DateResolution.Day),row, recent));
+        assertFalse(searches.isMatch(SearchQuery.headerDateOn("BOGUS", getDate(9, 9,
+                2001), DateResolution.Day),row, recent));
     }
 
     @Test
     public void testShouldMatchLowersHeaderDateOn() throws Exception {
         builder.header(DATE_FIELD.toLowerCase(), RFC822_SUN_SEP_9TH_2001);
         MailboxMembership<Long> row = builder.build();
-        assertFalse(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, 9, 9,
-                2000), row, recent));
-        assertFalse(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, 8, 9,
-                2001), row, recent));
-        assertTrue(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, 9, 9,
-                2001), row, recent));
-        assertFalse(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, 10,
-                9, 2001), row, recent));
-        assertFalse(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, 9, 9,
-                2002), row, recent));
-        assertFalse(searches.isMatch(SearchQuery.headerDateOn("BOGUS", 9, 9,
-                2001), row, recent));
+        assertFalse(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, getDate(9, 9,
+                2000), DateResolution.Day),row, recent));
+        assertFalse(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, getDate(8, 9,
+                2001), DateResolution.Day),row, recent));
+        assertTrue(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, getDate(9, 9,
+                2001), DateResolution.Day),row, recent));
+        assertFalse(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, getDate(10,
+                9, 2001), DateResolution.Day),row, recent));
+        assertFalse(searches.isMatch(SearchQuery.headerDateOn(DATE_FIELD, getDate(9, 9,
+                2002), DateResolution.Day),row, recent));
+        assertFalse(searches.isMatch(SearchQuery.headerDateOn("BOGUS", getDate(9, 9,
+                2001), DateResolution.Day),row, recent));
     }
 
     @Test
@@ -267,17 +281,17 @@ public class SearchUtilsTest {
         builder.header(DATE_FIELD.toLowerCase(), RFC822_SUN_SEP_9TH_2001);
         MailboxMembership<Long> row = builder.build();
         assertFalse(searches.isMatch(SearchQuery.headerDateBefore(DATE_FIELD,
-                9, 9, 2000), row, recent));
+                getDate(9, 9, 2000), DateResolution.Day),row, recent));
         assertFalse(searches.isMatch(SearchQuery.headerDateBefore(DATE_FIELD,
-                8, 9, 2001), row, recent));
+                getDate(8, 9, 2001), DateResolution.Day),row, recent));
         assertFalse(searches.isMatch(SearchQuery.headerDateBefore(DATE_FIELD,
-                9, 9, 2001), row, recent));
+                getDate(9, 9, 2001), DateResolution.Day),row, recent));
         assertTrue(searches.isMatch(SearchQuery.headerDateBefore(DATE_FIELD,
-                10, 9, 2001), row, recent));
-        assertTrue(searches.isMatch(SearchQuery.headerDateBefore(DATE_FIELD, 9,
-                9, 2002), row, recent));
-        assertFalse(searches.isMatch(SearchQuery.headerDateBefore("BOGUS", 9,
-                9, 2001), row, recent));
+                getDate(10, 9, 2001), DateResolution.Day),row, recent));
+        assertTrue(searches.isMatch(SearchQuery.headerDateBefore(DATE_FIELD, getDate(9,
+                9, 2002), DateResolution.Day),row, recent));
+        assertFalse(searches.isMatch(SearchQuery.headerDateBefore("BOGUS", getDate(9,
+                9, 2001), DateResolution.Day),row, recent));
     }
 
     @Test
@@ -285,17 +299,17 @@ public class SearchUtilsTest {
         builder.header(DATE_FIELD.toLowerCase(), RFC822_SUN_SEP_9TH_2001);
         MailboxMembership<Long> row = builder.build();
         assertFalse(searches.isMatch(SearchQuery.headerDateBefore(DATE_FIELD,
-                9, 9, 2000), row, recent));
+                getDate(9, 9, 2000), DateResolution.Day),row, recent));
         assertFalse(searches.isMatch(SearchQuery.headerDateBefore(DATE_FIELD,
-                8, 9, 2001), row, recent));
+                getDate(8, 9, 2001), DateResolution.Day),row, recent));
         assertFalse(searches.isMatch(SearchQuery.headerDateBefore(DATE_FIELD,
-                9, 9, 2001), row, recent));
+                getDate(9, 9, 2001), DateResolution.Day),row, recent));
         assertTrue(searches.isMatch(SearchQuery.headerDateBefore(DATE_FIELD,
-                10, 9, 2001), row, recent));
-        assertTrue(searches.isMatch(SearchQuery.headerDateBefore(DATE_FIELD, 9,
-                9, 2002), row, recent));
-        assertFalse(searches.isMatch(SearchQuery.headerDateBefore("BOGUS", 9,
-                9, 2001), row, recent));
+                getDate(10, 9, 2001), DateResolution.Day),row, recent));
+        assertTrue(searches.isMatch(SearchQuery.headerDateBefore(DATE_FIELD, getDate(9,
+                9, 2002), DateResolution.Day),row, recent));
+        assertFalse(searches.isMatch(SearchQuery.headerDateBefore("BOGUS", getDate(9,
+                9, 2001), DateResolution.Day),row, recent));
     }
 
     @Test
@@ -303,17 +317,17 @@ public class SearchUtilsTest {
         builder.header(DATE_FIELD.toLowerCase(), RFC822_SUN_SEP_9TH_2001);
         MailboxMembership<Long> row = builder.build();
         assertFalse(searches.isMatch(SearchQuery.headerDateBefore(DATE_FIELD,
-                9, 9, 2000), row, recent));
+                getDate(9, 9, 2000), DateResolution.Day),row, recent));
         assertFalse(searches.isMatch(SearchQuery.headerDateBefore(DATE_FIELD,
-                8, 9, 2001), row, recent));
+                getDate(8, 9, 2001), DateResolution.Day),row, recent));
         assertFalse(searches.isMatch(SearchQuery.headerDateBefore(DATE_FIELD,
-                9, 9, 2001), row, recent));
+                getDate(9, 9, 2001), DateResolution.Day),row, recent));
         assertTrue(searches.isMatch(SearchQuery.headerDateBefore(DATE_FIELD,
-                10, 9, 2001), row, recent));
-        assertTrue(searches.isMatch(SearchQuery.headerDateBefore(DATE_FIELD, 9,
-                9, 2002), row, recent));
-        assertFalse(searches.isMatch(SearchQuery.headerDateBefore("BOGUS", 9,
-                9, 2001), row, recent));
+                getDate(10, 9, 2001), DateResolution.Day),row, recent));
+        assertTrue(searches.isMatch(SearchQuery.headerDateBefore(DATE_FIELD, getDate(9,
+                9, 2002), DateResolution.Day),row, recent));
+        assertFalse(searches.isMatch(SearchQuery.headerDateBefore("BOGUS", getDate(9,
+                9, 2001), DateResolution.Day),row, recent));
     }
 
     @Test

Modified: james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/lucene/LuceneMessageSearchIndexTest.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/lucene/LuceneMessageSearchIndexTest.java?rev=1092767&r1=1092766&r2=1092767&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/lucene/LuceneMessageSearchIndexTest.java (original)
+++ james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/lucene/LuceneMessageSearchIndexTest.java Fri Apr 15 17:20:35 2011
@@ -32,6 +32,7 @@ import javax.mail.Flags;
 import javax.mail.Flags.Flag;
 
 import org.apache.james.mailbox.SearchQuery;
+import org.apache.james.mailbox.SearchQuery.DateResolution;
 import org.apache.james.mailbox.store.MessageSearchIndex;
 import org.apache.james.mailbox.store.SimpleHeader;
 import org.apache.james.mailbox.store.SimpleMailboxMembership;
@@ -160,7 +161,7 @@ public class LuceneMessageSearchIndexTes
         SearchQuery q2 = new SearchQuery();
         Calendar cal = Calendar.getInstance();
         cal.setTime(new Date());
-        q2.andCriteria(SearchQuery.internalDateBefore(cal.get(Calendar.DAY_OF_MONTH), cal.get(Calendar.MONTH) +1 , cal.get(Calendar.YEAR)));
+        q2.andCriteria(SearchQuery.internalDateBefore(cal.getTime(), DateResolution.Day));
         
         Iterator<Long> it4 = index.search(null, mailbox, q2);
         assertEquals(2, it4.next().longValue(), 1);
@@ -173,7 +174,7 @@ public class LuceneMessageSearchIndexTes
         SearchQuery q2 = new SearchQuery();
         Calendar cal = Calendar.getInstance();
         cal.setTime(new Date());
-        q2.andCriteria(SearchQuery.internalDateAfter(cal.get(Calendar.DAY_OF_MONTH), cal.get(Calendar.MONTH) +1, cal.get(Calendar.YEAR)));
+        q2.andCriteria(SearchQuery.internalDateAfter(cal.getTime(), DateResolution.Day));
         Iterator<Long> it4 = index.search(null, mailbox, q2);
         assertEquals(3, it4.next().longValue(), 1);
         assertFalse(it4.hasNext());
@@ -186,7 +187,7 @@ public class LuceneMessageSearchIndexTes
         SearchQuery q2 = new SearchQuery();
         Calendar cal = Calendar.getInstance();
         cal.setTime(new Date());
-        q2.andCriteria(SearchQuery.internalDateOn(cal.get(Calendar.DAY_OF_MONTH), cal.get(Calendar.MONTH) +1, cal.get(Calendar.YEAR)));
+        q2.andCriteria(SearchQuery.internalDateOn(cal.getTime(), DateResolution.Day));
         Iterator<Long> it4 = index.search(null, mailbox, q2);
         assertEquals(1, it4.next().longValue(), 1);
         assertFalse(it4.hasNext());



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org