/* * 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.dao.MessageDAO; import hk.hku.cecid.ebms.spa.dao.MessageDVO; import hk.hku.cecid.ebms.spa.handler.MessageClassifier; import hk.hku.cecid.piazza.commons.dao.DAOException; import hk.hku.cecid.piazza.commons.module.ActiveTaskList; import hk.hku.cecid.piazza.commons.net.HostInfo; import java.util.Iterator; import java.util.List; import java.util.Vector; /** * @author Donahue Sze * */ public class OutboxCollector extends ActiveTaskList { boolean isFirstTime = true; /* * (non-Javadoc) * * @see hk.hku.cecid.piazza.commons.module.ActiveTaskList#getTaskList() */ public List getTaskList() { List messageList = new Vector(); try { MessageDAO dao = (MessageDAO) EbmsProcessor.core.dao .createDAO(MessageDAO.class); MessageDVO finderDVO = (MessageDVO) dao.createDVO(); finderDVO.setHostname(HostInfo.GetLocalhostAddress()); // get all the processing message in first time if (isFirstTime) { List messageDVOList = dao.findOutboxProcessingMessagesByTimestamp(finderDVO); Iterator i = messageDVOList.iterator(); int num = 0; while (i.hasNext()) { EbmsProcessor.core.log .info("Recover outbox message sending thread " + ++num + "/" + messageDVOList.size()); MessageDVO message = (MessageDVO) i.next(); OutboxTask outboxTask = new OutboxTask(message); messageList.add(outboxTask); } isFirstTime = false; } // get all the pending message List messageDVOList = dao.findOutboxPendingMessagesByTimestamp(finderDVO); Iterator i = messageDVOList.iterator(); while (i.hasNext()) { MessageDVO message = (MessageDVO) i.next(); OutboxTask outboxTask = new OutboxTask(message); messageList.add(outboxTask); } } catch (DAOException e) { EbmsProcessor.core.log.error( "Error in collecting message from outbox", e); } return messageList; } }