package fi.arcusys.koku.common.service;
import java.util.List;
import fi.arcusys.koku.common.service.datamodel.Folder;
import fi.arcusys.koku.common.service.datamodel.FolderType;
import fi.arcusys.koku.common.service.datamodel.Message;
import fi.arcusys.koku.common.service.datamodel.MessageRef;
import fi.arcusys.koku.common.service.datamodel.User;
import fi.arcusys.koku.common.service.dto.Criteria;
import fi.arcusys.koku.common.service.dto.MessageQuery;
/**
* DAO interface for CRUD operations with 'Folder' Entity
*
* @author Dmitry Kudinov (dmitry.kudinov@arcusys.fi)
* May 20, 2011
*/
public interface MessageFolderDAO extends AbstractEntityDAO<Folder>{
/**
* @param testUser
* @param string
* @return
*/
Folder getFolderByUserAndType(final User user, final FolderType folderType);
/**
* @param fromUser
* @param sent
* @param msg
*/
MessageRef storeMessage(final User user, final FolderType folderType, final Message message);
/**
* @param testUser
* @param outbox
* @return
*/
List<MessageRef> getMessagesByUserAndFolderType(final User user, final FolderType folderType);
List<MessageRef> getMessagesByUserWithRoleAndFolderType(final User user, final List<String> roleUids, final FolderType folderType,
final MessageQuery query, final int startNum, final int maxNum);
/**
* @param testUser
* @param sent
*/
Folder createNewFolderByUserAndType(final User user, final FolderType folderType);
/**
* @param userId
* @param folderType
* @return
*/
Long getTotalMessagesCountByUserAndRoles(final User user, final List<String> roleUids, final FolderType folderType);
Long getTotalMessagesCountByUserAndRoles(final User user, final List<String> roleUids, final FolderType folderType, final Criteria criteria);
/**
* @param userId
* @param folderType
* @return
*/
Long getUnreadMessagesCountByUserAndRoles(final User user, final List<String> roleUids, final FolderType folderType);
}