/src/main/java/net/frontlinesms/data/repository/MessageDao.java
https://github.com/ssembajjwe/frontlinesms-core · Java · 243 lines · 34 code · 28 blank · 181 comment · 0 complexity · 3c9aed9bd9b3aa9adaf75d63b2661cc9 MD5 · raw file
- /*
- * FrontlineSMS <http://www.frontlinesms.com>
- * Copyright 2007, 2008 kiwanja
- *
- * This file is part of FrontlineSMS.
- *
- * FrontlineSMS is free software: you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or (at
- * your option) any later version.
- *
- * FrontlineSMS is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
- * General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with FrontlineSMS. If not, see <http://www.gnu.org/licenses/>.
- */
- package net.frontlinesms.data.repository;
- import java.util.Collection;
- import java.util.List;
- import net.frontlinesms.data.Order;
- import net.frontlinesms.data.domain.*;
- import net.frontlinesms.data.domain.FrontlineMessage.Field;
- /**
- * Factory for creating instances of net.frontlinesms.data.Message
- * @author Alex
- */
- public interface MessageDao {
- /**
- * Gets all messages for the specified number.
- * @param type
- * @param number
- * @param sortBy Message Field to sort the results by
- * @param order direction to order results in
- * @param start TODO
- * @param end TODO
- * @param startIndex
- * @param limit the maximum number of messages to recover
- * @param index the result index of the messages to recover
- * @return
- */
- public List<FrontlineMessage> getMessagesForMsisdn(FrontlineMessage.Type type, String number, Field sortBy, Order order, Long start, Long end, int startIndex, int limit);
- /**
- * Gets all messages for the specified number.
- * @param number
- * @param sortBy Message Field to sort the results by
- * @param order direction to order results in
- * @param start TODO
- * @param end TODO
- * @param limit the maximum number of messages to recover
- * @param index the result index of the messages to recover
- * @return
- */
- public List<FrontlineMessage> getMessagesForMsisdn(FrontlineMessage.Type type, String number, Field sortBy, Order order, Long start, Long end);
-
- /**
- * Gets message count for the specified number.
- * @param number
- * @param start TODO
- * @param end TODO
- * @return
- */
- public int getMessageCountForMsisdn(FrontlineMessage.Type type, String number, Long start, Long end);
-
- /**
- * Gets count of SMS sent for the specified number.
- * @param number
- * @param start TODO
- * @param end TODO
- * @return
- */
- public int getSMSCountForMsisdn(String number, Long start, Long end);
-
- /**
- * Gets count of SMS sent.
- * @param start TODO
- * @param end TODO
- * @return
- */
- public int getSMSCount(Long start, Long end);
-
- /**
- * Gets count of SMS sent for the specified keyword.
- * @param keyword
- * @param start TODO
- * @param end TODO
- * @return
- */
- public int getSMSCountForKeyword(Keyword keyword, Long start, Long end);
-
- /**
- * Gets all messages of a particular type (SENT, RECEIVED, ALL) which begin with the specified keyword. If
- * the supplied keyword is NULL, it will be ignored (i.e. all messages of requested type will be returned).
- * @param messageType message type(s) to be retrieved, or Message.TYPE_ALL for all messages
- * @param keyword word messages should start with, or NULL to retrieve all messages
- * @param sortBy Message Field to sort the results by
- * @param order direction to order results in
- * @param start TODO
- * @param end TODO
- * @param limit the maximum number of messages to recover
- * @param index the result index of the messages to recover
- * @return
- * FIXME keyword should never be null for this method, and messageType should be understood to
- * be TYPE_RECEIVED always. If other functionality is required, the method should be renamed
- * or new methods created.
- */
- public List<FrontlineMessage> getMessagesForKeyword(FrontlineMessage.Type messageType, Keyword keyword, Field sortBy, Order order, Long start, Long end, int startIndex, int limit);
-
- /**
- * Gets all messages of a particular type (SENT, RECEIVED, ALL).
- * @param messageType message type(s) to be retrieved, or Message.TYPE_ALL for all messages
- * @param sortBy Message Field to sort the results by
- * @param order direction to order results in
- * @return
- */
- public List<FrontlineMessage> getMessages(FrontlineMessage.Type messageType, Field sortBy, Order order);
-
- /**
- * Gets all messages of a particular type (SENT, RECEIVED, ALL) which begin with the specified keyword.
- * @param messageType message type(s) to be retrieved, or Message.TYPE_ALL for all messages
- * @param keyword word messages should start with
- * @return
- */
- public List<FrontlineMessage> getMessagesForKeyword(FrontlineMessage.Type messageType, Keyword keyword);
-
- public List<FrontlineMessage> getMessagesForKeyword(FrontlineMessage.Type messageType, Keyword keyword, Long start, Long end);
- public List<FrontlineMessage> getMessagesForStati(FrontlineMessage.Type messageType, FrontlineMessage.Status[] messageStatuses, Field sortBy, Order order, int startIndex, int limit);
-
- /**
- * Get the total number of messages with the supplied statuses.
- * @param messageType
- * @param messageStati
- * @return
- */
- public int getMessageCount(FrontlineMessage.Type messageType, FrontlineMessage.Status... messageStatuses);
- /**
- * Gets all messages of a particular type (SENT, RECEIVED, ALL) which begin with the specified keyword. If
- * the supplied keyword is NULL, it will be ignored (i.e. all messages of requested type will be returned).
- *
- * @param messageType message type(s) to be retrieved, or Message.TYPE_ALL for all messages
- * @param keyword word messages should start with, or NULL to retrieve all messages
- * @param sortBy Message Field to sort the results by
- * @param order direction to order results in
- * @param index the result index of the messages to recover
- * @param limit the maximum number of messages to recover
- * @return
- */
- public List<FrontlineMessage> getMessages(FrontlineMessage.Type messageType, Keyword keyword, Field sortBy, Order order);
-
- /**
- * Gets all messages.
- * @return all messages in the system
- */
- public List<FrontlineMessage> getAllMessages();
-
- /**
- * Gets a page of messages.
- * @param type the type of the message
- * @param field the field to sort by
- * @param order the order to sort by
- * @param start the start date for the messages
- * @param end the end date for the messages
- * @param startIndex the index of the first message to get
- * @param limit the maximum number of messages to get
- * @return list of all messages conforming to the specified constraints and sorted in a particular way.
- *
- */
- public List<FrontlineMessage> getAllMessages(FrontlineMessage.Type type, Field field, Order order, Long start, Long end, int startIndex, int limit);
-
- /**
- * Gets the number of messages of a specific type from between the specified dates
- * @param type
- * @param start the start date as a java timestamp, or <code>null</code> for no start date restriction
- * @param end the end date as a java timestamp, or <code>null</code> for no start date restriction
- * @return count of messages
- */
- public int getMessageCount(FrontlineMessage.Type type, Long start, Long end);
-
- /**
- * Gets all messages with the supplied status and type.
- * @param type
- * @param status
- * @return
- */
- public Collection<FrontlineMessage> getMessages(FrontlineMessage.Type type, FrontlineMessage.Status... status);
-
- /**
- * Gets the number of messagesthere are of the given type for the given keyword.
- * @param messageType
- * @param keyword
- * @param start
- * @param end
- * @return
- */
- public int getMessageCount(FrontlineMessage.Type messageType, Keyword keyword, Long start, Long end);
-
- /**
- * Gets the outgoing message with the matching SMSC Reference Number sent to
- * a number ending with the supplied msisdn suffix.
- * @param targetMsisdnSuffix last N digits of the target's msisdn
- * @param smscReference
- * @return
- */
- public FrontlineMessage getMessageForStatusUpdate(String targetMsisdnSuffix, int smscReference);
-
- /** @return the number of messages sent to the specified phone numbers within the specified dates */
- public int getMessageCount(FrontlineMessage.Type messageType, List<String> phoneNumbers, Long messageHistoryStart, Long messageHistoryEnd);
- /** @return the messages sent or received to/from the specified phone numbers within the specified dates */
- public List<FrontlineMessage> getMessages(FrontlineMessage.Type messageType, List<String> phoneNumbers, Long messageHistoryStart, Long messageHistoryEnd);
- /** @return the messages sent or received to/from the specified phone numbers within the specified dates */
- public List<FrontlineMessage> getMessages(FrontlineMessage.Type messageType, List<String> phoneNumbers, Long messageHistoryStart, Long messageHistoryEnd, int startIndex, int limit);
- /** @return all messages sent or received within the specified dates */
- public List<FrontlineMessage> getMessages(FrontlineMessage.Type messageType, Long messageHistoryStart, Long messageHistoryEnd);
- /**
- * Delete the supplied message to the data source.
- * @param message the message to be deleted
- */
- public void deleteMessage(FrontlineMessage message);
- /**
- * Save the supplied message to the data source.
- * @param message the message to be saved
- */
- public void saveMessage(FrontlineMessage message);
- /**
- * Update the supplied message in the data source.
- * @param message the message to be updated
- */
- public void updateMessage(FrontlineMessage message);
- }