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 2009/12/04 17:04:40 UTC

svn commit: r887242 - in /james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler: AbstractFetchMessagesHandler.java FetchMessagesHandler.java FetchRecentMessagesHandler.java

Author: norman
Date: Fri Dec  4 16:04:39 2009
New Revision: 887242

URL: http://svn.apache.org/viewvc?rev=887242&view=rev
Log:
Paging is now working with and without search key given (HUPA-60)

Modified:
    james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java
    james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java
    james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/FetchRecentMessagesHandler.java

Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java?rev=887242&r1=887241&r2=887242&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java Fri Dec  4 16:04:39 2009
@@ -83,9 +83,9 @@
                 return new FetchMessagesResult(new ArrayList<org.apache.hupa.shared.data.Message>(),start,offset,exists,0);
             }        
             
-            Message[] messages = getMessagesToConvert(f,action);
+            MessageConvertArray convArray = getMessagesToConvert(f,action);
             
-            return new FetchMessagesResult(convert(offset, f, messages),start, offset,exists,f.getUnreadMessageCount());
+            return new FetchMessagesResult(convert(offset, f, convArray.getMesssages()),start, offset,convArray.getRealCount(),f.getUnreadMessageCount());
             
         } catch (Exception e) {
             e.printStackTrace();
@@ -104,7 +104,7 @@
         }
     }
     
-    protected abstract Message[] getMessagesToConvert(com.sun.mail.imap.IMAPFolder f, A action) throws MessagingException;
+    protected abstract MessageConvertArray getMessagesToConvert(com.sun.mail.imap.IMAPFolder f, A action) throws MessagingException;
     
     protected ArrayList<org.apache.hupa.shared.data.Message> convert(int offset, com.sun.mail.imap.IMAPFolder folder, Message[] messages) throws MessagingException {
         ArrayList<org.apache.hupa.shared.data.Message> mList = new ArrayList<org.apache.hupa.shared.data.Message>();
@@ -197,7 +197,7 @@
         }
         return mList;
     }
-    
+
     private boolean hasAttachment(Message message) throws MessagingException {
         if (message.getContentType().startsWith("multipart/")) {
             try {
@@ -225,4 +225,23 @@
         }
         return false;
     }
+    
+    
+    protected final class MessageConvertArray {
+        private Message[] messages;
+        private int realCount;
+
+        public MessageConvertArray(int realCount, Message[] messages) {
+            this.messages = messages;
+            this.realCount = realCount;
+        }
+        
+        public int getRealCount() {
+            return realCount;
+        }
+        
+        public Message[] getMesssages() {
+            return messages;
+        }
+    }
 }

Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java?rev=887242&r1=887241&r2=887242&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java Fri Dec  4 16:04:39 2009
@@ -19,6 +19,9 @@
 
 package org.apache.hupa.server.handler;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import javax.mail.Message;
 import javax.mail.MessagingException;
 import javax.mail.search.BodyTerm;
@@ -59,28 +62,30 @@
     }
 
     @Override
-    protected Message[] getMessagesToConvert(com.sun.mail.imap.IMAPFolder f,
+    protected MessageConvertArray getMessagesToConvert(com.sun.mail.imap.IMAPFolder f,
             FetchMessages action) throws MessagingException {
         String searchString = action.getSearchString();
         int start = action.getStart();
         int offset = action.getOffset();
         int end = start + offset;
 
-        int exists = f.getMessageCount();
-
-        if (end > exists) {
-            end = exists;
-        }
-
-        int firstIndex = exists - end;
-        if (firstIndex < 1) {
-            firstIndex = 1;
-        }
-        int lastIndex = exists - start;
+       
         Message[] messages;
-
+        int exists;
         // check if a searchString was given, and if so use it
         if (searchString == null) {
+            exists = f.getMessageCount();
+
+            if (end > exists) {
+                end = exists;
+            }
+
+            int firstIndex = exists - end;
+            if (firstIndex < 1) {
+                firstIndex = 1;
+            }
+            int lastIndex = exists - start;
+            
             messages = f.getMessages(firstIndex, lastIndex);
         } else {
             SearchTerm subjectTerm = new SubjectTerm(searchString);
@@ -88,12 +93,29 @@
             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;
+            Message[] tmpMessages = f.search(orTerm);
+            if (end > tmpMessages.length) {
+                end = tmpMessages.length;
+            }
+            exists = tmpMessages.length;
+
+            int firstIndex = exists - end;
+            if (firstIndex < 1) {
+                firstIndex = 1;
+            }            
+            
+            if (tmpMessages.length > firstIndex) {
+                List<Message> mList = new ArrayList<Message>();
+                for (int i = firstIndex; i < tmpMessages.length; i++) {
+                    if (i == end) break;
+                    mList.add(tmpMessages[i]);
+                }
+                messages = mList.toArray(new Message[mList.size()]);
+            } else {
+                messages = new Message[0];
             }
-            exists = messages.length;
+          
         }
-        return messages;
+        return new MessageConvertArray(exists, messages);
     }
 }

Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/FetchRecentMessagesHandler.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/FetchRecentMessagesHandler.java?rev=887242&r1=887241&r2=887242&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/FetchRecentMessagesHandler.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/FetchRecentMessagesHandler.java Fri Dec  4 16:04:39 2009
@@ -44,10 +44,10 @@
 
     
     @Override
-    protected Message[] getMessagesToConvert(com.sun.mail.imap.IMAPFolder f,
+    protected MessageConvertArray getMessagesToConvert(com.sun.mail.imap.IMAPFolder f,
             FetchRecentMessages action) throws MessagingException {
         Message[] messages = f.search(new FlagTerm(new Flags(Flag.RECENT), true));
-        return messages;
+        return new MessageConvertArray(messages.length, messages);
     }
 
     /*



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