Author: norman
Date: Fri Aug  7 18:02:01 2009
New Revision: 802110

URL: http://svn.apache.org/viewvc?rev=802110&view=rev
Log:
Correctly support searching messages

Modified:
    
labs/hupa/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java

Modified: 
labs/hupa/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java?rev=802110&r1=802109&r2=802110&view=diff
==============================================================================
--- 
labs/hupa/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java
 (original)
+++ 
labs/hupa/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java
 Fri Aug  7 18:02:01 2009
@@ -33,7 +33,10 @@
 import javax.mail.internet.MimeUtility;
 import javax.mail.internet.MimeMessage.RecipientType;
 import javax.mail.search.BodyTerm;
+import javax.mail.search.FromStringTerm;
+import javax.mail.search.OrTerm;
 import javax.mail.search.SearchTerm;
+import javax.mail.search.SubjectTerm;
 import javax.servlet.http.HttpSession;
 
 import net.customware.gwt.dispatch.server.ExecutionContext;
@@ -104,8 +107,15 @@
                        if (searchString == null) {
                                messages = f.getMessages(exists - end, exists - 
start);
                        } else {
-                               SearchTerm term = new BodyTerm(searchString);
-                               messages = f.search(term);
+                               SearchTerm subjectTerm = new 
SubjectTerm(searchString);
+                               SearchTerm fromTerm = new 
FromStringTerm(searchString);
+                               SearchTerm bodyTerm = new 
BodyTerm(searchString);
+                               SearchTerm orTerm = new OrTerm(new 
SearchTerm[]{subjectTerm,fromTerm,bodyTerm});
+                               messages = f.search(orTerm);
+                               if (end > messages.length) {
+                                       end =  messages.length -1;
+                               }
+                               exists = messages.length;
                        }
                        
                        // Setup fetchprofile to limit the stuff which is 
fetched 
@@ -181,6 +191,9 @@
                                
content.setAttachments(hasAttachment(m.getContent()));
                                msg.setMessageContent(content);
                                mList.add(0, msg);
+                               if (i > action.getOffset()) {
+                                       break;
+                               }
                        }
                        f.close(false);
 
@@ -193,6 +206,23 @@
                }
        }
        
+       private List<Message> copy(Message[] messages) {
+               List<Message> mList = new ArrayList<Message>();
+               if (messages != null) {
+                       for (int i = 0; i <messages.length; i++) {
+                               mList.add(messages[i]);
+                       }
+               }
+               return mList;
+       }
+       private Message[] copy(List<Message> mList) {
+               Message[] mArray = new Message[mList.size()];
+               for (int i = 0; i < mList.size(); i++) {
+                       mArray[i] = mList.get(i);
+               }
+               return mArray;
+       }
+       
        private boolean hasAttachment(Object content) throws MessagingException 
{
                 if (content instanceof Multipart) {
              Multipart mp = (Multipart) content;



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@labs.apache.org
For additional commands, e-mail: commits-h...@labs.apache.org

Reply via email to