⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 messageserviceimp.java

📁 JiveJdon 3.0 is the application of Jdon Framework 1.4 final.
💻 JAVA
字号:
/*
 * Copyright 2003-2005 the original author or authors.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * 
 */
package com.jdon.jivejdon.service.imp.message;

import java.util.List;

import org.apache.log4j.Logger;

import com.jdon.controller.events.EventModel;
import com.jdon.controller.model.PageIterator;
import com.jdon.jivejdon.dao.util.ToolsUtil;
import com.jdon.jivejdon.model.Forum;
import com.jdon.jivejdon.model.ForumMessage;
import com.jdon.jivejdon.model.ForumThread;
import com.jdon.jivejdon.model.query.HotMessageCriteria;
import com.jdon.jivejdon.model.query.MultiCriteria;
import com.jdon.jivejdon.model.query.QueryCriteria;
import com.jdon.jivejdon.repository.MessageRepository;
import com.jdon.jivejdon.service.ForumMessageService;


/**
 * @author <a href="mailto:banqiao@jdon.com">banq</a>
 *
 */
public abstract class MessageServiceImp implements ForumMessageService {
    private final static Logger logger = Logger.getLogger(MessageServiceImp.class);
    
    protected MessageRepository messageRepository;    
    
    public MessageServiceImp(MessageRepository messageRepository){
        this.messageRepository = messageRepository;
     
    }
    
    
    /**
     * get the full forum in forumMessage, and return it.
     */
    public ForumMessage initMessage(EventModel em) {
    	logger.debug("enter initMessage");
        return messageRepository.initMessage(em);
    }
    
    public ForumMessage initReplyMessage(EventModel em) {
    	logger.debug("enter initReplyMessage");
        return messageRepository.initReplyMessage(em);
    }    
  
    /*
     * return a full ForumMessage need solve the relations with Forum
     * ForumThread parentMessage
     */
    public ForumMessage getMessage(Long messageId) {
    	logger.debug("enter MessageServiceImp's getMessage");
       return messageRepository.getMessage(messageId);
    }
    
   
    
    
    /**
     * return a full ForumThread
     * one ForumThread has one rootMessage
     * need solve the realtion with Forum rootForumMessage lastPost
     * 
     * @param threadId
     * @return
     */
    public ForumThread getThread(Long threadId) {
    	logger.debug("enter getThread");
        return messageRepository.getThread(threadId);
      
    }
   
    /*
     * create the topic message
     */
    public void createTopicMessage(EventModel em) {
    	logger.debug("enter createTopicMessage");
        ForumMessage forumMessage = (ForumMessage)em.getModelIF();
        messageRepository.createTopicMessage(em);
        logger.debug("createTopicMessage ok!");
        refreshState(forumMessage.getForumThread());
    }
    
    
    
   
    /**
     * the relation about creating reply forumMessage only need a parameter : parent message.
     * we can get the Forum or ForumThread from the parent message.
     * the hypelink parameter in jsp must be a paremeter: the Id of parent message.
     * 
     */
    public void createReplyMessage(EventModel em) {  
    	logger.debug("enter createReplyMessage");
        ForumMessage forumMessage = (ForumMessage)em.getModelIF();
        messageRepository.createReplyMessage(em);
        logger.debug("createReplyMessage ok!");
        refreshState(forumMessage.getForumThread());
    }
  
    
    /* 
     * update the message, 
     * update the message's subject and body
     * we must mark the message that has been updated.
     * there are two kinds of parameters: the primary key /new entity data 
     * in DTO ForumMessage of the method patameter   
     * 
     */
    public void updateMessage(EventModel em) {
    	logger.debug("enter updateMessage");
        messageRepository.updateMessage(em);
        ForumMessage forumMessage = (ForumMessage)em.getModelIF();
        logger.debug("updateMessage ok!");       
        refreshState(forumMessage.getForumThread());
    }
    
    /*
     * delete a message and not inlcude its childern
     */
    public void deleteMessage(EventModel em) {   
    	logger.debug("enter deleteMessage");
        messageRepository.deleteMessage(em);
        ForumMessage forumMessage = (ForumMessage)em.getModelIF();
        logger.debug("deleteMessage ok!");
        refreshState(forumMessage.getForumThread());
    }
    
    /**
     * delete a message and inlcude its childern
     */
    public void deleteRecursiveMessage(EventModel em){
    	logger.debug("enter deleteRecursiveMessage");
        messageRepository.deleteRecursiveMessage(em);
        ForumMessage forumMessage = (ForumMessage)em.getModelIF();
        logger.debug("deleteRecursiveMessage ok!");
        refreshState(forumMessage.getForumThread());

    }
 
    
    private void refreshState(ForumThread forumThread){
    	logger.debug("enter refreshState");
        try {
            Forum forum = forumThread.getForum();
            forum.setForumState(null);
            forumThread.setForumThreadState(null);
            messageRepository.getForumBuilder().loadForumState(forum);
            messageRepository.getForumBuilder().loadThreadState(forumThread);
        } catch (Exception e) {
            logger.error("refreshState error " + e);
        }
    }
   
   
    
    /**
     * get a message Collection of the parentMessage.
     * we use TreeModel implements it .
     */
    public PageIterator getRecursiveMessages(Long messageId, int start, int count){
    	logger.debug("enter getRecursiveMessages");
       return messageRepository.getRecursiveMessages(messageId, start, count);
    }

    
    /* (non-Javadoc)
     * @see com.jdon.jivejdon.service.ForumMessageService#getMessages(java.lang.String, int, int)
     */
    public PageIterator getMessages(Long threadId, int start, int count) {
    	logger.debug("enter getMessages");
       return messageRepository.getMessages(threadId, start, count);
    }
    
    public PageIterator getThreads(QueryCriteria msc, int start, int count){
    	logger.debug("enter getMessages for QueryCriteria");
    	return messageRepository.getThreads(msc, start, count);
    }
    
   
    /* (non-Javadoc)
     * @see com.jdon.jivejdon.service.ForumMessageService#getThreads(java.lang.String, int, int)
     */
    public PageIterator getThreads(Long forumId, int start, int count) {
    	logger.debug("enter getThreads");
        return messageRepository.getThreads(forumId, start, count);
    }

    /* (non-Javadoc)
     * @see com.jdon.jivejdon.service.ForumMessageService#getThreadsPrevNext(java.lang.String, int)
     */
    public List getThreadsPrevNext(Long forumId, Long currentThreadId) {
    	logger.debug("enter getThreadsPrevNext");
       return messageRepository.getThreadsPrevNext(forumId, currentThreadId);        
    }
    
   
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -