From 94073b43b3abd6b31f2b4db6568cafd0547a6cd5 Mon Sep 17 00:00:00 2001 From: jomu Date: Wed, 5 Jul 2017 08:07:15 +0000 Subject: [PATCH] added possibility to limit the amount of emails to be read --- .../network/mail/DefaultMailReader.java | 37 +++++++++++++++++++ .../shared/network/mail/MailReader.java | 11 ++++++ 2 files changed, 48 insertions(+) diff --git a/network/src/main/java/de/muehlencord/shared/network/mail/DefaultMailReader.java b/network/src/main/java/de/muehlencord/shared/network/mail/DefaultMailReader.java index a20a2a1..7e13f66 100644 --- a/network/src/main/java/de/muehlencord/shared/network/mail/DefaultMailReader.java +++ b/network/src/main/java/de/muehlencord/shared/network/mail/DefaultMailReader.java @@ -307,6 +307,43 @@ public abstract class DefaultMailReader implements MailReader { return returnValue; } + + /** + * retrieves the list of messages stored in the given folder + * + * @param sourceFolder the folder to search return the emails for + * @param start the number of the first message + * @param end the number of the last message + * @return list of messages stored in the given folder + * + * @throws MailReaderException if the message list cannot be retrieved + * + */ + @Override + public List getMessages(String sourceFolder, int start, int end) throws MailReaderException { + List returnValue = new LinkedList<>(); + Folder folder = getFolderObject(sourceFolder); + try { + folder.open(Folder.READ_ONLY); + Message[] messages = folder.getMessages(start, end); + for (Message msg : messages) { + returnValue.add(MailMessageUtils.getInstance(getValidMessage(msg))); + } + } catch (Exception ex) { + throw new MailReaderException("Cannot fetch email from folder " + folder.getFullName() + ". Reason: " + ex.getMessage(), ex); + + } finally { + if ((folder != null) && (folder.isOpen())) { + try { + folder.close(false); + } catch (MessagingException ex) { + LOGGER.debug(StringUtil.getStackTraceString(ex)); + } + } + } + + return returnValue; + } /** * copies the given message from the source folder to the destination folder diff --git a/network/src/main/java/de/muehlencord/shared/network/mail/MailReader.java b/network/src/main/java/de/muehlencord/shared/network/mail/MailReader.java index a22416d..ca7a38d 100644 --- a/network/src/main/java/de/muehlencord/shared/network/mail/MailReader.java +++ b/network/src/main/java/de/muehlencord/shared/network/mail/MailReader.java @@ -70,6 +70,17 @@ public interface MailReader { * */ List getMessages(String folder) throws MailReaderException; + + /** + * retrieves the list of messages stored in the given folder + * + * @param folder the folder to search return the emails for + * @return list of messages stored in the given folder + * + * @throws MailReaderException if the message list cannot be retrieved + * + */ + List getMessages(String folder, int start, int end) throws MailReaderException; /** * copies the given message from the source folder to the destination folder