Author: norman
Date: Fri Apr 29 16:35:35 2011
New Revision: 1097876

URL: http://svn.apache.org/viewvc?rev=1097876&view=rev
Log:
Allow to support User Flags. See MAILBOX-63

Modified:
    
james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MessageSearches.java

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=1097876&r1=1097875&r2=1097876&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 29 16:35:35 2011
@@ -119,6 +119,9 @@ public class MessageSearches {
         } else if (criterion instanceof SearchQuery.FlagCriterion) {
             result = matches((SearchQuery.FlagCriterion) criterion, message,
                     recentMessageUids);
+        } else if (criterion instanceof SearchQuery.CustomFlagCriterion) {
+            result = matches((SearchQuery.CustomFlagCriterion) criterion, 
message,
+                    recentMessageUids);
         } else if (criterion instanceof SearchQuery.TextCriterion) {
             result = matches((SearchQuery.TextCriterion) criterion, message);
         } else if (criterion instanceof SearchQuery.AllCriterion) {
@@ -259,6 +262,14 @@ public class MessageSearches {
         return result;
     }
 
+    private boolean matches(SearchQuery.CustomFlagCriterion criterion,
+            Message<?> message, final Collection<Long> recentMessageUids) {
+        final SearchQuery.BooleanOperator operator = criterion.getOperator();
+        final boolean isSet = operator.isSet();
+        final String flag = criterion.getFlag();
+        final boolean result = isSet == message.createFlags().contains(flag);
+        return result;
+    }
     private boolean matches(SearchQuery.UidCriterion criterion, Message<?> 
message) {
         final SearchQuery.InOperator operator = criterion.getOperator();
         final NumericRange[] ranges = operator.getRange();



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to