www.pudn.com > spring_struts_hibernate_messages.rar > MessageAction.java


package com.bjsxt.messages.web.actions; 
 
import java.util.List; 
 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
 
import org.apache.struts.action.ActionForm; 
import org.apache.struts.action.ActionForward; 
import org.apache.struts.action.ActionMapping; 
import org.apache.struts.action.ActionMessage; 
import org.apache.struts.action.ActionMessages; 
 
import com.bjsxt.messages.MessageException; 
import com.bjsxt.messages.managers.MessageManager; 
import com.bjsxt.messages.managers.UserManager; 
import com.bjsxt.messages.model.Message; 
import com.bjsxt.messages.model.User; 
import com.bjsxt.messages.web.forms.MessageActionForm; 
 
public class MessageAction extends BaseAction { 
 
	private UserManager userManager; 
	private MessageManager messageManager; 
	 
	public void setMessageManager(MessageManager messageManager) { 
		this.messageManager = messageManager; 
	} 
 
	public void setUserManager(UserManager userManager) { 
		this.userManager = userManager; 
	} 
 
	//读取消息 
	public ActionForward readMsg(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 
		 
		MessageActionForm maf = (MessageActionForm)form; 
		Message msg = messageManager.readMessage(maf.getId()); 
		request.setAttribute("msg",msg); 
		return mapping.findForward("detail"); 
	} 
	 
	/** 
	 * 查找所有接受的消息 
	 * @param mapping 
	 * @param form 
	 * @param request 
	 * @param response 
	 * @return 
	 * @throws Exception 
	 */ 
	public ActionForward inbox(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 
		 
		List msgs = messageManager.findAllReceiveMessages(currentUser(request).getId()); 
		request.setAttribute("msgs",msgs); 
		 
		request.getSession().setAttribute("current", "inbox"); 
		 
		return mapping.findForward("inbox"); 
	} 
 
	//发件箱 
	public ActionForward outbox(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 
 
		List msgs = messageManager.findAllSendMessages(currentUser(request).getId()); 
		request.setAttribute("msgs",msgs); 
		 
		request.getSession().setAttribute("current", "outbox"); 
		 
		return mapping.findForward("outbox"); 
	} 
	 
	//废件箱 
	public ActionForward trash(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 
 
		List msgs = messageManager.findAllDeletedMessages((currentUser(request).getId())); 
		request.setAttribute("msgs",msgs); 
		 
		request.getSession().setAttribute("current", "trash"); 
		 
		return mapping.findForward("trash"); 
	} 
	 
	//恢复删除的内容 
	public ActionForward restore(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 
		MessageActionForm maf = (MessageActionForm)form; 
		 
		messageManager.restoreMessage(maf.getId()); 
		 
		return mapping.findForward("restore_success"); 
	} 
	 
	public ActionForward clear(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 
		 
		messageManager.clearDeletedMessages(currentUser(request).getId()); 
		 
		return mapping.findForward("restore_success"); 
	} 
	 
	//聊天记录 
	public ActionForward record(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 
 
		request.getSession().setAttribute("current", "record"); 
		 
		MessageActionForm maf = (MessageActionForm)form; 
		 
		int theotherId = maf.getTheotherId(); 
		 
		if(theotherId == 0){ 
			 
			List users = userManager.findAll(currentUser(request).getId()); 
			 
			request.setAttribute("users", users); 
			 
			//返回查询界面 
			return mapping.findForward("record_input"); 
		} 
 
		User user = userManager.findUserById(theotherId); 
		request.setAttribute("user", user); 
		 
		List msgs = messageManager.findAllRecordMessages(currentUser(request).getId(),theotherId); 
		request.setAttribute("msgs",msgs); 
		 
		 
		 
		return mapping.findForward("record"); 
	} 
	 
	//转向录入消息的页面 
	public ActionForward inputMsg(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 
		 
		List users = userManager.findAll(currentUser(request).getId()); 
		 
		request.setAttribute("users", users); 
		 
		return mapping.getInputForward(); 
	} 
	 
	 
	/** 
	 * 发送消息 
	 * @param mapping 
	 * @param form 
	 * @param request 
	 * @param response 
	 * @return 
	 * @throws Exception 
	 */ 
	public ActionForward sendMsg(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 
		 
		MessageActionForm maf = (MessageActionForm)form; 
		 
		try { 
			//MessageManager.newInstance().sendMessage(maf.getSenderId(),maf.getReceiverId(),maf.getTitle(),maf.getContent()); 
			messageManager.sendMessage(maf.getSenderId(),maf.getIds(),maf.getTitle(),maf.getContent()); 
		} catch (MessageException e) { 
//			e.printStackTrace(); 
			 
			//异常处理 
			ActionMessages messages = new ActionMessages(); 
			messages.add("error",new ActionMessage(e.getCode())); 
			 
			this.saveErrors(request,messages); 
			 
			return mapping.getInputForward(); 
		} 
		 
		//转到发件箱 
		return outbox(mapping,form,request,response); 
	} 
	 
	//删除消息 
	public ActionForward delete(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 
		 
		MessageActionForm maf = (MessageActionForm)form; 
		 
		messageManager.deleteMessage(maf.getId()); 
		 
		if("inbox".equals(maf.getLoc())){ 
			return mapping.findForward("inbox_delete_success"); 
		}else if("outbox".equals(maf.getLoc())){ 
			return mapping.findForward("outbox_delete_success"); 
		} 
		 
		return mapping.findForward("main"); 
	} 
}