/* * Copyright (C) 2003-2010 eXo Platform SAS. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License * as published by the Free Software Foundation; either version 3 * of the License, or (at your option) any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see<http://www.gnu.org/licenses/>. */ package org.exoplatform.forum.service; import java.util.List; public interface ForumEventLifeCycle { /** * This will be call after save forum category * @param category */ public void saveCategory(Category category); /** * This will be call after save forum * @param forum */ public void saveForum(Forum forum); /** * This will be call after add topic * @param topic */ public void addTopic(Topic topic); /** * This will be call after update topic * @param topic * @since 4.0 */ public void updateTopic(Topic topic); /** * This will be call after update forum * @param topics * @param isLock * @since 4.0 */ public void updateTopics(List<Topic> topics, boolean isLock); /** * This will be call after moved topic to other forum. * + Add new comment of activity's topic * width message has content {@literal Category Name > Forum Name} * * @param topic * @param toCategoryName * @param toForumName * @since 4.0 */ public void moveTopic(Topic topic, String toCategoryName, String toForumName); /** * This will be call after moving posts to other topic * + Add new comment of activity's post for new destination topic * + Remove comment of activity's post for source topic * @param posts * @param srcPostActivityIds * @param desTopicPath */ public void movePost(List <Post> posts, List<String> srcPostActivityIds, String desTopicPath); /** * This will be call after merge two topics into new topic. * + Activity is removed from the activity stream. * + Make new activity for 2 topics merged is created. * * @param newTopic - the new topic merged. * @param removeActivityId1 - the activityId of source topic. * @param removeActivityId2 - the activityId of destination topic. * @since 4.0 */ public void mergeTopic(Topic newTopic, String removeActivityId1, String removeActivityId2); /** * This will be call after split one topic to two topics. * + Activity is removed from the activity stream. * + Two new activities are created for two topics created with the splitting. * * @param newTopic - the new topic make by split. * @param splitedTopic - the source topic that split. * @param removeActivityId - the old activity's ID of source topic. * @since 4.0 */ public void splitTopic(Topic newTopic, Topic splitedTopic, String removeActivityId); /** * This will be call after save post * * @param post */ public void addPost(Post post); /** * This will be call after save post * @param post * @since 4.0 */ public void updatePost(Post post); /** * This will be call after saving a private post * * @param post * @since 5.0 */ public default void addPrivatePost(Post post) { } /** * This will be call after updating a private post * @param post * @since 5.0 */ public default void updatePrivatePost(Post post){ } /** * This will be call after modify post * @param post * @param type * @since 4.0 */ public void updatePost(Post post, int type); /** * This will be call after topics removed. * * @param activityId - the activity Id will remove. * @since 4.0 */ public void removeActivity(String activityId); /** * This will be call after posts removed. * * @param activityId - the activity Id. * @param commentId - the comment Id will be remove * @since 4.0 */ public void removeComment(String activityId, String commentId); }