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

📄 topicaction.java

📁 野蔷薇论坛源码 java 自己看看吧。 学习用
💻 JAVA
字号:
/* 
 * Created on 2007-3-17
 * Last modified on 2007-8-22
 * Powered by YeQiangWei.com
 */
package com.yeqiangwei.club.controller.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.yeqiangwei.club.service.ServiceLocator;
import com.yeqiangwei.club.service.ServiceWrapper;
import com.yeqiangwei.club.service.topic.TopicService;
import com.yeqiangwei.club.service.model.ContentModel;
import com.yeqiangwei.club.service.model.TopicModel;
import com.yeqiangwei.club.service.model.UserModel;
import com.yeqiangwei.club.service.user.UserLogin;
import com.yeqiangwei.club.service.user.UserSettingsService;
import com.yeqiangwei.club.util.BeanUtils;
import com.yeqiangwei.club.util.MessageUtils;
import com.yeqiangwei.club.controller.form.TopicBetterForm;
import com.yeqiangwei.club.controller.form.TopicMoveForm;
import com.yeqiangwei.club.controller.form.TopicPostForm;
import com.yeqiangwei.club.controller.form.TopicTrashForm;
import com.yeqiangwei.club.controller.form.build.TopicBetterBuild;
import com.yeqiangwei.club.controller.form.build.TopicMoveBuild;
import com.yeqiangwei.club.controller.form.build.TopicPostBuild;
import com.yeqiangwei.club.controller.form.build.TopicTrashBuild;
import com.yeqiangwei.club.exception.ClubException;
import com.yeqiangwei.club.view.util.UrlUtils;
import com.yeqiangwei.util.HttpServletUtils;
import com.yeqiangwei.util.ParamUtils;
import com.yeqiangwei.util.Validator;

public class TopicAction {
	
	private static final org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(TopicAction.class);
	
	public void createOrUpdate(HttpServletRequest request,HttpServletResponse response){
		TopicPostForm topicPostForm = new TopicPostBuild(request).building();
		if(Validator.isEmpty(topicPostForm.getTitle())||Validator.isEmpty(topicPostForm.getContent()))
		{
			request.setAttribute("message",MessageUtils.getMessage("error_empty"));
			this.errorForward(request,response,topicPostForm);
			return;
		}
		else if(topicPostForm.getTitle().length()>100||topicPostForm.getContentLength()>50000){
			request.setAttribute("message",MessageUtils.getMessage("error_toolong"));
			this.errorForward(request,response,topicPostForm);
			return;
		}
		TopicModel topicModel = null;
		ContentModel contentModel = null;
		if(topicPostForm.getTopicId()>0){ //如果是更新文章		
			topicModel = this.getTopicService().findTopicAndContentById(topicPostForm.getTopicId());
			contentModel = topicModel.getContentModel();
			/*
			 * 如果是编辑帖,则取出原作者信息设置回去!
			 */
			topicPostForm.setUserId(topicModel.getUserId());
			topicPostForm.setUserName(topicModel.getUserName());
			topicPostForm.setUserIp(topicModel.getUserIp());
			topicPostForm.setCreateDateTime(topicModel.getCreateDateTime());
		}else{ //如果是新建文章
			topicModel = new TopicModel();
			contentModel = new ContentModel();
		}
		topicModel.setSessionUserModel(UserLogin.getUserModel(request));
		BeanUtils.copyProperties(topicModel,topicPostForm);
		BeanUtils.copyProperties(contentModel,topicPostForm);
		topicModel.setContentModel(contentModel);
		topicModel.setReplyId(topicPostForm.getLastReplyId());
		/* 在线用户信息 from session */
		UserModel userModel = UserLogin.getUserModel(request);
		topicModel.setUserModel(userModel);
		try {
			this.getTopicService().createOrUpdate(topicModel);
			StringBuffer sb = new StringBuffer();
			userModel = topicModel.getUserModel();
			if(!Validator.isEmpty(userModel)){
				UserLogin.setCookies(request,response,userModel,0);
			}
			topicPostForm.setTopicId(topicModel.getTopicId());
			topicPostForm.setReplyId(topicModel.getReplyId());
			request.setAttribute("returnUrl",UrlUtils.getUrl(UrlUtils.TOPIC,topicPostForm.getTopicId(),topicModel.getForumId(),request));
			byte postForward = this.getUserSettingscService().getUserSettingsModel(userModel).getPostForward();
			switch(postForward){
				case 1://返回版面
					sb.append(UrlUtils.getUrl(UrlUtils.FORUM,topicModel.getForumId(),0,request));
					logger.debug("发表文章成功后跳转至:"+sb.toString());
					HttpServletUtils.redirect(response,sb.toString());
					break;
				case 2://返回发表的主题
					sb.append(UrlUtils.getUrl(UrlUtils.TOPIC,topicModel.getTopicId(),topicModel.getForumId(),request));
					logger.debug("发表文章成功后跳转至:"+sb.toString());
					HttpServletUtils.redirect(response,sb.toString());
					break;
				default: //返回界面让用户选择
					sb.append("/club/posted.jsp?forumId=");
					sb.append(topicModel.getForumId());
					sb.append("&topicId=");
					sb.append(topicModel.getTopicId());
					sb.append("&act=");
					sb.append(ParamUtils.getStringParameter(request,"act"));
					request.setAttribute("msg","success");
					HttpServletUtils.forward(request,response,sb.toString());
			}
		} catch (ClubException e) {
			request.setAttribute("message",e.getMessage());
			this.errorForward(request,response,topicPostForm);
		}
	}
	
	private void errorForward(HttpServletRequest request,HttpServletResponse response, TopicPostForm topicPostForm){
		request.setAttribute("TopicPostForm",topicPostForm);
		HttpServletUtils.forward(request,response,"/club/post.jsp");
	}
	
	private String forwardUrl(String act, int topicId, int forumId){
		StringBuffer sb = new StringBuffer("/club/topicAdmin.jsp?forumId=");
		sb.append(forumId);
		sb.append("&topicId=");
		sb.append(topicId);
		sb.append("&act=");
		sb.append(act);
		return sb.toString();
	}
	
	public void move(HttpServletRequest request,HttpServletResponse response){
		TopicMoveForm topicMoveForm = new TopicMoveBuild(request).building();
		request.setAttribute("TopicMoveForm",topicMoveForm);
		try {
			this.getTopicService().move(topicMoveForm);
			request.setAttribute("message",MessageUtils.getMessage("success"));
		} catch (ClubException e) {
			request.setAttribute("message",e.getMessage());
		}
		HttpServletUtils.forward(request,response,forwardUrl("movetopic",topicMoveForm.getTopicId(),topicMoveForm.getForumId()));
	}
	
	public void better(HttpServletRequest request,HttpServletResponse response){
		TopicBetterForm topicBetterForm = new TopicBetterBuild(request).building();
		try {
			this.getTopicService().updateBetter(topicBetterForm);
			request.setAttribute("message",MessageUtils.getMessage("success"));
		} catch (ClubException e) {
			request.setAttribute("message",e.getMessage());
		}
		HttpServletUtils.forward(request,response,forwardUrl("better",topicBetterForm.getTopicId(),topicBetterForm.getForumId()));
	}
	
	public void trash(HttpServletRequest request,HttpServletResponse response){
		TopicTrashForm topicTrashForm = new TopicTrashBuild(request).building();
		try {
			this.getTopicService().trash(topicTrashForm);
			request.setAttribute("message",MessageUtils.getMessage("success"));
		} catch (ClubException e) {
			request.setAttribute("message",e.getMessage());
		}
		HttpServletUtils.forward(request,response,forwardUrl("trashtopic",topicTrashForm.getTopicId(),topicTrashForm.getForumId()));
	}
	
	public void findNextOrPrevious(HttpServletRequest request,HttpServletResponse response){
		int topicId = ParamUtils.getIntParameter(request,"topicId",0);
		int forumId = ParamUtils.getIntParameter(request,"forumId",0);
		String go = ParamUtils.getStringParameter(request,"go","next");
		boolean isnext = true;
		if(!go.equalsIgnoreCase("next")){
			isnext = false;
		}
		if(topicId==0){
			request.setAttribute("message",MessageUtils.getMessage("error_notfind"));
			HttpServletUtils.forward(request,response,"/club/msg.jsp");
		}else{
			TopicModel topicModel = this.getTopicService().findNextOrPrevious(topicId,forumId,isnext);
			if(Validator.isEmpty(topicModel)){
				if(isnext){
					request.setAttribute("message","已到达本版最新一篇主题!");
				}else{
					request.setAttribute("message","前面没有内容了!");
				}
				String url = UrlUtils.getUrl(UrlUtils.TOPIC,topicId,forumId,request);
				logger.debug("referer: "+request.getHeader("referer"));
				logger.debug("url: "+url);
				HttpServletUtils.forward(request,response,"thread.jsp?forumId="+forumId+"&topicId="+topicId);
			}else{
				topicId = topicModel.getTopicId();
				forumId = topicModel.getForumId();
				String url = UrlUtils.getUrl(UrlUtils.TOPIC,topicId,forumId,request);
				logger.debug("findNextOrPrevious: "+url);
				HttpServletUtils.redirect(response,url);
			}
		}
	}

	public TopicService getTopicService() {
		return ServiceWrapper.<TopicService>getSingletonInstance(ServiceLocator.TOPIC);
	}
	
	public UserSettingsService getUserSettingscService() {
		return ServiceWrapper.<UserSettingsService>getSingletonInstance(ServiceLocator.USERSETTINGS);
	}

	public static void main(String args[]){
		TopicAction a = new TopicAction();
		a.getTopicService();
	}
}

⌨️ 快捷键说明

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