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