/*
* Copyright(c) 2005 Center for E-Commerce Infrastructure Development, The
* University of Hong Kong (HKU). All Rights Reserved.
*
* This software is licensed under the GNU GENERAL PUBLIC LICENSE Version 2.0 [1]
*
* [1] http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
*/
package hk.hku.cecid.ebms.spa.task;
import hk.hku.cecid.ebms.spa.EbmsProcessor;
import hk.hku.cecid.ebms.spa.handler.MessageServiceHandler;
import hk.hku.cecid.piazza.commons.module.ActiveTaskList;
import hk.hku.cecid.piazza.commons.net.ConnectionException;
import hk.hku.cecid.piazza.commons.net.MailReceiver;
import java.util.List;
import java.util.Vector;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
/**
* @author Donahue Sze
*
*/
public class MailCollector extends ActiveTaskList {
/*
* (non-Javadoc)
*
* @see hk.hku.cecid.piazza.commons.module.ActiveTaskList#getTaskList()
*/
public List getTaskList() {
MessageServiceHandler msh = MessageServiceHandler.getInstance();
List messageList = new Vector();
MailReceiver pop = new MailReceiver(msh.popProtocol, msh.popHost,
msh.popUsername, msh.popPassword);
if (!msh.popPort.equalsIgnoreCase("")) {
pop.addProperty("mail.pop3.port", msh.popPort);
}
try {
pop.connect();
Folder folder = pop.openFolder(msh.popFolder);
Message[] messages = folder.getMessages();
if (messages.length > 0) {
EbmsProcessor.core.log.info("Found " + messages.length
+ " message(s) in mail box");
}
for (int messageIndex = 0; messageIndex < messages.length; messageIndex++) {
Message message = messages[messageIndex];
MailTask mailTask = new MailTask(message);
messageList.add(mailTask);
messages[messageIndex].setFlag(Flags.Flag.DELETED, true);
}
folder.close(true);
} catch (Exception e) {
EbmsProcessor.core.log.error(
"Error in collecting message from mail box", e);
} finally {
try {
pop.disconnect();
} catch (ConnectionException e1) {
EbmsProcessor.core.log.error(
"Error in disconnection of pop server", e1);
}
}
return messageList;
}
}