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

📄 messagerepository.java

📁 用Hibernate开发的JiveJdon
💻 JAVA
字号:
/*
 * Copyright 2003-2006 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.repository;

import org.apache.log4j.Logger;

import com.jdon.controller.events.EventModel;
import com.jdon.jivejdon.Constants;
import com.jdon.jivejdon.dao.MessageDaoFacade;
import com.jdon.jivejdon.manager.filter.OutFilterManager;
import com.jdon.jivejdon.model.Forum;
import com.jdon.jivejdon.model.ForumMessage;
import com.jdon.jivejdon.model.ForumMessageReply;
import com.jdon.jivejdon.model.ForumThread;
import com.jdon.jivejdon.util.ToolsUtil;

/**
 * Kernel of Message business operations
 * 
 * @author banq(http://www.jdon.com)
 *
 */
public class MessageRepository  extends ThreadRepository{
    private final static Logger logger = Logger.getLogger(MessageRepository.class);
    
    protected MessageDaoFacade messageDaoFacade;
    protected ForumBuilder forumBuilder;
    protected OutFilterManager outFilterManager;
    
    public MessageRepository(MessageDaoFacade messageDaoFacade,
            ForumBuilder forumBuilder,OutFilterManager outFilterManager){
    	super(messageDaoFacade, forumBuilder);
        this.messageDaoFacade = messageDaoFacade;
        this.forumBuilder = forumBuilder;
        this.outFilterManager = outFilterManager;
    }
    
    /**
     * get the full forum in forumMessage, and return it.
     */
    public ForumMessage initMessage(EventModel em) {
        logger.debug(" enter service: initMessage ");
        ForumMessage forumMessage = (ForumMessage) em.getModelIF();
        try {
            if (forumMessage.getForum() == null) {
                logger.error(" no Forum in this ForumMessage");
                return forumMessage;
            }
            Long forumId = forumMessage.getForum().getForumId();
            logger.debug(" paremter forumId =" + forumId);
            Forum forum = forumBuilder.getForum(forumId);
            forumMessage.setForum(forum);
        } catch (Exception e) {
            logger.error(e);
        }
        return forumMessage;
    }
    
    public ForumMessage initReplyMessage(EventModel em) {
        logger.debug(" enter service: initReplyMessage ");
        ForumMessageReply forumMessageReply = (ForumMessageReply)initMessage(em);
        try {
            Long pmessageId= forumMessageReply.getParentMessage().getMessageId();
            if (pmessageId == null){
                logger.error(" no the parentMessage.messageId parameter");
                return null;
            }
            ForumMessage pMessage = forumBuilder.getMessage(pmessageId);
            //初始化回复页面的subject和body
            String subject = pMessage.getSubject().replace("回复:","");
            forumMessageReply.setSubject("回复:" + subject);
            String quote = "[quote="+pMessage.getAccount().getUsername()+"]"+pMessage.getBody()+"[/quote]";
            forumMessageReply.setBody(quote);
            
            //初始化回复页面的原始信息
            outFilterManager.applyFilters(pMessage);
            forumMessageReply.setParentMessage(pMessage);
        } catch (Exception e) {
            logger.error(e);
        }
        return forumMessageReply;
    }    
  
    public ForumMessage getMessage(Long messageId) {
       return forumBuilder.getMessage(messageId);
    }
    
    
    /*
     * create the topic message
     */
    public void createTopicMessage(EventModel em) throws Exception {
    	
        logger.debug(" enter service: createMessage ");
        ForumMessage forumMessage = (ForumMessage)em.getModelIF();
        long dateTime = System.currentTimeMillis();
        forumMessage.setCreationDate(ToolsUtil.getDateTimeDisp(Long.toString(dateTime)));
        forumMessage.setModifiedDate(Long.toString(dateTime));
        forumMessage.setRoot(true);
        Forum forum = forumBuilder.getForum(forumMessage.getForum().getForumId());
        if (forum == null){
            logger.error(" no this forum, forumId = " + forumMessage.getForum().getForumId());
            em.setErrors(Constants.ERRORS);
            return;            
        }
        forumMessage.setForum(forum);       
        try {
            ForumThread forumThread = super.createThread(forumMessage);
            forumMessage.setForumThread(forumThread);
            messageDaoFacade.getMessageDao().createMessage(forumMessage);
        } catch (Exception e) {
            logger.error(e);
            throw new Exception(e);
        }
    }
    
    
    /**
     * 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) throws Exception {    
        ForumMessage forumReplyMessage = (ForumMessage)em.getModelIF();
        logger.debug(" enter service: createReplyMessage ...." );
        ForumMessageReply forumMessage = (ForumMessageReply)forumReplyMessage;
        if ((forumMessage.getParentMessage() == null) || (forumMessage.getParentMessage().getMessageId() == null)){
            logger.error("parentMessage is null, this is not reply message!");
            em.setErrors(Constants.ERRORS);
            return;
        }
        //verify the parentMessageId existed.
        ForumMessage pforumMessage = messageDaoFacade.getMessageDao().getMessage(forumMessage.getParentMessage().getMessageId());
        if (pforumMessage == null){
            logger.error("not this parent Message: " + forumMessage.getParentMessage().getMessageId());
            em.setErrors(Constants.ERRORS);
            return;                
        }
        try {
            forumMessage.setForum(pforumMessage.getForum());
            forumMessage.setForumThread(pforumMessage.getForumThread());
            
            //update thread
            long dateTime = System.currentTimeMillis();
            forumMessage.setCreationDate(ToolsUtil.getDateTimeDisp(Long.toString(dateTime)));
            forumMessage.getForumThread().setModifiedDate(Long.toString(dateTime));
            forumMessage.setModifiedDate(Long.toString(dateTime));
            super.updateThread(forumMessage.getForumThread());
                  
            //create
            messageDaoFacade.getMessageDao().createMessageReply(forumMessage);
        } catch (Exception e) {
            logger.error(e);
            throw new Exception(e);
        }
    }
  
    
    /* 
     * 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) throws Exception {
        ForumMessage modForumMessage = (ForumMessage)em.getModelIF();
        logger.debug(" enter updateMessage id =" + modForumMessage.getMessageId());
        ForumMessage forumMessage = getMessage(modForumMessage.getMessageId());
        if (forumMessage == null) return;  
        
        try {            
        	//merge
            forumMessage.setBody(modForumMessage.getBody());
            forumMessage.setSubject(modForumMessage.getSubject());   
            forumMessage.setHtmlEnable(modForumMessage.isHtmlEnable());
            forumMessage.setUploadFiles(modForumMessage.getUploadFiles());
            
            messageDaoFacade.getMessageDao().updateMessage(forumMessage);
            
            if(forumMessage.isRoot()) {
            	forumMessage.getForumThread().setName(modForumMessage.getSubject());
            	super.updateThread(forumMessage.getForumThread());
            }
        } catch (Exception e) {
            logger.error(e);
            throw new Exception(e);
        }
        em.setModelIF(forumMessage);
    }
    
    public void deleteMessage(ForumMessage delforumMessage) throws Exception {
		try {			
			if (delforumMessage.isRoot()) {
				logger.debug("1. it is a root message, delete the forumThread");
				ForumThread forumThread = delforumMessage.getForumThread();
				super.deleteThread(forumThread);
			}else {
				messageDaoFacade.getMessageDao().deleteMessage(delforumMessage);
			}
		} catch (Exception e) {
			logger.error(e);
			throw new Exception(e);
		}
	}
    
  
    /**
     * @return Returns the forumBuilder.
     */
    public ForumBuilder getForumBuilder() {
        return forumBuilder;
    }
    /**
     * @return Returns the messageDaoFacade.
     */
    public MessageDaoFacade getMessageDaoFacade() {
        return messageDaoFacade;
    }
}

⌨️ 快捷键说明

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