/** * Copyright (C) 2011 JTalks.org Team * This library 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 2.1 of the License, or (at your option) any later version. * This library 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 this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ package org.jtalks.jcommune.service; import org.jtalks.jcommune.model.entity.Branch; import org.jtalks.jcommune.model.entity.Post; import org.jtalks.jcommune.model.entity.Topic; import java.util.List; /** * This interface manages last read posts per users and * per topics to track whether particular topics has * been updated since user's last visit or not. * * @author Evgeniy Naumenko */ public interface LastReadPostService { /** * Marks topic page as read for the current user. * That means all posts on this page are to marked as read. * If paging as disabled all posts in the topic will be marked as read. * <p/> * For anonymous user call will have no effect. * * @param topic topic to mark as read * @param pageNum page to mark as read */ void markTopicPageAsRead(Topic topic, int pageNum); /** * Marks the whole topic as read for the current user. * That means all posts there are to marked as read. * <p/> * For anonymous user call will have no effect. * * @param topic topic to mark as read */ void markTopicAsRead(Topic topic); /** * Marks all topics in the current branch as read * for the current user. * * @param branch branch to update topics */ void markAllTopicsAsRead(Branch branch); /** * Mark all forum as read for current user. */ void markAllForumAsReadForCurrentUser(); /** * Fills topics with last read post information based * on the current user set. No data will be set * for anonymous users. * * @param topics topics to get last read post for * @return topic collection with last read posts data set */ List<Topic> fillLastReadPostForTopics(List<Topic> topics); }